From: Mario Date: Wed, 5 Apr 2017 00:46:16 +0000 (+1000) Subject: Merge branch 'master' into Mario/monsters X-Git-Tag: xonotic-v0.8.5~7^2~1^2~91 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=4852492fd0c38c70a2e87032969f226d168609de;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into Mario/monsters # Conflicts: # qcsrc/common/monsters/monster/shambler.qc # qcsrc/common/notifications/all.inc --- 4852492fd0c38c70a2e87032969f226d168609de diff --cc models/monsters/dragon.dpm index 0000000000,0000000000..bbab196d4f new file mode 100644 Binary files differ diff --cc models/monsters/dragon.dpm.framegroups index 0000000000,0000000000..016c89eaa8 new file mode 100644 --- /dev/null +++ b/models/monsters/dragon.dpm.framegroups @@@ -1,0 -1,0 +1,14 @@@ ++/* ++Generated framegroups file for Dragon ++Used by DarkPlaces to simulate frame groups in DPM models. ++*/ ++ ++1 101 30 1 // dragon idle ++102 101 30 1 // dragon glide ++203 101 30 1 // dragon fly ++304 26 30 0 // dragon pain1 ++330 26 30 0 // dragon pain2 ++356 51 30 0 // dragon melee ++407 51 30 0 // dragon fireball ++458 101 30 1 // dragon dying ++559 26 30 0 // dragon dead diff --cc models/monsters/golem.dpm index 0000000000,0000000000..ed0dd8e448 new file mode 100644 Binary files differ diff --cc models/monsters/golem.dpm.framegroups index 0000000000,0000000000..b5cdca3d5c new file mode 100644 --- /dev/null +++ b/models/monsters/golem.dpm.framegroups @@@ -1,0 -1,0 +1,29 @@@ ++/* ++Generated framegroups file for golem ++Used by DarkPlaces to simulate frame groups in DPM models. ++*/ ++ ++1 21 5 1 // golem idle ++22 61 30 1 // golem run ++83 21 30 1 // golem runangry ++104 36 30 0 // golem melee01 ++140 36 30 0 // golem melee02 ++176 61 30 0 // golem melee03 ++237 61 30 0 // golem melee04 ++298 21 30 0 // golem hit01 ++319 21 30 0 // golem hit02 ++340 21 30 0 // golem hit03 ++361 21 30 0 // golem hit04 ++382 61 30 0 // golem hithard ++443 101 30 0 // golem enrage ++544 61 30 0 // golem death01 ++605 2 30 0 // golem dead01 ++607 36 30 0 // golem death02 ++643 2 30 0 // golem dead01 ++645 46 30 0 // golem deathback ++691 2 30 0 // golem deadback ++693 2 30 0 // golem dead01 ++695 2 30 0 // golem dead01 ++697 2 30 0 // golem dead01 ++699 2 30 0 // golem dead01 ++701 2 30 0 // golem dead01 diff --cc models/monsters/mage.dpm index 2e50fb5ca6,2e50fb5ca6..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc models/monsters/mage.dpm.framegroups index 4a72c65c14,4a72c65c14..0000000000 deleted file mode 100644,100644 --- a/models/monsters/mage.dpm.framegroups +++ /dev/null @@@ -1,11 -1,11 +1,0 @@@ --/* --Generated framegroups file for mage --Used by DarkPlaces to simulate frame groups in DPM models. --*/ -- --1 31 30 1 // mage idle --32 31 30 1 // mage walk --63 16 30 1 // mage attack --79 16 30 1 // mage hit --95 31 30 0 // mage die --126 31 60 1 // mage walk diff --cc models/monsters/nanomage.dpm index 0000000000,0000000000..224704a923 new file mode 100644 Binary files differ diff --cc models/monsters/nanomage.dpm.framegroups index 0000000000,0000000000..9042da11a6 new file mode 100644 --- /dev/null +++ b/models/monsters/nanomage.dpm.framegroups @@@ -1,0 -1,0 +1,18 @@@ ++/* ++Generated framegroups file for nanomage ++Used by DarkPlaces to simulate frame groups in DPM models. ++*/ ++ ++1 61 12 1 // nanomage idle ++62 9 10 1 // nanomage run ++71 71 30 0 // nanomage attack01 ++142 43 30 0 // nanomage attack02 ++185 61 30 0 // nanomage attack03 ++246 101 30 0 // nanomage attack04 ++347 11 30 0 // nanomage pain01 ++358 16 30 0 // nanomage pain02 ++374 31 30 0 // nanomage pain03 ++405 86 30 0 // nanomage death01 ++491 56 30 0 // nanomage death02 ++547 2 1 0 // nanomage dead01 ++549 2 1 0 // nanomage dead02 diff --cc models/monsters/shambler.mdl index 2e23dfa90b,2e23dfa90b..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc models/monsters/shambler.mdl.framegroups index b003d568d2,b003d568d2..0000000000 deleted file mode 100644,100644 --- a/models/monsters/shambler.mdl.framegroups +++ /dev/null @@@ -1,1 -1,1 +1,0 @@@ --1 16 10 1 // shambler stand 18 11 10 1 // shambler walk 31 5 10 1 // shambler run 37 11 10 1 // shambler smash 49 8 10 1 // shambler swing right 58 8 10 1 // shambler swing left 67 11 10 1 // shambler magic 79 5 10 0 // shambler pain 85 10 10 0 // shambler death diff --cc models/monsters/shambler.mdl_0.sounds index 7e16968e21,7e16968e21..0000000000 deleted file mode 100644,100644 --- a/models/monsters/shambler.mdl_0.sounds +++ /dev/null @@@ -1,8 -1,8 +1,0 @@@ --//TAG: shambler --//death sound/monsters/shambler/death 0 --sight sound/monsters/shambler/sight 0 --//ranged sound/monsters/shambler/ranged 0 --//melee sound/monsters/shambler/melee 0 --//pain sound/monsters/shambler/pain 0 --//spawn sound/monsters/shambler/spawn 0 --idle sound/monsters/shambler/idle 2 diff --cc models/monsters/spider.dpm index d0bc9ce5f2,d0bc9ce5f2..b1e8d11e51 Binary files differ diff --cc models/monsters/spider.dpm.framegroups index 039a7c3caf,039a7c3caf..73d92e01fc --- a/models/monsters/spider.dpm.framegroups +++ b/models/monsters/spider.dpm.framegroups @@@ -3,7 -3,7 +3,21 @@@ Generated framegroups file for spide Used by DarkPlaces to simulate frame groups in DPM models. */ --1 60 60 1 // spider idle --61 41 120 1 // spider walk --102 24 60 1 // spider attack --125 10 60 1 // spider attack2 ++1 51 30 0 // spider spiderbite ++52 51 30 0 // spider spiderdeath01 ++103 51 30 0 // spider spiderdeath02 ++154 11 30 0 // spider spiderfire01 ++165 31 30 0 // spider spiderfire02 ++196 51 5 1 // spider spideridle ++247 51 30 0 // spider spiderintimidate ++298 11 25 0 // spider spiderpain01 ++309 11 25 0 // spider spiderpain02 ++320 11 15 0 // spider spiderpain03 ++331 101 30 1 // spider spiderwalkforward ++432 101 30 1 // spider spiderwalkforwardright ++533 101 30 1 // spider spiderwalkright ++634 101 30 1 // spider spiderwalkbackright ++735 101 30 1 // spider spiderwalkback ++836 101 30 1 // spider spiderwalkbackleft ++937 101 30 1 // spider spiderwalkleft ++1038 101 30 1 // spider spiderwalkforwardleft diff --cc models/monsters/troll.dpm index 0000000000,0000000000..53bd7ac320 new file mode 100644 Binary files differ diff --cc models/monsters/troll.dpm.framegroups index 0000000000,0000000000..90b58199a7 new file mode 100644 --- /dev/null +++ b/models/monsters/troll.dpm.framegroups @@@ -1,0 -1,0 +1,11 @@@ ++/* ++Generated framegroups file for troll ++Used by DarkPlaces to simulate frame groups in DPM models. ++*/ ++ ++1 38 30 1 // troll attack ++39 63 30 1 // troll melee_hold ++102 51 30 1 // troll walk ++153 45 30 0 // troll death ++198 2 30 0 // troll dead ++102 51 60 1 // troll run diff --cc models/monsters/troll.dpm_0.sounds index 0000000000,0000000000..57492165ee new file mode 100644 --- /dev/null +++ b/models/monsters/troll.dpm_0.sounds @@@ -1,0 -1,0 +1,8 @@@ ++//TAG: troll ++death sound/monsters/troll/death 0 ++sight sound/monsters/troll/sight 0 ++//ranged sound/monsters/troll/ranged 0 ++melee sound/monsters/troll/melee 0 ++pain sound/monsters/troll/pain 2 ++//spawn sound/monsters/troll/spawn 0 ++idle sound/monsters/troll/idle 2 diff --cc models/monsters/wizard.mdl index b130ba0318,b130ba0318..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc models/monsters/wizard.mdl.framegroups index c51109aacd,c51109aacd..0000000000 deleted file mode 100644,100644 --- a/models/monsters/wizard.mdl.framegroups +++ /dev/null @@@ -1,1 -1,1 +1,0 @@@ --1 14 10 1 // wizard hover 16 13 10 1 // wizard fly 30 12 10 1 // wizard magic attack 43 3 10 0 // wizard pain 47 7 10 0 // wizard death diff --cc qcsrc/common/monsters/monster/golem.qc index 2edbb42424,0000000000..9a420aa244 mode 100644,000000..100644 --- a/qcsrc/common/monsters/monster/golem.qc +++ b/qcsrc/common/monsters/monster/golem.qc @@@ -1,291 -1,0 +1,290 @@@ +#include "golem.qh" + +#ifdef SVQC +float autocvar_g_monster_golem_health; +float autocvar_g_monster_golem_damageforcescale = 0.1; +float autocvar_g_monster_golem_attack_smash_damage; +float autocvar_g_monster_golem_attack_smash_range; +float autocvar_g_monster_golem_attack_claw_damage; +float autocvar_g_monster_golem_attack_lightning_damage; +float autocvar_g_monster_golem_attack_lightning_damage_zap = 15; +float autocvar_g_monster_golem_attack_lightning_force; +float autocvar_g_monster_golem_attack_lightning_radius; +float autocvar_g_monster_golem_attack_lightning_radius_zap; +float autocvar_g_monster_golem_attack_lightning_speed; +float autocvar_g_monster_golem_attack_lightning_speed_up; +float autocvar_g_monster_golem_speed_stop; +float autocvar_g_monster_golem_speed_run; +float autocvar_g_monster_golem_speed_walk; + +/* +const float golem_anim_stand = 0; +const float golem_anim_walk = 1; +const float golem_anim_run = 2; +const float golem_anim_smash = 3; +const float golem_anim_swingr = 4; +const float golem_anim_swingl = 5; +const float golem_anim_magic = 6; +const float golem_anim_pain = 7; +const float golem_anim_death = 8; +*/ + +.float golem_lastattack; // delay attacks separately + +void M_Golem_Attack_Smash(entity this) +{ + makevectors(this.angles); + Send_Effect(EFFECT_EXPLOSION_MEDIUM, (this.origin + (v_forward * 150)) - ('0 0 1' * this.maxs.z), '0 0 0', 1); + sound(this, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM); + + // RadiusDamage does NOT support custom starting location, which means we must use this hack... + + tracebox(this.origin + v_forward * 50, this.mins * 0.5, this.maxs * 0.5, this.origin + v_forward * autocvar_g_monster_golem_attack_smash_range, MOVE_NORMAL, this); + + if(trace_ent.takedamage) + Damage(trace_ent, this, this, (autocvar_g_monster_golem_attack_smash_damage) * MONSTER_SKILLMOD(this), DEATH_MONSTER_GOLEM_SMASH.m_id, trace_ent.origin, normalize(trace_ent.origin - this.origin)); +} + +void M_Golem_Attack_Swing(entity this) +{ + Monster_Attack_Melee(this, this.enemy, (autocvar_g_monster_golem_attack_claw_damage), ((random() >= 0.5) ? this.anim_melee2 : this.anim_melee3), this.attack_range, 0.8, DEATH_MONSTER_GOLEM_CLAW.m_id, true); +} + +#include + +void M_Golem_Attack_Lightning_Explode(entity this, entity directhitentity) +{ + sound(this, CH_SHOTS, SND_ELECTRO_IMPACT, VOL_BASE, ATTEN_NORM); + Send_Effect(EFFECT_ELECTRO_IMPACT, this.origin, '0 0 0', 1); + + this.event_damage = func_null; + this.takedamage = DAMAGE_NO; + set_movetype(this, MOVETYPE_NONE); + this.velocity = '0 0 0'; + + if(this.move_movetype == MOVETYPE_NONE) + this.velocity = this.oldvelocity; + + RadiusDamage (this, this.realowner, (autocvar_g_monster_golem_attack_lightning_damage), (autocvar_g_monster_golem_attack_lightning_damage), (autocvar_g_monster_golem_attack_lightning_radius), + NULL, NULL, (autocvar_g_monster_golem_attack_lightning_force), this.projectiledeathtype, directhitentity); + + FOREACH_ENTITY_RADIUS(this.origin, autocvar_g_monster_golem_attack_lightning_radius_zap, it != this.realowner && it.takedamage, + { + te_csqc_lightningarc(this.origin, it.origin); + Damage(it, this, this.realowner, (autocvar_g_monster_golem_attack_lightning_damage_zap) * MONSTER_SKILLMOD(this), DEATH_MONSTER_GOLEM_ZAP.m_id, it.origin, '0 0 0'); + }); + + setthink(this, SUB_Remove); + this.nextthink = time + 0.2; +} + +void M_Golem_Attack_Lightning_Explode_use(entity this, entity actor, entity trigger) +{ + M_Golem_Attack_Lightning_Explode(this, trigger); +} + +void M_Golem_Attack_Lightning_Damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) +{ + if (this.health <= 0) + return; + + if (!W_CheckProjectileDamage(inflictor.realowner, this.realowner, deathtype, -1)) // no exceptions + return; // g_projectiles_damage says to halt + + this.health = this.health - damage; + + if (this.health <= 0) + W_PrepareExplosionByDamage(this, attacker, adaptor_think2use); +} + +void M_Golem_Attack_Lightning_Touch(entity this, entity toucher) +{ + PROJECTILE_TOUCH(this, toucher); + + this.use(this, NULL, toucher); +} + +void M_Golem_Attack_Lightning_Think(entity this) +{ + this.nextthink = time; + if (time > this.cnt) + { + M_Golem_Attack_Lightning_Explode(this, NULL); + return; + } +} + +void M_Golem_Attack_Lightning(entity this) +{ + entity gren; + + monster_makevectors(this, this.enemy); + + gren = new(grenade); + gren.owner = gren.realowner = this; + gren.bot_dodge = true; + gren.bot_dodgerating = (autocvar_g_monster_golem_attack_lightning_damage); + set_movetype(gren, MOVETYPE_BOUNCE); + PROJECTILE_MAKETRIGGER(gren); + gren.projectiledeathtype = DEATH_MONSTER_GOLEM_ZAP.m_id; + setorigin(gren, CENTER_OR_VIEWOFS(this)); + setsize(gren, '-8 -8 -8', '8 8 8'); + gren.scale = 2.5; + + gren.cnt = time + 5; + gren.nextthink = time; + setthink(gren, M_Golem_Attack_Lightning_Think); + gren.use = M_Golem_Attack_Lightning_Explode_use; + settouch(gren, M_Golem_Attack_Lightning_Touch); + + gren.takedamage = DAMAGE_YES; + gren.health = 50; + gren.damageforcescale = 0; + gren.event_damage = M_Golem_Attack_Lightning_Damage; + gren.damagedbycontents = true; + IL_PUSH(g_damagedbycontents, gren); + gren.missile_flags = MIF_SPLASH | MIF_ARC; + W_SetupProjVelocity_Explicit(gren, v_forward, v_up, (autocvar_g_monster_golem_attack_lightning_speed), (autocvar_g_monster_golem_attack_lightning_speed_up), 0, 0, false); + + gren.angles = vectoangles (gren.velocity); + gren.flags = FL_PROJECTILE; + IL_PUSH(g_projectiles, gren); + IL_PUSH(g_bot_dodge, gren); + + CSQCProjectile(gren, true, PROJECTILE_GOLEM_LIGHTNING, true); +} + +.int state; + +bool M_Golem_Attack(int attack_type, entity actor, entity targ, .entity weaponentity) +{ + switch(attack_type) + { + case MONSTER_ATTACK_MELEE: + { + int swing_cnt = bound(1, floor(random() * 4), 3); + Monster_Delay(actor, swing_cnt, 0.5, M_Golem_Attack_Swing); + actor.anim_finished = actor.attack_finished_single[0] = time + (0.5 * swing_cnt); // set this for the delay + return true; + } + case MONSTER_ATTACK_RANGED: + { + float randomness = random(); + + if(time >= actor.golem_lastattack) // golem doesn't attack much + if(IS_ONGROUND(actor)) + if(randomness <= 0.5 && vdist(actor.enemy.origin - actor.origin, <=, autocvar_g_monster_golem_attack_smash_range)) + { + setanim(actor, actor.anim_melee2, true, true, false); + Monster_Delay(actor, 1, 0.7, M_Golem_Attack_Smash); + actor.attack_finished_single[0] = time + 1.1; + actor.anim_finished = time + 1.1; + actor.state = MONSTER_ATTACK_MELEE; // kinda a melee attack + actor.golem_lastattack = time + 3 + random() * 1.5; + return true; + } + else if(randomness <= 0.1 && vdist(actor.enemy.origin - actor.origin, >=, autocvar_g_monster_golem_attack_smash_range * 1.5)) // small chance, don't want this spammed + { + setanim(actor, actor.anim_shoot, true, true, false); + actor.state = MONSTER_ATTACK_MELEE; // maybe we should rename this to something more general + actor.attack_finished_single[0] = time + 1.1; + actor.anim_finished = 1.1; + actor.golem_lastattack = time + 3 + random() * 1.5; + Monster_Delay(actor, 1, 0.6, M_Golem_Attack_Lightning); + return true; + } + + return false; + } + } + + return false; +} + +spawnfunc(monster_golem) { Monster_Spawn(this, true, MON_GOLEM.monsterid); } +// compatibility +spawnfunc(monster_shambler) { spawnfunc_monster_golem(this); } +#endif // SVQC + +#ifdef SVQC +METHOD(Golem, mr_think, bool(Golem this, entity actor)) +{ + TC(Golem, this); + return true; +} + +METHOD(Golem, mr_pain, float(Golem this, entity actor, float damage_take, entity attacker, float deathtype)) +{ + TC(Golem, this); + actor.pain_finished = time + 0.5; + setanim(actor, actor.anim_pain1, true, true, false); + return damage_take; +} + +METHOD(Golem, mr_death, bool(Golem this, entity actor)) +{ + TC(Golem, this); + setanim(actor, actor.anim_die1, false, true, true); + return true; +} +#endif +#ifdef GAMEQC +METHOD(Golem, mr_anim, bool(Golem this, entity actor)) +{ + TC(Golem, this); + vector none = '0 0 0'; + actor.anim_idle = animfixfps(actor, '0 1 1', none); + actor.anim_walk = animfixfps(actor, '1 1 1', none); + actor.anim_run = animfixfps(actor, '2 1 1', none); + actor.anim_melee1 = animfixfps(actor, '3 1 5', none); // analyze models and set framerate + actor.anim_melee2 = animfixfps(actor, '4 1 5', none); // analyze models and set framerate + actor.anim_melee3 = animfixfps(actor, '5 1 5', none); // analyze models and set framerate + //actor.anim_melee4 = animfixfps(actor, '6 1 5', none); // analyze models and set framerate + actor.anim_pain1 = animfixfps(actor, '7 1 2', none); // 0.5 seconds + actor.anim_pain2 = animfixfps(actor, '8 1 2', none); // 0.5 seconds + //actor.anim_pain3 = animfixfps(actor, '9 1 2', none); // 0.5 seconds + //actor.anim_pain4 = animfixfps(actor, '10 1 2', none); // 0.5 seconds + //actor.anim_pain5 = animfixfps(actor, '11 1 2', none); // 0.5 seconds + //actor.anim_sight = animfixfps(actor, '12 1 5', none); // analyze models and set framerate + actor.anim_die1 = animfixfps(actor, '13 1 0.5', none); // 2 seconds + actor.anim_die2 = animfixfps(actor, '14 1 0.5', none); // 2 seconds + //actor.anim_dead = animfixfps(actor, '15 1 0.5', none); // 2 seconds + //actor.anim_dieback = animfixfps(actor, '16 1 0.5', none); // 2 seconds + //actor.anim_deadback = animfixfps(actor, '17 1 0.5', none); // 2 seconds + //actor.anim_dead2 = animfixfps(actor, '18 1 0.5', none); // 2 seconds + //actor.anim_dead3 = animfixfps(actor, '19 1 0.5', none); // 2 seconds + //actor.anim_dead4 = animfixfps(actor, '20 1 0.5', none); // 2 seconds + //actor.anim_dead5 = animfixfps(actor, '21 1 0.5', none); // 2 seconds + //actor.anim_dead6 = animfixfps(actor, '22 1 0.5', none); // 2 seconds + return true; +} +#endif +#ifdef SVQC - spawnfunc(item_health_mega); +.float animstate_endtime; +METHOD(Golem, mr_setup, bool(Golem this, entity actor)) +{ + TC(Golem, this); + if(!actor.health) actor.health = (autocvar_g_monster_golem_health); + if(!actor.attack_range) actor.attack_range = 150; + if(!actor.speed) { actor.speed = (autocvar_g_monster_golem_speed_walk); } + if(!actor.speed2) { actor.speed2 = (autocvar_g_monster_golem_speed_run); } + if(!actor.stopspeed) { actor.stopspeed = (autocvar_g_monster_golem_speed_stop); } + if(!actor.damageforcescale) { actor.damageforcescale = (autocvar_g_monster_golem_damageforcescale); } + - actor.monster_loot = spawnfunc_item_health_mega; ++ actor.monster_loot = ITEM_HealthMega; + actor.weapon = WEP_ELECTRO.m_id; // matches attacks better than WEP_VORTEX + + setanim(actor, actor.anim_shoot, false, true, true); + actor.spawn_time = actor.animstate_endtime; + actor.spawnshieldtime = actor.spawn_time; + actor.monster_attackfunc = M_Golem_Attack; + + return true; +} + +METHOD(Golem, mr_precache, bool(Golem this)) +{ + TC(Golem, this); + return true; +} +#endif diff --cc qcsrc/common/monsters/monster/troll.qc index 17556fe7bd,0000000000..aca12a9533 mode 100644,000000..100644 --- a/qcsrc/common/monsters/monster/troll.qc +++ b/qcsrc/common/monsters/monster/troll.qc @@@ -1,122 -1,0 +1,121 @@@ +// TODO +#ifndef IMPLEMENTATION + +#include "troll.qh" + +#ifdef SVQC +float autocvar_g_monster_troll_health = 900; +float autocvar_g_monster_troll_damageforcescale = 0.1; +float autocvar_g_monster_troll_attack_claw_damage = 90; +float autocvar_g_monster_troll_speed_stop = 300; +float autocvar_g_monster_troll_speed_run = 300; +float autocvar_g_monster_troll_speed_walk = 190; + +/* +const float troll_anim_attack = 0; +const float troll_anim_idle = 1; +const float troll_anim_walk = 2; +const float troll_anim_death = 3; +const float troll_anim_dead = 4; +const float troll_anim_run = 5; +*/ + +void M_Troll_Attack_Swing(entity this) +{ + Monster_Attack_Melee(this, this.enemy, (autocvar_g_monster_troll_attack_claw_damage), this.anim_melee1, this.attack_range, 0.5, DEATH_MONSTER_TROLL_MELEE.m_id, true); +} + +bool M_Troll_Attack(int attack_type, entity actor, entity targ, .entity weaponentity) +{ + switch(attack_type) + { + case MONSTER_ATTACK_MELEE: + { + actor.state = MONSTER_ATTACK_MELEE; // freeze monster + setanim(actor, actor.anim_melee1, false, true, true); + Monster_Delay(actor, 1, 0.6, M_Troll_Attack_Swing); + actor.anim_finished = actor.attack_finished_single[0] = time + 0.6; // set this for the delay + return true; + } + case MONSTER_ATTACK_RANGED: + { + // troll has no ranged attack + return false; + } + } + + return false; +} + +spawnfunc(monster_troll) { Monster_Spawn(this, true, MON_TROLL.monsterid); } +#endif // SVQC + +#ifdef SVQC +METHOD(Troll, mr_think, bool(Troll this, entity actor)) +{ + TC(Troll, this); + return true; +} + +METHOD(Troll, mr_pain, float(Troll this, entity actor, float damage_take, entity attacker, float deathtype)) +{ + TC(Troll, this); + actor.pain_finished = time + 0.5; + // no pain animation yet + //setanim(actor, actor.anim_pain1, true, true, false); + return damage_take; +} + +METHOD(Troll, mr_death, bool(Troll this, entity actor)) +{ + TC(Troll, this); + setanim(actor, actor.anim_die1, false, true, true); + return true; +} +#endif +#ifdef GAMEQC +METHOD(Troll, mr_anim, bool(Troll this, entity actor)) +{ + TC(Troll, this); + vector none = '0 0 0'; + actor.anim_die1 = animfixfps(actor, '3 1 1', none); // 2 seconds + actor.anim_walk = animfixfps(actor, '2 1 1', none); + actor.anim_idle = animfixfps(actor, '1 1 1', none); + actor.anim_melee1 = animfixfps(actor, '0 1 1', none); // analyze models and set framerate + actor.anim_run = animfixfps(actor, '5 1 1', none); + return true; +} +#endif +#ifdef SVQC - spawnfunc(item_armor_big); +.float animstate_endtime; +METHOD(Troll, mr_setup, bool(Troll this, entity actor)) +{ + TC(Troll, this); + if(!actor.health) actor.health = (autocvar_g_monster_troll_health); + if(!actor.attack_range) actor.attack_range = 150; + if(!actor.speed) { actor.speed = (autocvar_g_monster_troll_speed_walk); } + if(!actor.speed2) { actor.speed2 = (autocvar_g_monster_troll_speed_run); } + if(!actor.stopspeed) { actor.stopspeed = (autocvar_g_monster_troll_speed_stop); } + if(!actor.damageforcescale) { actor.damageforcescale = (autocvar_g_monster_troll_damageforcescale); } + + actor.view_ofs = '0 0 35'; // we swing at a lower height than our eyes + - actor.monster_loot = spawnfunc_item_armor_big; ++ actor.monster_loot = ITEM_ArmorBig; + actor.weapon = WEP_MORTAR.m_id; + + setanim(actor, actor.anim_idle, false, true, true); + actor.spawn_time = actor.animstate_endtime; + actor.spawnshieldtime = actor.spawn_time; + actor.monster_attackfunc = M_Troll_Attack; + + return true; +} + +METHOD(Troll, mr_precache, bool(Troll this)) +{ + TC(Troll, this); + return true; +} +#endif + +#endif diff --cc qcsrc/common/notifications/all.inc index 9de08958f4,9f3eb37c24..16eba96aaa --- a/qcsrc/common/notifications/all.inc +++ b/qcsrc/common/notifications/all.inc @@@ -220,279 -236,289 +236,289 @@@ MULTITEAM_INFO##teams(prefix, default, strnum, flnum, args, hudargs, icon, normal, gentle, type) // MSG_INFO_NOTIFICATIONS - MSG_INFO_NOTIF(CHAT_NOSPECTATORS, 2, 0, 0, "", "", "", _("^F4NOTE: ^BGSpectator chat is not sent to players during the match"), "") - - MULTITEAM_INFO(CTF_CAPTURE, 4, 1, 1, 0, "s1", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag"), "", FLAG) - MULTITEAM_INFO(CTF_CAPTURE_BROKEN, 4, 1, 2, 2, "s1 f1p2dec s2 f2p2dec", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds, breaking ^BG%s^BG's previous record of ^F2%s^BG seconds"), "", FLAG) - MSG_INFO_NOTIF(CTF_CAPTURE_NEUTRAL, 1, 1, 0, "s1", "s1", "notify_neutral_captured", _("^BG%s^BG captured the flag"), "") - MULTITEAM_INFO(CTF_CAPTURE_TIME, 4, 1, 1, 1, "s1 f1p2dec", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds"), "", FLAG) - MULTITEAM_INFO(CTF_CAPTURE_UNBROKEN, 4, 1, 2, 2, "s1 f1p2dec s2 f2p2dec", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag in ^F2%s^BG seconds, failing to break ^BG%s^BG's previous record of ^F1%s^BG seconds"), "", FLAG) - MULTITEAM_INFO(CTF_FLAGRETURN_ABORTRUN, 4, 1, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag was returned to base by its owner"), "", FLAG) - MSG_INFO_NOTIF(CTF_FLAGRETURN_ABORTRUN_NEUTRAL, 1, 0, 0, "", "", "", _("^BGThe flag was returned by its owner"), "") - MULTITEAM_INFO(CTF_FLAGRETURN_DAMAGED, 4, 1, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag was destroyed and returned to base"), "", FLAG) - MSG_INFO_NOTIF(CTF_FLAGRETURN_DAMAGED_NEUTRAL, 1, 0, 0, "", "", "", _("^BGThe flag was destroyed and returned to base"), "") - MULTITEAM_INFO(CTF_FLAGRETURN_DROPPED, 4, 1, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag was dropped in the base and returned itself"), "", FLAG) - MSG_INFO_NOTIF(CTF_FLAGRETURN_DROPPED_NEUTRAL, 1, 0, 0, "", "", "", _("^BGThe flag was dropped in the base and returned itself"), "") - MULTITEAM_INFO(CTF_FLAGRETURN_NEEDKILL, 4, 1, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag fell somewhere it couldn't be reached and returned to base"), "", FLAG) - MSG_INFO_NOTIF(CTF_FLAGRETURN_NEEDKILL_NEUTRAL, 1, 0, 0, "", "", "", _("^BGThe flag fell somewhere it couldn't be reached and returned to base"), "") - MULTITEAM_INFO(CTF_FLAGRETURN_SPEEDRUN, 4, 1, 0, 1, "f1p2dec", "", "", _("^BGThe ^TC^TT^BG flag became impatient after ^F1%.2f^BG seconds and returned itself"), "", FLAG) - MSG_INFO_NOTIF(CTF_FLAGRETURN_SPEEDRUN_NEUTRAL, 1, 0, 1, "f1p2dec", "", "", _("^BGThe flag became impatient after ^F1%.2f^BG seconds and returned itself"), "") - MULTITEAM_INFO(CTF_FLAGRETURN_TIMEOUT, 4, 1, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag has returned to the base"), "", FLAG) - MSG_INFO_NOTIF(CTF_FLAGRETURN_TIMEOUT_NEUTRAL, 1, 0, 0, "", "", "", _("^BGThe flag has returned to the base"), "") - MULTITEAM_INFO(CTF_LOST, 4, 1, 1, 0, "s1", "s1", "notify_%s_lost", _("^BG%s^BG lost the ^TC^TT^BG flag"), "", FLAG) - MSG_INFO_NOTIF(CTF_LOST_NEUTRAL, 1, 1, 0, "s1", "s1", "notify_neutral_lost", _("^BG%s^BG lost the flag"), "") - MULTITEAM_INFO(CTF_PICKUP, 4, 1, 1, 0, "s1", "s1", "notify_%s_taken", _("^BG%s^BG got the ^TC^TT^BG flag"), "", FLAG) - MSG_INFO_NOTIF(CTF_PICKUP_NEUTRAL, 1, 1, 0, "s1", "s1", "notify_neutral_taken", _("^BG%s^BG got the flag"), "") - MULTITEAM_INFO(CTF_RETURN, 4, 1, 1, 0, "s1", "s1", "notify_%s_returned", _("^BG%s^BG returned the ^TC^TT^BG flag"), "", FLAG) - MULTITEAM_INFO(CTF_RETURN_MONSTER, 4, 1, 1, 0, "s1", "s1", "notify_%s_returned", _("^BG%s^BG returned the ^TC^TT^BG flag"), "", FLAG) - - MSG_INFO_NOTIF(COINTOSS, 2, 1, 0, "s1", "", "", _("^F2Throwing coin... Result: %s^F2!"), "") - - MSG_INFO_NOTIF(JETPACK_NOFUEL, 1, 0, 0, "", "", "", _("^BGYou don't have any fuel for the ^F1Jetpack"), "") - - MSG_INFO_NOTIF(SUPERSPEC_MISSING_UID, 2, 0, 0, "", "", "", _("^F2You lack a UID, superspec options will not be saved/restored"), "") - - MSG_INFO_NOTIF(CA_JOIN_LATE, 1, 0, 0, "", "", "", _("^F1Round already started, you will join the game in the next round"), "") - MSG_INFO_NOTIF(CA_LEAVE, 1, 0, 0, "", "", "", _("^F2You will spectate in the next round"), "") - - MSG_INFO_NOTIF(DEATH_MURDER_BUFF, 1, 3, 3, "spree_inf s1 s2 f3buffname s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was killed by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s"), _("^BG%s%s^K1 was scored against by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s")) - MSG_INFO_NOTIF(DEATH_MURDER_CHEAT, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was unfairly eliminated by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_DROWN, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_water", _("^BG%s%s^K1 was drowned by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_FALL, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_fall", _("^BG%s%s^K1 was grounded by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_FIRE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was burnt up into a crisp by ^BG%s^K1%s%s"), _("^BG%s%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s")) - MSG_INFO_NOTIF(DEATH_MURDER_LAVA, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_lava", _("^BG%s%s^K1 was cooked by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_MONSTER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was pushed infront of a monster by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_NADE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_normal", _("^BG%s%s^K1 was blown up by ^BG%s^K1's Nade%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_NADE_NAPALM, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_napalm", _("^BG%s%s^K1 was burned to death by ^BG%s^K1's Napalm Nade%s%s"), _("^BG%s%s^K1 got too close to a napalm explosion%s%s")) - MSG_INFO_NOTIF(DEATH_MURDER_NADE_ICE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_ice", _("^BG%s%s^K1 was blown up by ^BG%s^K1's Ice Nade%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_NADE_ICE_FREEZE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_ice", _("^BG%s%s^K1 was frozen to death by ^BG%s^K1's Ice Nade%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_NADE_HEAL, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_heal", _("^BG%s%s^K1 has not been healed by ^BG%s^K1's Healing Nade%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_SHOOTING_STAR, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_shootingstar", _("^BG%s%s^K1 was shot into space by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_SLIME, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_slime", _("^BG%s%s^K1 was slimed by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_SWAMP, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_slime", _("^BG%s%s^K1 was preserved by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_TELEFRAG, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_telefrag", _("^BG%s%s^K1 was telefragged by ^BG%s^K1%s%s"), _("^BG%s%s^K1 tried to occupy ^BG%s^K1's teleport destination space%s%s")) - MSG_INFO_NOTIF(DEATH_MURDER_TOUCHEXPLODE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 died in an accident with ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_BUMB_DEATH, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Bumblebee exploded%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_BUMB_GUN, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 saw the pretty lights of ^BG%s^K1's Bumblebee gun%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_CRUSH, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was crushed by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_RAPT_BOMB, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was cluster bombed by ^BG%s^K1's Raptor%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_RAPT_CANNON, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 couldn't resist ^BG%s^K1's purple blobs%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_RAPT_DEATH, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Raptor exploded%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_SPID_DEATH, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Spiderbot exploded%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_SPID_MINIGUN, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got shredded by ^BG%s^K1's Spiderbot%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_SPID_ROCKET, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was blasted to bits by ^BG%s^K1's Spiderbot%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_WAKI_DEATH, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Racer exploded%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_WAKI_GUN, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was bolted down by ^BG%s^K1's Racer%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VH_WAKI_ROCKET, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 couldn't find shelter from ^BG%s^K1's Racer%s%s"), "") - MSG_INFO_NOTIF(DEATH_MURDER_VOID, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_void", _("^BG%s%s^K1 was thrown into a world of hurt by ^BG%s^K1%s%s"), "") - - MSG_INFO_NOTIF(DEATH_SELF_AUTOTEAMCHANGE, 1, 2, 1, "s1 s2loc death_team", "", "", _("^BG%s^K1 was moved into the %s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_BETRAYAL, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_teamkill_red", _("^BG%s^K1 became enemies with the Lord of Teamplay%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_CAMP, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_camping", _("^BG%s^K1 thought they found a nice camping ground%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_CHEAT, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 unfairly eliminated themself%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_CUSTOM, 1, 3, 1, "s1 s2 s3loc spree_lost", "s1", "notify_void", "^BG%s^K1 %s^K1%s%s", "") - MSG_INFO_NOTIF(DEATH_SELF_DROWN, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_water", _("^BG%s^K1 couldn't catch their breath%s%s"), _("^BG%s^K1 was in the water for too long%s%s")) - MSG_INFO_NOTIF(DEATH_SELF_FALL, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_fall", _("^BG%s^K1 hit the ground with a crunch%s%s"), _("^BG%s^K1 hit the ground with a bit too much force%s%s")) - MSG_INFO_NOTIF(DEATH_SELF_FIRE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 became a bit too crispy%s%s"), _("^BG%s^K1 felt a little hot%s%s")) - MSG_INFO_NOTIF(DEATH_SELF_GENERIC, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 died%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_LAVA, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_lava", _("^BG%s^K1 turned into hot slag%s%s"), _("^BG%s^K1 found a hot place%s%s")) - MSG_INFO_NOTIF(DEATH_SELF_MON_MAGE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was exploded by a Mage%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_CLAW, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1's innards became outwards by a Golem%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_SMASH, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was smashed by a Golem%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_ZAP, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was zapped to death by a Golem%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_SPIDER, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was bitten by a Spider%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_WYVERN, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was fireballed by a Wyvern%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_ZOMBIE_JUMP, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 joins the Zombies%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_ZOMBIE_MELEE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was given kung fu lessons by a Zombie%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_NADE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "nade_normal", _("^BG%s^K1 mastered the art of self-nading%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_NADE_NAPALM, 1, 2, 1, "s1 s2loc spree_lost", "s1", "nade_napalm", _("^BG%s^K1 was burned to death by their own Napalm Nade%s%s"), _("^BG%s^K1 decided to take a look at the results of their napalm explosion%s%s")) - MSG_INFO_NOTIF(DEATH_SELF_NADE_ICE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "nade_ice", _("^BG%s^K1 mastered the art of self-nading%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_NADE_ICE_FREEZE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "nade_ice", _("^BG%s^K1 was frozen to death by their own Ice Nade%s%s"), _("^BG%s^K1 felt a little chilly%s%s")) - MSG_INFO_NOTIF(DEATH_SELF_NADE_HEAL, 1, 2, 1, "s1 s2loc spree_lost", "s1", "nade_heal", _("^BG%s^K1's Healing Nade didn't quite heal them%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_NOAMMO, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_outofammo", _("^BG%s^K1 died%s%s. What's the point of living without ammo?"), _("^BG%s^K1 ran out of ammo%s%s")) - MSG_INFO_NOTIF(DEATH_SELF_ROT, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 rotted away%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_SHOOTING_STAR, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_shootingstar", _("^BG%s^K1 became a shooting star%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_SLIME, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_slime", _("^BG%s^K1 was slimed%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 couldn't take it anymore%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_SWAMP, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_slime", _("^BG%s^K1 is now preserved for centuries to come%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TEAMCHANGE, 1, 2, 1, "s1 s2loc death_team", "", "", _("^BG%s^K1 switched to the %s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TOUCHEXPLODE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 died in an accident%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 ran into a turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_EWHEEL, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted away by an eWheel turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_FLAC, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught up in the FLAC turret fire%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_HELLION, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted away by a Hellion turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_HK, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 could not hide from the Hunter turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_MACHINEGUN, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was riddled full of holes by a Machinegun turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_MLRS, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got turned into smoldering gibs by an MLRS turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_PHASER, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was phased out by a turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_PLASMA, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got served some superheated plasma from a turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_TESLA, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was electrocuted by a Tesla turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_WALK_GUN, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got served a lead enrichment by a Walker turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_WALK_MELEE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was impaled by a Walker turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_TURRET_WALK_ROCKET, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted away by a Walker turret%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_BUMB_DEATH, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Bumblebee explosion%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_CRUSH, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was crushed by a vehicle%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_RAPT_BOMB, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was caught in a Raptor cluster bomb%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_RAPT_DEATH, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Raptor explosion%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_SPID_DEATH, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Spiderbot explosion%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_SPID_ROCKET, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted to bits by a Spiderbot rocket%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_WAKI_DEATH, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Racer explosion%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VH_WAKI_ROCKET, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 couldn't find shelter from a Racer rocket%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_VOID, 1, 3, 1, "s1 s2 s2loc spree_lost", "s1", "notify_void", "^BG%s^K1 %s^K1%s%s", "") - - MULTITEAM_INFO(DEATH_TEAMKILL, 4, 1, 3, 1, "s1 s2 s3loc spree_end", "s2 s1", "notify_teamkill_%s", _("^BG%s^K1 was betrayed by ^BG%s^K1%s%s"), "", NAME) - - MSG_INFO_NOTIF(DOMINATION_CAPTURE_TIME, 1, 2, 2, "s1 s2 f1 f1points f2", "", "", _("^BG%s^BG%s^BG (%s %s every %s seconds)"), "") - - MSG_INFO_NOTIF(FREEZETAG_FREEZE, 1, 2, 0, "s1 s2", "", "", _("^BG%s^K1 was frozen by ^BG%s"), "") - MSG_INFO_NOTIF(FREEZETAG_REVIVED, 1, 2, 0, "s1 s2", "", "", _("^BG%s^K3 was revived by ^BG%s"), "") - MSG_INFO_NOTIF(FREEZETAG_REVIVED_FALL, 1, 1, 0, "s1", "", "", _("^BG%s^K3 was revived by falling"), "") - MSG_INFO_NOTIF(FREEZETAG_REVIVED_NADE, 1, 1, 0, "s1", "", "", _("^BG%s^K3 was revived by their Nade explosion"), "") - MSG_INFO_NOTIF(FREEZETAG_AUTO_REVIVED, 1, 1, 1, "s1 f1", "", "", _("^BG%s^K3 was automatically revived after %s second(s)"), "") - MSG_INFO_NOTIF(FREEZETAG_SELF, 1, 1, 0, "s1", "", "", _("^BG%s^K1 froze themself"), "") - - MULTITEAM_INFO(ROUND_TEAM_WIN, 4, 1, 0, 0, "", "", "", _("^TC^TT^BG team wins the round"), "", NAME) - MSG_INFO_NOTIF(ROUND_PLAYER_WIN, 1, 1, 0, "s1", "", "", _("^BG%s^BG wins the round"), "") - MSG_INFO_NOTIF(ROUND_TIED, 1, 0, 0, "", "", "", _("^BGRound tied"), "") - MSG_INFO_NOTIF(ROUND_OVER, 1, 0, 0, "", "", "", _("^BGRound over, there's no winner"), "") - - MSG_INFO_NOTIF(GODMODE_OFF, 1, 0, 1, "f1", "", "", _("^BGGodmode saved you %s units of damage, cheater!"), "") - - MSG_INFO_NOTIF(ITEM_BUFF, 1, 1, 1, "s1 item_buffname", "", "", _("^BG%s^BG got the %s^BG buff!"), "") - MSG_INFO_NOTIF(ITEM_BUFF_LOST, 1, 1, 1, "s1 item_buffname", "", "", _("^BG%s^BG lost the %s^BG buff!"), "") - MSG_INFO_NOTIF(ITEM_BUFF_DROP, 1, 0, 1, "item_buffname", "", "", _("^BGYou dropped the %s^BG buff!"), "") - MSG_INFO_NOTIF(ITEM_BUFF_GOT, 1, 0, 1, "item_buffname", "", "", _("^BGYou got the %s^BG buff!"), "") - - MSG_INFO_NOTIF(ITEM_WEAPON_DONTHAVE, 0, 0, 1, "item_wepname", "", "", _("^BGYou do not have the ^F1%s"), "") - MSG_INFO_NOTIF(ITEM_WEAPON_DROP, 0, 1, 1, "item_wepname item_wepammo", "", "", _("^BGYou dropped the ^F1%s^BG%s"), "") - MSG_INFO_NOTIF(ITEM_WEAPON_GOT, 0, 0, 1, "item_wepname", "", "", _("^BGYou got the ^F1%s"), "") - MSG_INFO_NOTIF(ITEM_WEAPON_NOAMMO, 0, 0, 1, "item_wepname", "", "", _("^BGYou don't have enough ammo for the ^F1%s"), "") - MSG_INFO_NOTIF(ITEM_WEAPON_PRIMORSEC, 0, 0, 3, "item_wepname f2primsec f3primsec", "", "", _("^F1%s %s^BG is unable to fire, but its ^F1%s^BG can"), "") - MSG_INFO_NOTIF(ITEM_WEAPON_UNAVAILABLE, 0, 0, 1, "item_wepname", "", "", _("^F1%s^BG is ^F4not available^BG on this map"), "") - - MSG_INFO_NOTIF(CONNECTING, 1, 1, 0, "s1", "", "", _("^BG%s^BG is connecting..."), "") - MSG_INFO_NOTIF(JOIN_CONNECT, 2, 1, 0, "s1", "", "", _("^BG%s^F3 connected"), "") - MULTITEAM_INFO(JOIN_CONNECT_TEAM, 4, 2, 1, 0, "s1", "", "", _("^BG%s^F3 connected and joined the ^TC^TT team"), "", NAME) - MSG_INFO_NOTIF(JOIN_PLAY, 1, 1, 0, "s1", "", "", _("^BG%s^F3 is now playing"), "") - MULTITEAM_INFO(JOIN_PLAY_TEAM, 4, 2, 1, 0, "s1", "", "", _("^BG%s^F3 is now playing on the ^TC^TT team"), "", NAME) - - MSG_INFO_NOTIF(KEEPAWAY_DROPPED, 1, 1, 0, "s1", "s1", "notify_balldropped", _("^BG%s^BG has dropped the ball!"), "") - MSG_INFO_NOTIF(KEEPAWAY_PICKUP, 1, 1, 0, "s1", "s1", "notify_ballpickedup", _("^BG%s^BG has picked up the ball!"), "") - - MULTITEAM_INFO(KEYHUNT_CAPTURE, 4, 1, 1, 0, "s1", "", "", _("^BG%s^BG captured the keys for the ^TC^TT team"), "", NAME) - MULTITEAM_INFO(KEYHUNT_DROP, 4, 1, 1, 0, "s1", "", "", _("^BG%s^BG dropped the ^TC^TT Key"), "", KEY) - MULTITEAM_INFO(KEYHUNT_LOST, 4, 1, 1, 0, "s1", "", "", _("^BG%s^BG lost the ^TC^TT Key"), "", KEY) - MULTITEAM_INFO(KEYHUNT_PUSHED, 4, 1, 2, 0, "s1 s2", "", "", _("^BG%s^BG pushed %s^BG causing the ^TC^TT Key ^BGdestruction"), "", KEY) - MULTITEAM_INFO(KEYHUNT_DESTROYED, 4, 1, 1, 0, "s1", "", "", _("^BG%s^BG destroyed the ^TC^TT Key"), "", KEY) - MULTITEAM_INFO(KEYHUNT_PICKUP, 4, 1, 1, 0, "s1", "", "", _("^BG%s^BG picked up the ^TC^TT Key"), "", KEY) - - MSG_INFO_NOTIF(LMS_FORFEIT, 1, 1, 0, "s1", "", "", _("^BG%s^F3 forfeited"), "") - MSG_INFO_NOTIF(LMS_NOLIVES, 1, 1, 0, "s1", "", "", _("^BG%s^F3 has no more lives left"), "") - - MSG_INFO_NOTIF(MONSTERS_DISABLED, 1, 0, 0, "", "", "", _("^BGMonsters are currently disabled"), "") - - MULTITEAM_INFO(NEXBALL_RETURN_HELD, 4, 1, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG team held the ball for too long"), "", NAME) - - MSG_INFO_NOTIF(ONSLAUGHT_CAPTURE, 1, 2, 0, "s1 s2", "", "", _("^BG%s^BG captured %s^BG control point"), "") - MULTITEAM_INFO(ONSLAUGHT_CPDESTROYED, 4, 1, 2, 0, "s1 s2", "", "", _("^TC^TT^BG team %s^BG control point has been destroyed by %s"), "", NAME) - MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED, 4, 1, 0, 0, "", "", "", _("^TC^TT^BG generator has been destroyed"), "", GENERATOR) - MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED_OVERTIME, 4, 1, 0, 0, "", "", "", _("^TC^TT^BG generator spontaneously combusted due to overtime!"), "", GENERATOR) - - MSG_INFO_NOTIF(POWERUP_INVISIBILITY, 1, 1, 0, "s1", "s1", "strength", _("^BG%s^K1 picked up Invisibility"), "") - MSG_INFO_NOTIF(POWERUP_SHIELD, 1, 1, 0, "s1", "s1", "shield", _("^BG%s^K1 picked up Shield"), "") - MSG_INFO_NOTIF(POWERUP_SPEED, 1, 1, 0, "s1", "s1", "shield", _("^BG%s^K1 picked up Speed"), "") - MSG_INFO_NOTIF(POWERUP_STRENGTH, 1, 1, 0, "s1", "s1", "strength", _("^BG%s^K1 picked up Strength"), "") - - MSG_INFO_NOTIF(QUIT_DISCONNECT, 2, 1, 0, "s1", "", "", _("^BG%s^F3 disconnected"), "") - MSG_INFO_NOTIF(QUIT_KICK_IDLING, 2, 1, 0, "s1", "", "", _("^BG%s^F3 was kicked for idling"), "") - MSG_INFO_NOTIF(QUIT_KICK_SPECTATING, 1, 0, 0, "", "", "", _("^F2You were kicked from the server because you are a spectator and spectators aren't allowed at the moment."), "") - MSG_INFO_NOTIF(QUIT_SPECTATE, 1, 1, 0, "s1", "", "", _("^BG%s^F3 is now spectating"), "") - - MSG_INFO_NOTIF(RACE_ABANDONED, 1, 1, 0, "s1", "", "", _("^BG%s^BG has abandoned the race"), "") - MSG_INFO_NOTIF(RACE_FAIL_RANKED, 1, 1, 3, "s1 race_col f1ord race_col f3race_time race_diff", "s1 f3race_time", "race_newfail", _("^BG%s^BG couldn't break their %s%s^BG place record of %s%s %s"), "") - MSG_INFO_NOTIF(RACE_FAIL_UNRANKED, 1, 1, 3, "s1 race_col f1ord race_col f3race_time race_diff", "s1 f3race_time", "race_newfail", _("^BG%s^BG couldn't break the %s%s^BG place record of %s%s %s"), "") - MSG_INFO_NOTIF(RACE_FINISHED, 1, 1, 0, "s1", "", "", _("^BG%s^BG has finished the race"), "") - MSG_INFO_NOTIF(RACE_NEW_BROKEN, 1, 2, 3, "s1 s2 race_col f1ord race_col f2race_time race_diff", "s1 f2race_time", "race_newrankyellow", _("^BG%s^BG broke %s^BG's %s%s^BG place record with %s%s %s"), "") - MSG_INFO_NOTIF(RACE_NEW_IMPROVED, 1, 1, 3, "s1 race_col f1ord race_col f2race_time race_diff", "s1 f2race_time", "race_newtime", _("^BG%s^BG improved their %s%s^BG place record with %s%s %s"), "") - MSG_INFO_NOTIF(RACE_NEW_MISSING_UID, 1, 1, 1, "s1 f1race_time", "s1 f1race_time", "race_newfail", _("^BG%s^BG scored a new record with ^F2%s^BG, but unfortunately lacks a UID and will be lost."), "") - MSG_INFO_NOTIF(RACE_NEW_SET, 1, 1, 2, "s1 race_col f1ord race_col f2race_time", "s1 f2race_time", "race_newrecordserver", _("^BG%s^BG set the %s%s^BG place record with %s%s"), "") - - MULTIICON_INFO(MINIGAME_INVITE, 1, 2, 0, "s2 minigame1_name s1", "s2", "minigame1_d", "minigames/%s/icon_notif", _("^F4You have been invited by ^BG%s^F4 to join their game of ^F2%s^F4 (^F1%s^F4)"), "") - - MULTITEAM_INFO(SCORES, 4, 1, 0, 0, "", "", "", _("^TC^TT ^BGteam scores!"), "", NAME) - - MSG_INFO_NOTIF(SPECTATE_WARNING, 1, 0, 1, "f1secs", "", "", _("^F2You have to become a player within the next %s, otherwise you will be kicked, because spectating isn't allowed at this time!"), "") - - MSG_INFO_NOTIF(SUPERWEAPON_PICKUP, 1, 1, 0, "s1", "s1", "superweapons", _("^BG%s^K1 picked up a Superweapon"), "") - - MSG_INFO_NOTIF(TEAMCHANGE_LARGERTEAM, 1, 0, 0, "", "", "", _("^BGYou cannot change to a larger team"), "") - MSG_INFO_NOTIF(TEAMCHANGE_NOTALLOWED, 1, 0, 0, "", "", "", _("^BGYou are not allowed to change teams"), "") - - MSG_INFO_NOTIF(VERSION_BETA, 2, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^BGThe server is running ^F1Xonotic %s (beta)^BG, you have ^F2Xonotic %s"), "") - MSG_INFO_NOTIF(VERSION_OLD, 2, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^BGThe server is running ^F1Xonotic %s^BG, you have ^F2Xonotic %s"), "") - MSG_INFO_NOTIF(VERSION_OUTDATED, 2, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^F1Xonotic %s^BG is out, and you still have ^F2Xonotic %s^BG - get the update from ^F3http://www.xonotic.org/^BG!"), "") - - MSG_INFO_NOTIF(WATERMARK, 1, 1, 0, "s1", "", "", _("^F3SVQC Build information: ^F4%s"), "") - - MSG_INFO_NOTIF(WEAPON_ACCORDEON_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapontuba", _("^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Accordeon%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ACCORDEON_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weapontuba", _("^BG%s^K1 hurt their own ears with the @!#%%'n Accordeon%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ARC_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponarc", _("^BG%s%s^K1 was electrocuted by ^BG%s^K1's Arc%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ARC_MURDER_SPRAY, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponarc", _("^BG%s%s^K1 was blasted by ^BG%s^K1's Arc bolts%s%s"), "") - MSG_INFO_NOTIF(WEAPON_BLASTER_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponlaser", _("^BG%s%s^K1 was shot to death by ^BG%s^K1's Blaster%s%s"), "") - MSG_INFO_NOTIF(WEAPON_BLASTER_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponlaser", _("^BG%s^K1 shot themself to hell with their Blaster%s%s"), "") - MSG_INFO_NOTIF(WEAPON_CRYLINK_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponcrylink", _("^BG%s%s^K1 felt the strong pull of ^BG%s^K1's Crylink%s%s"), "") - MSG_INFO_NOTIF(WEAPON_CRYLINK_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponcrylink", _("^BG%s^K1 felt the strong pull of their Crylink%s%s"), "") - MSG_INFO_NOTIF(WEAPON_DEVASTATOR_MURDER_DIRECT, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrocketlauncher", _("^BG%s%s^K1 ate ^BG%s^K1's rocket%s%s"), "") - MSG_INFO_NOTIF(WEAPON_DEVASTATOR_MURDER_SPLASH, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrocketlauncher", _("^BG%s%s^K1 got too close ^BG%s^K1's rocket%s%s"), "") - MSG_INFO_NOTIF(WEAPON_DEVASTATOR_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponrocketlauncher", _("^BG%s^K1 blew themself up with their Devastator%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ELECTRO_MURDER_BOLT, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponelectro", _("^BG%s%s^K1 was blasted by ^BG%s^K1's Electro bolt%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ELECTRO_MURDER_COMBO, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponelectro", _("^BG%s%s^K1 felt the electrifying air of ^BG%s^K1's Electro combo%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ELECTRO_MURDER_ORBS, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponelectro", _("^BG%s%s^K1 got too close to ^BG%s^K1's Electro orb%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ELECTRO_SUICIDE_BOLT, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponelectro", _("^BG%s^K1 played with Electro bolts%s%s"), "") - MSG_INFO_NOTIF(WEAPON_ELECTRO_SUICIDE_ORBS, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponelectro", _("^BG%s^K1 could not remember where they put their Electro orb%s%s"), "") - MSG_INFO_NOTIF(WEAPON_FIREBALL_MURDER_BLAST, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponfireball", _("^BG%s%s^K1 got too close to ^BG%s^K1's fireball%s%s"), "") - MSG_INFO_NOTIF(WEAPON_FIREBALL_MURDER_FIREMINE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponfireball", _("^BG%s%s^K1 got burnt by ^BG%s^K1's firemine%s%s"), "") - MSG_INFO_NOTIF(WEAPON_FIREBALL_SUICIDE_BLAST, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponfireball", _("^BG%s^K1 should have used a smaller gun%s%s"), "") - MSG_INFO_NOTIF(WEAPON_FIREBALL_SUICIDE_FIREMINE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponfireball", _("^BG%s^K1 forgot about their firemine%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HAGAR_MURDER_BURST, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhagar", _("^BG%s%s^K1 was pummeled by a burst of ^BG%s^K1's Hagar rockets%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HAGAR_MURDER_SPRAY, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhagar", _("^BG%s%s^K1 was pummeled by ^BG%s^K1's Hagar rockets%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HAGAR_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponhagar", _("^BG%s^K1 played with tiny Hagar rockets%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HLAC_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhlac", _("^BG%s%s^K1 was cut down with ^BG%s^K1's HLAC%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HLAC_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponhlac", _("^BG%s^K1 got a little jumpy with their HLAC%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HMG_MURDER_SNIPE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhmg", _("^BG%s%s^K1 was sniped by ^BG%s^K1's Heavy Machine Gun%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HMG_MURDER_SPRAY, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhmg", _("^BG%s%s^K1 was torn to bits by ^BG%s^K1's Heavy Machine Gun%s%s"), "") - MSG_INFO_NOTIF(WEAPON_HOOK_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhook", _("^BG%s%s^K1 was caught in ^BG%s^K1's Hook gravity bomb%s%s"), "") - MSG_INFO_NOTIF(WEAPON_KLEINBOTTLE_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapontuba", _("^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Klein Bottle%s%s"), "") - MSG_INFO_NOTIF(WEAPON_KLEINBOTTLE_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weapontuba", _("^BG%s^K1 hurt their own ears with the @!#%%'n Klein Bottle%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MACHINEGUN_MURDER_SNIPE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponuzi", _("^BG%s%s^K1 was sniped by ^BG%s^K1's Machine Gun%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MACHINEGUN_MURDER_SPRAY, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponuzi", _("^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Machine Gun%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MINELAYER_LIMIT, 1, 0, 1, "f1", "", "", _("^BGYou cannot place more than ^F2%s^BG mines at a time"), "") - MSG_INFO_NOTIF(WEAPON_MINELAYER_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponminelayer", _("^BG%s%s^K1 got too close to ^BG%s^K1's mine%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MINELAYER_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponminelayer", _("^BG%s^K1 forgot about their mine%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MORTAR_MURDER_BOUNCE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapongrenadelauncher", _("^BG%s%s^K1 got too close to ^BG%s^K1's Mortar grenade%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MORTAR_MURDER_EXPLODE, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapongrenadelauncher", _("^BG%s%s^K1 ate ^BG%s^K1's Mortar grenade%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MORTAR_SUICIDE_BOUNCE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weapongrenadelauncher", _("^BG%s^K1 didn't see their own Mortar grenade%s%s"), "") - MSG_INFO_NOTIF(WEAPON_MORTAR_SUICIDE_EXPLODE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weapongrenadelauncher", _("^BG%s^K1 blew themself up with their own Mortar%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 was sniped with a Rifle by ^BG%s^K1%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER_HAIL, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER_HAIL_PIERCING, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle bullet hail%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER_PIERCING, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RPC_MURDER_DIRECT, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrpc", _("^BG%s%s^K1 was sawn in half by ^BG%s^K1's Rocket Propelled Chainsaw%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RPC_MURDER_SPLASH, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrpc", _("^BG%s%s^K1 almost dodged ^BG%s^K1's Rocket Propelled Chainsaw%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RPC_SUICIDE_DIRECT, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponrpc", _("^BG%s^K1 was sawn in half by their own Rocket Propelled Chainsaw%s%s"), "") - MSG_INFO_NOTIF(WEAPON_RPC_SUICIDE_SPLASH, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponrpc", _("^BG%s^K1 blew themself up with their Rocket Propelled Chainsaw%s%s"), "") - MSG_INFO_NOTIF(WEAPON_SEEKER_MURDER_SPRAY, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponseeker", _("^BG%s%s^K1 was pummeled by ^BG%s^K1's Seeker rockets%s%s"), "") - MSG_INFO_NOTIF(WEAPON_SEEKER_MURDER_TAG, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponseeker", _("^BG%s%s^K1 was tagged by ^BG%s^K1's Seeker%s%s"), "") - MSG_INFO_NOTIF(WEAPON_SEEKER_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weaponseeker", _("^BG%s^K1 played with tiny Seeker rockets%s%s"), "") - MSG_INFO_NOTIF(WEAPON_SHOCKWAVE_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponshockwave", _("^BG%s%s^K1 was gunned down by ^BG%s^K1's Shockwave%s%s"), "") - MSG_INFO_NOTIF(WEAPON_SHOCKWAVE_MURDER_SLAP, 1, 3, 2, "spree_inf s2 s1 s3loc spree_end", "s2 s1", "notify_melee_shotgun", _("^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shockwave%s%s"), "") - MSG_INFO_NOTIF(WEAPON_SHOTGUN_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponshotgun", _("^BG%s%s^K1 was gunned down by ^BG%s^K1's Shotgun%s%s"), "") - MSG_INFO_NOTIF(WEAPON_SHOTGUN_MURDER_SLAP, 1, 3, 2, "spree_inf s2 s1 s3loc spree_end", "s2 s1", "notify_melee_shotgun", _("^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shotgun%s%s"), "") - MSG_INFO_NOTIF(WEAPON_THINKING_WITH_PORTALS, 1, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 is now thinking with portals%s%s"), "") - MSG_INFO_NOTIF(WEAPON_TUBA_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapontuba", _("^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Tuba%s%s"), "") - MSG_INFO_NOTIF(WEAPON_TUBA_SUICIDE, 1, 2, 1, "s1 s2loc spree_lost", "s1", "weapontuba", _("^BG%s^K1 hurt their own ears with the @!#%%'n Tuba%s%s"), "") - MSG_INFO_NOTIF(WEAPON_VAPORIZER_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponminstanex", _("^BG%s%s^K1 has been sublimated by ^BG%s^K1's Vaporizer%s%s"), "") - MSG_INFO_NOTIF(WEAPON_VORTEX_MURDER, 1, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponnex", _("^BG%s%s^K1 has been vaporized by ^BG%s^K1's Vortex%s%s"), "") + MSG_INFO_NOTIF(CHAT_NOSPECTATORS, N_CHATCON, 0, 0, "", "", "", _("^F4NOTE: ^BGSpectator chat is not sent to players during the match"), "") + + MULTITEAM_INFO(CTF_CAPTURE, 4, N_CONSOLE, 1, 0, "s1", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag"), "", FLAG) + MULTITEAM_INFO(CTF_CAPTURE_BROKEN, 4, N_CONSOLE, 2, 2, "s1 f1p2dec s2 f2p2dec", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds, breaking ^BG%s^BG's previous record of ^F2%s^BG seconds"), "", FLAG) + MSG_INFO_NOTIF(CTF_CAPTURE_NEUTRAL, N_CONSOLE, 1, 0, "s1", "s1", "notify_neutral_captured", _("^BG%s^BG captured the flag"), "") + MULTITEAM_INFO(CTF_CAPTURE_TIME, 4, N_CONSOLE, 1, 1, "s1 f1p2dec", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag in ^F1%s^BG seconds"), "", FLAG) + MULTITEAM_INFO(CTF_CAPTURE_UNBROKEN, 4, N_CONSOLE, 2, 2, "s1 f1p2dec s2 f2p2dec", "s1", "notify_%s_captured", _("^BG%s^BG captured the ^TC^TT^BG flag in ^F2%s^BG seconds, failing to break ^BG%s^BG's previous record of ^F1%s^BG seconds"), "", FLAG) + MULTITEAM_INFO(CTF_FLAGRETURN_ABORTRUN, 4, N_CONSOLE, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag was returned to base by its owner"), "", FLAG) + MSG_INFO_NOTIF(CTF_FLAGRETURN_ABORTRUN_NEUTRAL, N_CONSOLE, 0, 0, "", "", "", _("^BGThe flag was returned by its owner"), "") + MULTITEAM_INFO(CTF_FLAGRETURN_DAMAGED, 4, N_CONSOLE, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag was destroyed and returned to base"), "", FLAG) + MSG_INFO_NOTIF(CTF_FLAGRETURN_DAMAGED_NEUTRAL, N_CONSOLE, 0, 0, "", "", "", _("^BGThe flag was destroyed and returned to base"), "") + MULTITEAM_INFO(CTF_FLAGRETURN_DROPPED, 4, N_CONSOLE, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag was dropped in the base and returned itself"), "", FLAG) + MSG_INFO_NOTIF(CTF_FLAGRETURN_DROPPED_NEUTRAL, N_CONSOLE, 0, 0, "", "", "", _("^BGThe flag was dropped in the base and returned itself"), "") + MULTITEAM_INFO(CTF_FLAGRETURN_NEEDKILL, 4, N_CONSOLE, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag fell somewhere it couldn't be reached and returned to base"), "", FLAG) + MSG_INFO_NOTIF(CTF_FLAGRETURN_NEEDKILL_NEUTRAL, N_CONSOLE, 0, 0, "", "", "", _("^BGThe flag fell somewhere it couldn't be reached and returned to base"), "") + MULTITEAM_INFO(CTF_FLAGRETURN_SPEEDRUN, 4, N_CONSOLE, 0, 1, "f1p2dec", "", "", _("^BGThe ^TC^TT^BG flag became impatient after ^F1%.2f^BG seconds and returned itself"), "", FLAG) + MSG_INFO_NOTIF(CTF_FLAGRETURN_SPEEDRUN_NEUTRAL, N_CONSOLE, 0, 1, "f1p2dec", "", "", _("^BGThe flag became impatient after ^F1%.2f^BG seconds and returned itself"), "") + MULTITEAM_INFO(CTF_FLAGRETURN_TIMEOUT, 4, N_CONSOLE, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG flag has returned to the base"), "", FLAG) + MSG_INFO_NOTIF(CTF_FLAGRETURN_TIMEOUT_NEUTRAL, N_CONSOLE, 0, 0, "", "", "", _("^BGThe flag has returned to the base"), "") + MULTITEAM_INFO(CTF_LOST, 4, N_CONSOLE, 1, 0, "s1", "s1", "notify_%s_lost", _("^BG%s^BG lost the ^TC^TT^BG flag"), "", FLAG) + MSG_INFO_NOTIF(CTF_LOST_NEUTRAL, N_CONSOLE, 1, 0, "s1", "s1", "notify_neutral_lost", _("^BG%s^BG lost the flag"), "") + MULTITEAM_INFO(CTF_PICKUP, 4, N_CONSOLE, 1, 0, "s1", "s1", "notify_%s_taken", _("^BG%s^BG got the ^TC^TT^BG flag"), "", FLAG) + MSG_INFO_NOTIF(CTF_PICKUP_NEUTRAL, N_CONSOLE, 1, 0, "s1", "s1", "notify_neutral_taken", _("^BG%s^BG got the flag"), "") + MULTITEAM_INFO(CTF_RETURN, 4, N_CONSOLE, 1, 0, "s1", "s1", "notify_%s_returned", _("^BG%s^BG returned the ^TC^TT^BG flag"), "", FLAG) + MULTITEAM_INFO(CTF_RETURN_MONSTER, 4, N_CONSOLE, 1, 0, "s1", "s1", "notify_%s_returned", _("^BG%s^BG returned the ^TC^TT^BG flag"), "", FLAG) + + MSG_INFO_NOTIF(COINTOSS, N_CHATCON, 1, 0, "s1", "", "", _("^F2Throwing coin... Result: %s^F2!"), "") + + MSG_INFO_NOTIF(JETPACK_NOFUEL, N_CONSOLE, 0, 0, "", "", "", _("^BGYou don't have any fuel for the ^F1Jetpack"), "") + + MSG_INFO_NOTIF(SUPERSPEC_MISSING_UID, N_CHATCON, 0, 0, "", "", "", _("^F2You lack a UID, superspec options will not be saved/restored"), "") + + MSG_INFO_NOTIF(CA_JOIN_LATE, N_CONSOLE, 0, 0, "", "", "", _("^F1Round already started, you will join the game in the next round"), "") + MSG_INFO_NOTIF(CA_LEAVE, N_CONSOLE, 0, 0, "", "", "", _("^F2You will spectate in the next round"), "") + + MSG_INFO_NOTIF(DEATH_MURDER_BUFF, N_CONSOLE, 3, 3, "spree_inf s1 s2 f3buffname s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was killed by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s"), _("^BG%s%s^K1 was scored against by ^BG%s^K1's ^BG%s^K1 buff ^K1%s%s")) + MSG_INFO_NOTIF(DEATH_MURDER_CHEAT, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was unfairly eliminated by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_DROWN, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_water", _("^BG%s%s^K1 was drowned by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_FALL, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_fall", _("^BG%s%s^K1 was grounded by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_FIRE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was burnt up into a crisp by ^BG%s^K1%s%s"), _("^BG%s%s^K1 felt a little hot from ^BG%s^K1's fire^K1%s%s")) + MSG_INFO_NOTIF(DEATH_MURDER_LAVA, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_lava", _("^BG%s%s^K1 was cooked by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_MONSTER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was pushed in front of a monster by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_NADE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_normal", _("^BG%s%s^K1 was blown up by ^BG%s^K1's Nade%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_NADE_NAPALM, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_napalm", _("^BG%s%s^K1 was burned to death by ^BG%s^K1's Napalm Nade%s%s"), _("^BG%s%s^K1 got too close to a napalm explosion%s%s")) + MSG_INFO_NOTIF(DEATH_MURDER_NADE_ICE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_ice", _("^BG%s%s^K1 was blown up by ^BG%s^K1's Ice Nade%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_NADE_ICE_FREEZE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_ice", _("^BG%s%s^K1 was frozen to death by ^BG%s^K1's Ice Nade%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_NADE_HEAL, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "nade_heal", _("^BG%s%s^K1 has not been healed by ^BG%s^K1's Healing Nade%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_SHOOTING_STAR, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_shootingstar", _("^BG%s%s^K1 was shot into space by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_SLIME, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_slime", _("^BG%s%s^K1 was slimed by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_SWAMP, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_slime", _("^BG%s%s^K1 was preserved by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_TELEFRAG, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_telefrag", _("^BG%s%s^K1 was telefragged by ^BG%s^K1%s%s"), _("^BG%s%s^K1 tried to occupy ^BG%s^K1's teleport destination space%s%s")) + MSG_INFO_NOTIF(DEATH_MURDER_TOUCHEXPLODE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 died in an accident with ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_BUMB_DEATH, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Bumblebee exploded%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_BUMB_GUN, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 saw the pretty lights of ^BG%s^K1's Bumblebee gun%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_CRUSH, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was crushed by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_RAPT_BOMB, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was cluster bombed by ^BG%s^K1's Raptor%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_RAPT_CANNON, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 couldn't resist ^BG%s^K1's purple blobs%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_RAPT_DEATH, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Raptor exploded%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_SPID_DEATH, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Spiderbot exploded%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_SPID_MINIGUN, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got shredded by ^BG%s^K1's Spiderbot%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_SPID_ROCKET, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was blasted to bits by ^BG%s^K1's Spiderbot%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_WAKI_DEATH, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 got caught in the blast when ^BG%s^K1's Racer exploded%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_WAKI_GUN, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 was bolted down by ^BG%s^K1's Racer%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VH_WAKI_ROCKET, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_death", _("^BG%s%s^K1 couldn't find shelter from ^BG%s^K1's Racer%s%s"), "") + MSG_INFO_NOTIF(DEATH_MURDER_VOID, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "notify_void", _("^BG%s%s^K1 was thrown into a world of hurt by ^BG%s^K1%s%s"), "") + + MSG_INFO_NOTIF(DEATH_SELF_AUTOTEAMCHANGE, N_CONSOLE, 2, 1, "s1 s2loc death_team", "", "", _("^BG%s^K1 was moved into the %s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_BETRAYAL, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_teamkill_red", _("^BG%s^K1 became enemies with the Lord of Teamplay%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_CAMP, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_camping", _("^BG%s^K1 thought they found a nice camping ground%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_CHEAT, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 unfairly eliminated themself%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_CUSTOM, N_CONSOLE, 3, 1, "s1 s2 s3loc spree_lost", "s1", "notify_void", "^BG%s^K1 %s^K1%s%s", "") + MSG_INFO_NOTIF(DEATH_SELF_DROWN, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_water", _("^BG%s^K1 couldn't catch their breath%s%s"), _("^BG%s^K1 was in the water for too long%s%s")) + MSG_INFO_NOTIF(DEATH_SELF_FALL, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_fall", _("^BG%s^K1 hit the ground with a crunch%s%s"), _("^BG%s^K1 hit the ground with a bit too much force%s%s")) + MSG_INFO_NOTIF(DEATH_SELF_FIRE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 became a bit too crispy%s%s"), _("^BG%s^K1 felt a little hot%s%s")) + MSG_INFO_NOTIF(DEATH_SELF_GENERIC, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 died%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_LAVA, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_lava", _("^BG%s^K1 turned into hot slag%s%s"), _("^BG%s^K1 found a hot place%s%s")) + MSG_INFO_NOTIF(DEATH_SELF_MON_MAGE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was exploded by a Mage%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_SHAMBLER_CLAW, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1's innards became outwards by a Shambler%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_SHAMBLER_SMASH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was smashed by a Shambler%s%s"), "") - MSG_INFO_NOTIF(DEATH_SELF_MON_SHAMBLER_ZAP, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was zapped to death by a Shambler%s%s"), "") ++ MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_CLAW, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1's innards became outwards by a Golem%s%s"), "") ++ MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_SMASH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was smashed by a Golem%s%s"), "") ++ MSG_INFO_NOTIF(DEATH_SELF_MON_GOLEM_ZAP, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was zapped to death by a Golem%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_MON_SPIDER, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was bitten by a Spider%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_MON_WYVERN, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was fireballed by a Wyvern%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_MON_ZOMBIE_JUMP, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 joins the Zombies%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_MON_ZOMBIE_MELEE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was given kung fu lessons by a Zombie%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_NADE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "nade_normal", _("^BG%s^K1 mastered the art of self-nading%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_NADE_NAPALM, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "nade_napalm", _("^BG%s^K1 was burned to death by their own Napalm Nade%s%s"), _("^BG%s^K1 decided to take a look at the results of their napalm explosion%s%s")) + MSG_INFO_NOTIF(DEATH_SELF_NADE_ICE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "nade_ice", _("^BG%s^K1 mastered the art of self-nading%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_NADE_ICE_FREEZE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "nade_ice", _("^BG%s^K1 was frozen to death by their own Ice Nade%s%s"), _("^BG%s^K1 felt a little chilly%s%s")) + MSG_INFO_NOTIF(DEATH_SELF_NADE_HEAL, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "nade_heal", _("^BG%s^K1's Healing Nade didn't quite heal them%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_NOAMMO, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_outofammo", _("^BG%s^K1 died%s%s. What's the point of living without ammo?"), _("^BG%s^K1 ran out of ammo%s%s")) + MSG_INFO_NOTIF(DEATH_SELF_ROT, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 rotted away%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_SHOOTING_STAR, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_shootingstar", _("^BG%s^K1 became a shooting star%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_SLIME, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_slime", _("^BG%s^K1 was slimed%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 couldn't take it anymore%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_SWAMP, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_slime", _("^BG%s^K1 is now preserved for centuries to come%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TEAMCHANGE, N_CONSOLE, 2, 1, "s1 s2loc death_team", "", "", _("^BG%s^K1 switched to the %s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TOUCHEXPLODE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 died in an accident%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 ran into a turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_EWHEEL, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted away by an eWheel turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_FLAC, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught up in the FLAC turret fire%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_HELLION, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted away by a Hellion turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_HK, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 could not hide from the Hunter turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_MACHINEGUN, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was riddled full of holes by a Machinegun turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_MLRS, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got turned into smoldering gibs by an MLRS turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_PHASER, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was phased out by a turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_PLASMA, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got served some superheated plasma from a turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_TESLA, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was electrocuted by a Tesla turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_WALK_GUN, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got served a lead enrichment by a Walker turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_WALK_MELEE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was impaled by a Walker turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_TURRET_WALK_ROCKET, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted away by a Walker turret%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_BUMB_DEATH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Bumblebee explosion%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_CRUSH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was crushed by a vehicle%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_RAPT_BOMB, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was caught in a Raptor cluster bomb%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_RAPT_DEATH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Raptor explosion%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_SPID_DEATH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Spiderbot explosion%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_SPID_ROCKET, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blasted to bits by a Spiderbot rocket%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_WAKI_DEATH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 got caught in the blast of a Racer explosion%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VH_WAKI_ROCKET, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 couldn't find shelter from a Racer rocket%s%s"), "") + MSG_INFO_NOTIF(DEATH_SELF_VOID, N_CONSOLE, 3, 1, "s1 s2 s2loc spree_lost", "s1", "notify_void", "^BG%s^K1 %s^K1%s%s", "") + + MULTITEAM_INFO(DEATH_TEAMKILL, 4, N_CONSOLE, 3, 1, "s1 s2 s3loc spree_end", "s2 s1", "notify_teamkill_%s", _("^BG%s^K1 was betrayed by ^BG%s^K1%s%s"), "", NAME) + + MSG_INFO_NOTIF(DOMINATION_CAPTURE_TIME, N_CONSOLE, 2, 2, "s1 s2 f1 f1points f2", "", "", _("^BG%s^BG%s^BG (%s %s every %s seconds)"), "") + + MSG_INFO_NOTIF(FREEZETAG_FREEZE, N_CONSOLE, 2, 0, "s1 s2", "", "", _("^BG%s^K1 was frozen by ^BG%s"), "") + MSG_INFO_NOTIF(FREEZETAG_REVIVED, N_CONSOLE, 2, 0, "s1 s2", "", "", _("^BG%s^K3 was revived by ^BG%s"), "") + MSG_INFO_NOTIF(FREEZETAG_REVIVED_FALL, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^K3 was revived by falling"), "") + MSG_INFO_NOTIF(FREEZETAG_REVIVED_NADE, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^K3 was revived by their Nade explosion"), "") + MSG_INFO_NOTIF(FREEZETAG_AUTO_REVIVED, N_CONSOLE, 1, 1, "s1 f1", "", "", _("^BG%s^K3 was automatically revived after %s second(s)"), "") + MSG_INFO_NOTIF(FREEZETAG_SELF, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^K1 froze themself"), "") + + MULTITEAM_INFO(ROUND_TEAM_WIN, 4, N_CONSOLE, 0, 0, "", "", "", _("^TC^TT^BG team wins the round"), "", NAME) + MSG_INFO_NOTIF(ROUND_PLAYER_WIN, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG wins the round"), "") + MSG_INFO_NOTIF(ROUND_TIED, N_CONSOLE, 0, 0, "", "", "", _("^BGRound tied"), "") + MSG_INFO_NOTIF(ROUND_OVER, N_CONSOLE, 0, 0, "", "", "", _("^BGRound over, there's no winner"), "") + + MSG_INFO_NOTIF(GODMODE_OFF, N_CONSOLE, 0, 1, "f1", "", "", _("^BGGodmode saved you %s units of damage, cheater!"), "") + + MSG_INFO_NOTIF(ITEM_BUFF, N_CONSOLE, 1, 1, "s1 item_buffname", "", "", _("^BG%s^BG got the %s^BG buff!"), "") + MSG_INFO_NOTIF(ITEM_BUFF_LOST, N_CONSOLE, 1, 1, "s1 item_buffname", "", "", _("^BG%s^BG lost the %s^BG buff!"), "") + MSG_INFO_NOTIF(ITEM_BUFF_DROP, N_CONSOLE, 0, 1, "item_buffname", "", "", _("^BGYou dropped the %s^BG buff!"), "") + MSG_INFO_NOTIF(ITEM_BUFF_GOT, N_CONSOLE, 0, 1, "item_buffname", "", "", _("^BGYou got the %s^BG buff!"), "") + + MSG_INFO_NOTIF(ITEM_WEAPON_DONTHAVE, N_DISABLE, 0, 1, "item_wepname", "", "", _("^BGYou do not have the ^F1%s"), "") + MSG_INFO_NOTIF(ITEM_WEAPON_DROP, N_DISABLE, 1, 1, "item_wepname item_wepammo", "", "", _("^BGYou dropped the ^F1%s^BG%s"), "") + MSG_INFO_NOTIF(ITEM_WEAPON_GOT, N_DISABLE, 0, 1, "item_wepname", "", "", _("^BGYou got the ^F1%s"), "") + MSG_INFO_NOTIF(ITEM_WEAPON_NOAMMO, N_DISABLE, 0, 1, "item_wepname", "", "", _("^BGYou don't have enough ammo for the ^F1%s"), "") + MSG_INFO_NOTIF(ITEM_WEAPON_PRIMORSEC, N_DISABLE, 0, 3, "item_wepname f2primsec f3primsec", "", "", _("^F1%s %s^BG is unable to fire, but its ^F1%s^BG can"), "") + MSG_INFO_NOTIF(ITEM_WEAPON_UNAVAILABLE, N_DISABLE, 0, 1, "item_wepname", "", "", _("^F1%s^BG is ^F4not available^BG on this map"), "") + + MSG_INFO_NOTIF(CONNECTING, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG is connecting..."), "") + MSG_INFO_NOTIF(JOIN_CONNECT, N_CHATCON, 1, 0, "s1", "", "", _("^BG%s^F3 connected"), "") + MULTITEAM_INFO(JOIN_CONNECT_TEAM, 4, N_CHATCON, 1, 0, "s1", "", "", _("^BG%s^F3 connected and joined the ^TC^TT team"), "", NAME) + MSG_INFO_NOTIF(JOIN_PLAY, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^F3 is now playing"), "") + MULTITEAM_INFO(JOIN_PLAY_TEAM, 4, N_CHATCON, 1, 0, "s1", "", "", _("^BG%s^F3 is now playing on the ^TC^TT team"), "", NAME) + + MSG_INFO_NOTIF(KEEPAWAY_DROPPED, N_CONSOLE, 1, 0, "s1", "s1", "notify_balldropped", _("^BG%s^BG has dropped the ball!"), "") + MSG_INFO_NOTIF(KEEPAWAY_PICKUP, N_CONSOLE, 1, 0, "s1", "s1", "notify_ballpickedup", _("^BG%s^BG has picked up the ball!"), "") + + MULTITEAM_INFO(KEYHUNT_CAPTURE, 4, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG captured the keys for the ^TC^TT team"), "", NAME) + MULTITEAM_INFO(KEYHUNT_DROP, 4, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG dropped the ^TC^TT Key"), "", KEY) + MULTITEAM_INFO(KEYHUNT_LOST, 4, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG lost the ^TC^TT Key"), "", KEY) + MULTITEAM_INFO(KEYHUNT_PUSHED, 4, N_CONSOLE, 2, 0, "s1 s2", "", "", _("^BG%s^BG pushed %s^BG causing the ^TC^TT Key ^BGdestruction"), "", KEY) + MULTITEAM_INFO(KEYHUNT_DESTROYED, 4, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG destroyed the ^TC^TT Key"), "", KEY) + MULTITEAM_INFO(KEYHUNT_PICKUP, 4, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG picked up the ^TC^TT Key"), "", KEY) + + MSG_INFO_NOTIF(LMS_FORFEIT, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^F3 forfeited"), "") + MSG_INFO_NOTIF(LMS_NOLIVES, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^F3 has no more lives left"), "") + + MSG_INFO_NOTIF(MONSTERS_DISABLED, N_CONSOLE, 0, 0, "", "", "", _("^BGMonsters are currently disabled"), "") + + MULTITEAM_INFO(NEXBALL_RETURN_HELD, 4, N_CONSOLE, 0, 0, "", "", "", _("^BGThe ^TC^TT^BG team held the ball for too long"), "", NAME) + + MSG_INFO_NOTIF(ONSLAUGHT_CAPTURE, N_CONSOLE, 2, 0, "s1 s2", "", "", _("^BG%s^BG captured %s^BG control point"), "") + MULTITEAM_INFO(ONSLAUGHT_CPDESTROYED, 4, N_CONSOLE, 2, 0, "s1 s2", "", "", _("^TC^TT^BG team %s^BG control point has been destroyed by %s"), "", NAME) + MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED, 4, N_CONSOLE, 0, 0, "", "", "", _("^TC^TT^BG generator has been destroyed"), "", GENERATOR) + MULTITEAM_INFO(ONSLAUGHT_GENDESTROYED_OVERTIME, 4, N_CONSOLE, 0, 0, "", "", "", _("^TC^TT^BG generator spontaneously combusted due to overtime!"), "", GENERATOR) + + MSG_INFO_NOTIF(POWERUP_INVISIBILITY, N_CONSOLE, 1, 0, "s1", "s1", "strength", _("^BG%s^K1 picked up Invisibility"), "") + MSG_INFO_NOTIF(POWERUP_SHIELD, N_CONSOLE, 1, 0, "s1", "s1", "shield", _("^BG%s^K1 picked up Shield"), "") + MSG_INFO_NOTIF(POWERUP_SPEED, N_CONSOLE, 1, 0, "s1", "s1", "shield", _("^BG%s^K1 picked up Speed"), "") + MSG_INFO_NOTIF(POWERUP_STRENGTH, N_CONSOLE, 1, 0, "s1", "s1", "strength", _("^BG%s^K1 picked up Strength"), "") + + MSG_INFO_NOTIF(QUIT_DISCONNECT, N_CHATCON, 1, 0, "s1", "", "", _("^BG%s^F3 disconnected"), "") + MSG_INFO_NOTIF(QUIT_KICK_IDLING, N_CHATCON, 1, 0, "s1", "", "", _("^BG%s^F3 was kicked for idling"), "") + MSG_INFO_NOTIF(QUIT_KICK_SPECTATING, N_CONSOLE, 0, 0, "", "", "", _("^F2You were kicked from the server because you are a spectator and spectators aren't allowed at the moment."), "") + MSG_INFO_NOTIF(QUIT_SPECTATE, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^F3 is now spectating"), "") + + MSG_INFO_NOTIF(RACE_ABANDONED, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG has abandoned the race"), "") + MSG_INFO_NOTIF(RACE_FAIL_RANKED, N_CONSOLE, 1, 3, "s1 race_col f1ord race_col f3race_time race_diff", "s1 f3race_time", "race_newfail", _("^BG%s^BG couldn't break their %s%s^BG place record of %s%s %s"), "") + MSG_INFO_NOTIF(RACE_FAIL_UNRANKED, N_CONSOLE, 1, 3, "s1 race_col f1ord race_col f3race_time race_diff", "s1 f3race_time", "race_newfail", _("^BG%s^BG couldn't break the %s%s^BG place record of %s%s %s"), "") + MSG_INFO_NOTIF(RACE_FINISHED, N_CONSOLE, 1, 0, "s1", "", "", _("^BG%s^BG has finished the race"), "") + MSG_INFO_NOTIF(RACE_NEW_BROKEN, N_CONSOLE, 2, 3, "s1 s2 race_col f1ord race_col f2race_time race_diff", "s1 f2race_time", "race_newrankyellow", _("^BG%s^BG broke %s^BG's %s%s^BG place record with %s%s %s"), "") + MSG_INFO_NOTIF(RACE_NEW_IMPROVED, N_CONSOLE, 1, 3, "s1 race_col f1ord race_col f2race_time race_diff", "s1 f2race_time", "race_newtime", _("^BG%s^BG improved their %s%s^BG place record with %s%s %s"), "") + MSG_INFO_NOTIF(RACE_NEW_MISSING_UID, N_CONSOLE, 1, 1, "s1 f1race_time", "s1 f1race_time", "race_newfail", _("^BG%s^BG scored a new record with ^F2%s^BG, but unfortunately lacks a UID and will be lost."), "") + MSG_INFO_NOTIF(RACE_NEW_MISSING_NAME, N_CONSOLE, 1, 1, "s1 f1race_time", "s1 f1race_time", "race_newfail", _("^BG%s^BG scored a new record with ^F2%s^BG, but is anonymous and will be lost."), "") + MSG_INFO_NOTIF(RACE_NEW_SET, N_CONSOLE, 1, 2, "s1 race_col f1ord race_col f2race_time", "s1 f2race_time", "race_newrecordserver", _("^BG%s^BG set the %s%s^BG place record with %s%s"), "") + + MULTIICON_INFO(MINIGAME_INVITE, N_CONSOLE, 2, 0, "s2 minigame1_name s1", "s2", "minigame1_d", "minigames/%s/icon_notif", _("^F4You have been invited by ^BG%s^F4 to join their game of ^F2%s^F4 (^F1%s^F4)"), "") + + MULTITEAM_INFO(SCORES, 4, N_CONSOLE, 0, 0, "", "", "", _("^TC^TT ^BGteam scores!"), "", NAME) + + MSG_INFO_NOTIF(SPECTATE_WARNING, N_CONSOLE, 0, 1, "f1secs", "", "", _("^F2You have to become a player within the next %s, otherwise you will be kicked, because spectating isn't allowed at this time!"), "") + + MSG_INFO_NOTIF(SUPERWEAPON_PICKUP, N_CONSOLE, 1, 0, "s1", "s1", "superweapons", _("^BG%s^K1 picked up a Superweapon"), "") + + MSG_INFO_NOTIF(TEAMCHANGE_LARGERTEAM, N_CONSOLE, 0, 0, "", "", "", _("^BGYou cannot change to a larger team"), "") + MSG_INFO_NOTIF(TEAMCHANGE_NOTALLOWED, N_CONSOLE, 0, 0, "", "", "", _("^BGYou are not allowed to change teams"), "") + + MSG_INFO_NOTIF(VERSION_BETA, N_CHATCON, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^BGThe server is running ^F1Xonotic %s (beta)^BG, you have ^F2Xonotic %s"), "") + MSG_INFO_NOTIF(VERSION_OLD, N_CHATCON, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^BGThe server is running ^F1Xonotic %s^BG, you have ^F2Xonotic %s"), "") + MSG_INFO_NOTIF(VERSION_OUTDATED, N_CHATCON, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^F1Xonotic %s^BG is out, and you still have ^F2Xonotic %s^BG - get the update from ^F3http://www.xonotic.org/^BG!"), "") + + MSG_INFO_NOTIF(WATERMARK, N_CONSOLE, 1, 0, "s1", "", "", _("^F3SVQC Build information: ^F4%s"), "") + + MSG_INFO_NOTIF(WEAPON_ACCORDEON_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapontuba", _("^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Accordeon%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ACCORDEON_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weapontuba", _("^BG%s^K1 hurt their own ears with the @!#%%'n Accordeon%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ARC_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponarc", _("^BG%s%s^K1 was electrocuted by ^BG%s^K1's Arc%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ARC_MURDER_SPRAY, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponarc", _("^BG%s%s^K1 was blasted by ^BG%s^K1's Arc bolts%s%s"), "") + MSG_INFO_NOTIF(WEAPON_BLASTER_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponlaser", _("^BG%s%s^K1 was shot to death by ^BG%s^K1's Blaster%s%s"), "") + MSG_INFO_NOTIF(WEAPON_BLASTER_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponlaser", _("^BG%s^K1 shot themself to hell with their Blaster%s%s"), "") + MSG_INFO_NOTIF(WEAPON_CRYLINK_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponcrylink", _("^BG%s%s^K1 felt the strong pull of ^BG%s^K1's Crylink%s%s"), "") + MSG_INFO_NOTIF(WEAPON_CRYLINK_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponcrylink", _("^BG%s^K1 felt the strong pull of their Crylink%s%s"), "") + MSG_INFO_NOTIF(WEAPON_DEVASTATOR_MURDER_DIRECT, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrocketlauncher", _("^BG%s%s^K1 ate ^BG%s^K1's rocket%s%s"), "") + MSG_INFO_NOTIF(WEAPON_DEVASTATOR_MURDER_SPLASH, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrocketlauncher", _("^BG%s%s^K1 got too close ^BG%s^K1's rocket%s%s"), "") + MSG_INFO_NOTIF(WEAPON_DEVASTATOR_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponrocketlauncher", _("^BG%s^K1 blew themself up with their Devastator%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ELECTRO_MURDER_BOLT, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponelectro", _("^BG%s%s^K1 was blasted by ^BG%s^K1's Electro bolt%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ELECTRO_MURDER_COMBO, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponelectro", _("^BG%s%s^K1 felt the electrifying air of ^BG%s^K1's Electro combo%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ELECTRO_MURDER_ORBS, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponelectro", _("^BG%s%s^K1 got too close to ^BG%s^K1's Electro orb%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ELECTRO_SUICIDE_BOLT, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponelectro", _("^BG%s^K1 played with Electro bolts%s%s"), "") + MSG_INFO_NOTIF(WEAPON_ELECTRO_SUICIDE_ORBS, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponelectro", _("^BG%s^K1 could not remember where they put their Electro orb%s%s"), "") + MSG_INFO_NOTIF(WEAPON_FIREBALL_MURDER_BLAST, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponfireball", _("^BG%s%s^K1 got too close to ^BG%s^K1's fireball%s%s"), "") + MSG_INFO_NOTIF(WEAPON_FIREBALL_MURDER_FIREMINE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponfireball", _("^BG%s%s^K1 got burnt by ^BG%s^K1's firemine%s%s"), "") + MSG_INFO_NOTIF(WEAPON_FIREBALL_SUICIDE_BLAST, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponfireball", _("^BG%s^K1 should have used a smaller gun%s%s"), "") + MSG_INFO_NOTIF(WEAPON_FIREBALL_SUICIDE_FIREMINE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponfireball", _("^BG%s^K1 forgot about their firemine%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HAGAR_MURDER_BURST, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhagar", _("^BG%s%s^K1 was pummeled by a burst of ^BG%s^K1's Hagar rockets%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HAGAR_MURDER_SPRAY, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhagar", _("^BG%s%s^K1 was pummeled by ^BG%s^K1's Hagar rockets%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HAGAR_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponhagar", _("^BG%s^K1 played with tiny Hagar rockets%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HLAC_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhlac", _("^BG%s%s^K1 was cut down with ^BG%s^K1's HLAC%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HLAC_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponhlac", _("^BG%s^K1 got a little jumpy with their HLAC%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HMG_MURDER_SNIPE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhmg", _("^BG%s%s^K1 was sniped by ^BG%s^K1's Heavy Machine Gun%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HMG_MURDER_SPRAY, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhmg", _("^BG%s%s^K1 was torn to bits by ^BG%s^K1's Heavy Machine Gun%s%s"), "") + MSG_INFO_NOTIF(WEAPON_HOOK_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponhook", _("^BG%s%s^K1 was caught in ^BG%s^K1's Hook gravity bomb%s%s"), "") + MSG_INFO_NOTIF(WEAPON_KLEINBOTTLE_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapontuba", _("^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Klein Bottle%s%s"), "") + MSG_INFO_NOTIF(WEAPON_KLEINBOTTLE_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weapontuba", _("^BG%s^K1 hurt their own ears with the @!#%%'n Klein Bottle%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MACHINEGUN_MURDER_SNIPE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponuzi", _("^BG%s%s^K1 was sniped by ^BG%s^K1's Machine Gun%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MACHINEGUN_MURDER_SPRAY, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponuzi", _("^BG%s%s^K1 was riddled full of holes by ^BG%s^K1's Machine Gun%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MINELAYER_LIMIT, N_CONSOLE, 0, 1, "f1", "", "", _("^BGYou cannot place more than ^F2%s^BG mines at a time"), "") + MSG_INFO_NOTIF(WEAPON_MINELAYER_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponminelayer", _("^BG%s%s^K1 got too close to ^BG%s^K1's mine%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MINELAYER_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponminelayer", _("^BG%s^K1 forgot about their mine%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MORTAR_MURDER_BOUNCE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapongrenadelauncher", _("^BG%s%s^K1 got too close to ^BG%s^K1's Mortar grenade%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MORTAR_MURDER_EXPLODE, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapongrenadelauncher", _("^BG%s%s^K1 ate ^BG%s^K1's Mortar grenade%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MORTAR_SUICIDE_BOUNCE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weapongrenadelauncher", _("^BG%s^K1 didn't see their own Mortar grenade%s%s"), "") + MSG_INFO_NOTIF(WEAPON_MORTAR_SUICIDE_EXPLODE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weapongrenadelauncher", _("^BG%s^K1 blew themself up with their own Mortar%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 was sniped with a Rifle by ^BG%s^K1%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER_HAIL, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 died in ^BG%s^K1's Rifle bullet hail%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER_HAIL_PIERCING, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle bullet hail%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RIFLE_MURDER_PIERCING, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrifle", _("^BG%s%s^K1 failed to hide from ^BG%s^K1's Rifle%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RPC_MURDER_DIRECT, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrpc", _("^BG%s%s^K1 was sawn in half by ^BG%s^K1's Rocket Propelled Chainsaw%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RPC_MURDER_SPLASH, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponrpc", _("^BG%s%s^K1 almost dodged ^BG%s^K1's Rocket Propelled Chainsaw%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RPC_SUICIDE_DIRECT, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponrpc", _("^BG%s^K1 was sawn in half by their own Rocket Propelled Chainsaw%s%s"), "") + MSG_INFO_NOTIF(WEAPON_RPC_SUICIDE_SPLASH, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponrpc", _("^BG%s^K1 blew themself up with their Rocket Propelled Chainsaw%s%s"), "") + MSG_INFO_NOTIF(WEAPON_SEEKER_MURDER_SPRAY, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponseeker", _("^BG%s%s^K1 was pummeled by ^BG%s^K1's Seeker rockets%s%s"), "") + MSG_INFO_NOTIF(WEAPON_SEEKER_MURDER_TAG, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponseeker", _("^BG%s%s^K1 was tagged by ^BG%s^K1's Seeker%s%s"), "") + MSG_INFO_NOTIF(WEAPON_SEEKER_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weaponseeker", _("^BG%s^K1 played with tiny Seeker rockets%s%s"), "") + MSG_INFO_NOTIF(WEAPON_SHOCKWAVE_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponshockwave", _("^BG%s%s^K1 was gunned down by ^BG%s^K1's Shockwave%s%s"), "") + MSG_INFO_NOTIF(WEAPON_SHOCKWAVE_MURDER_SLAP, N_CONSOLE, 3, 2, "spree_inf s2 s1 s3loc spree_end", "s2 s1", "notify_melee_shotgun", _("^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shockwave%s%s"), "") + MSG_INFO_NOTIF(WEAPON_SHOTGUN_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponshotgun", _("^BG%s%s^K1 was gunned down by ^BG%s^K1's Shotgun%s%s"), "") + MSG_INFO_NOTIF(WEAPON_SHOTGUN_MURDER_SLAP, N_CONSOLE, 3, 2, "spree_inf s2 s1 s3loc spree_end", "s2 s1", "notify_melee_shotgun", _("^BG%s%s^K1 slapped ^BG%s^K1 around a bit with a large Shotgun%s%s"), "") + MSG_INFO_NOTIF(WEAPON_THINKING_WITH_PORTALS, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_selfkill", _("^BG%s^K1 is now thinking with portals%s%s"), "") + MSG_INFO_NOTIF(WEAPON_TUBA_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weapontuba", _("^BG%s%s^K1 died of ^BG%s^K1's great playing on the @!#%%'n Tuba%s%s"), "") + MSG_INFO_NOTIF(WEAPON_TUBA_SUICIDE, N_CONSOLE, 2, 1, "s1 s2loc spree_lost", "s1", "weapontuba", _("^BG%s^K1 hurt their own ears with the @!#%%'n Tuba%s%s"), "") + MSG_INFO_NOTIF(WEAPON_VAPORIZER_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponminstanex", _("^BG%s%s^K1 has been sublimated by ^BG%s^K1's Vaporizer%s%s"), "") + MSG_INFO_NOTIF(WEAPON_VORTEX_MURDER, N_CONSOLE, 3, 2, "spree_inf s1 s2 s3loc spree_end", "s2 s1", "weaponnex", _("^BG%s%s^K1 has been vaporized by ^BG%s^K1's Vortex%s%s"), "") + + #undef N_DISABLE + #undef N_CONSOLE + #undef N_CHATCON + + // default value for centerprint notification cvars (notification_CENTER_*): + // 0: off, 1: centerprint + #define N_DISABL 0 + #define N_ENABLE 1 #define MULTITEAM_CENTER2(prefix, default, strnum, flnum, args, cpid, durcnt, normal, gentle, type) \ MSG_CENTER_NOTIF_TEAM(NUM_TEAM_1, prefix##_RED, prefix, default, strnum, flnum, args, cpid, durcnt, TCR(normal, type, 1), TCR(gentle, type, 1)) \ @@@ -776,163 -810,163 +810,163 @@@ MULTITEAM_MULTI##teams(prefix, default, anncepre, infopre, centerpre) // MSG_MULTI_NOTIFICATIONS - MSG_MULTI_NOTIF(DEATH_MURDER_BUFF, 1, NULL, INFO_DEATH_MURDER_BUFF, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_CHEAT, 1, NULL, INFO_DEATH_MURDER_CHEAT, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_DROWN, 1, NULL, INFO_DEATH_MURDER_DROWN, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_FALL, 1, NULL, INFO_DEATH_MURDER_FALL, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_FIRE, 1, NULL, INFO_DEATH_MURDER_FIRE, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_LAVA, 1, NULL, INFO_DEATH_MURDER_LAVA, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_MONSTER, 1, NULL, INFO_DEATH_MURDER_MONSTER, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_MURDER_NADE, 1, NULL, INFO_DEATH_MURDER_NADE, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_NADE_NAPALM, 1, NULL, INFO_DEATH_MURDER_NADE_NAPALM, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_NADE_ICE, 1, NULL, INFO_DEATH_MURDER_NADE_ICE, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_NADE_ICE_FREEZE, 1, NULL, INFO_DEATH_MURDER_NADE_ICE_FREEZE, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_NADE_HEAL, 1, NULL, INFO_DEATH_MURDER_NADE_HEAL, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_SHOOTING_STAR, 1, NULL, INFO_DEATH_MURDER_SHOOTING_STAR, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_SLIME, 1, NULL, INFO_DEATH_MURDER_SLIME, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_SWAMP, 1, NULL, INFO_DEATH_MURDER_SWAMP, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_TELEFRAG, 1, NULL, INFO_DEATH_MURDER_TELEFRAG, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_TOUCHEXPLODE, 1, NULL, INFO_DEATH_MURDER_TOUCHEXPLODE, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_BUMB_DEATH, 1, NULL, INFO_DEATH_MURDER_VH_BUMB_DEATH, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_BUMB_GUN, 1, NULL, INFO_DEATH_MURDER_VH_BUMB_GUN, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_CRUSH, 1, NULL, INFO_DEATH_MURDER_VH_CRUSH, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_RAPT_BOMB, 1, NULL, INFO_DEATH_MURDER_VH_RAPT_BOMB, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_RAPT_CANNON, 1, NULL, INFO_DEATH_MURDER_VH_RAPT_CANNON, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_RAPT_DEATH, 1, NULL, INFO_DEATH_MURDER_VH_RAPT_DEATH, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_SPID_DEATH, 1, NULL, INFO_DEATH_MURDER_VH_SPID_DEATH, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_SPID_MINIGUN, 1, NULL, INFO_DEATH_MURDER_VH_SPID_MINIGUN, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_SPID_ROCKET, 1, NULL, INFO_DEATH_MURDER_VH_SPID_ROCKET, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_WAKI_DEATH, 1, NULL, INFO_DEATH_MURDER_VH_WAKI_DEATH, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_WAKI_GUN, 1, NULL, INFO_DEATH_MURDER_VH_WAKI_GUN, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VH_WAKI_ROCKET, 1, NULL, INFO_DEATH_MURDER_VH_WAKI_ROCKET, NULL) - MSG_MULTI_NOTIF(DEATH_MURDER_VOID, 1, NULL, INFO_DEATH_MURDER_VOID, NULL) - - MSG_MULTI_NOTIF(DEATH_SELF_AUTOTEAMCHANGE, 1, NULL, INFO_DEATH_SELF_AUTOTEAMCHANGE, CENTER_DEATH_SELF_AUTOTEAMCHANGE) - MSG_MULTI_NOTIF(DEATH_SELF_BETRAYAL, 1, NULL, INFO_DEATH_SELF_BETRAYAL, CENTER_DEATH_SELF_BETRAYAL) - MSG_MULTI_NOTIF(DEATH_SELF_CAMP, 1, NULL, INFO_DEATH_SELF_CAMP, CENTER_DEATH_SELF_CAMP) - MSG_MULTI_NOTIF(DEATH_SELF_CHEAT, 1, NULL, INFO_DEATH_SELF_CHEAT, CENTER_DEATH_SELF_CHEAT) - MSG_MULTI_NOTIF(DEATH_SELF_CUSTOM, 1, NULL, INFO_DEATH_SELF_GENERIC, CENTER_DEATH_SELF_CUSTOM) - MSG_MULTI_NOTIF(DEATH_SELF_DROWN, 1, NULL, INFO_DEATH_SELF_DROWN, CENTER_DEATH_SELF_DROWN) - MSG_MULTI_NOTIF(DEATH_SELF_FALL, 1, NULL, INFO_DEATH_SELF_FALL, CENTER_DEATH_SELF_FALL) - MSG_MULTI_NOTIF(DEATH_SELF_FIRE, 1, NULL, INFO_DEATH_SELF_FIRE, CENTER_DEATH_SELF_FIRE) - MSG_MULTI_NOTIF(DEATH_SELF_GENERIC, 1, NULL, INFO_DEATH_SELF_GENERIC, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(DEATH_SELF_LAVA, 1, NULL, INFO_DEATH_SELF_LAVA, CENTER_DEATH_SELF_LAVA) - MSG_MULTI_NOTIF(DEATH_SELF_MON_MAGE, 1, NULL, INFO_DEATH_SELF_MON_MAGE, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_CLAW, 1, NULL, INFO_DEATH_SELF_MON_GOLEM_CLAW, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_SMASH, 1, NULL, INFO_DEATH_SELF_MON_GOLEM_SMASH, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_ZAP, 1, NULL, INFO_DEATH_SELF_MON_GOLEM_ZAP, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_SPIDER, 1, NULL, INFO_DEATH_SELF_MON_SPIDER, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_WYVERN, 1, NULL, INFO_DEATH_SELF_MON_WYVERN, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_ZOMBIE_JUMP, 1, NULL, INFO_DEATH_SELF_MON_ZOMBIE_JUMP, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_ZOMBIE_MELEE, 1, NULL, INFO_DEATH_SELF_MON_ZOMBIE_MELEE, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_NADE, 1, NULL, INFO_DEATH_SELF_NADE, CENTER_DEATH_SELF_NADE) - MSG_MULTI_NOTIF(DEATH_SELF_NADE_NAPALM, 1, NULL, INFO_DEATH_SELF_NADE_NAPALM, CENTER_DEATH_SELF_NADE_NAPALM) - MSG_MULTI_NOTIF(DEATH_SELF_NADE_ICE, 1, NULL, INFO_DEATH_SELF_NADE_ICE, CENTER_DEATH_SELF_NADE_ICE_FREEZE) - MSG_MULTI_NOTIF(DEATH_SELF_NADE_ICE_FREEZE, 1, NULL, INFO_DEATH_SELF_NADE_ICE_FREEZE, CENTER_DEATH_SELF_NADE_ICE_FREEZE) - MSG_MULTI_NOTIF(DEATH_SELF_NADE_HEAL, 1, NULL, INFO_DEATH_SELF_NADE_HEAL, CENTER_DEATH_SELF_NADE_HEAL) - MSG_MULTI_NOTIF(DEATH_SELF_NOAMMO, 1, NULL, INFO_DEATH_SELF_NOAMMO, CENTER_DEATH_SELF_NOAMMO) - MSG_MULTI_NOTIF(DEATH_SELF_ROT, 1, NULL, INFO_DEATH_SELF_ROT, CENTER_DEATH_SELF_ROT) - MSG_MULTI_NOTIF(DEATH_SELF_SHOOTING_STAR, 1, NULL, INFO_DEATH_SELF_SHOOTING_STAR, CENTER_DEATH_SELF_SHOOTING_STAR) - MSG_MULTI_NOTIF(DEATH_SELF_SLIME, 1, NULL, INFO_DEATH_SELF_SLIME, CENTER_DEATH_SELF_SLIME) - MSG_MULTI_NOTIF(DEATH_SELF_SUICIDE, 1, NULL, INFO_DEATH_SELF_SUICIDE, CENTER_DEATH_SELF_SUICIDE) - MSG_MULTI_NOTIF(DEATH_SELF_SWAMP, 1, NULL, INFO_DEATH_SELF_SWAMP, CENTER_DEATH_SELF_SWAMP) - MSG_MULTI_NOTIF(DEATH_SELF_TEAMCHANGE, 1, NULL, INFO_DEATH_SELF_TEAMCHANGE, CENTER_DEATH_SELF_TEAMCHANGE) - MSG_MULTI_NOTIF(DEATH_SELF_TOUCHEXPLODE, 1, NULL, INFO_DEATH_SELF_TOUCHEXPLODE, CENTER_DEATH_SELF_TOUCHEXPLODE) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET, 1, NULL, INFO_DEATH_SELF_TURRET, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_EWHEEL, 1, NULL, INFO_DEATH_SELF_TURRET_EWHEEL, CENTER_DEATH_SELF_TURRET_EWHEEL) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_FLAC, 1, NULL, INFO_DEATH_SELF_TURRET_FLAC, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_HELLION, 1, NULL, INFO_DEATH_SELF_TURRET_HELLION, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_HK, 1, NULL, INFO_DEATH_SELF_TURRET_HK, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_MACHINEGUN, 1, NULL, INFO_DEATH_SELF_TURRET_MACHINEGUN, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_MLRS, 1, NULL, INFO_DEATH_SELF_TURRET_MLRS, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_PHASER, 1, NULL, INFO_DEATH_SELF_TURRET_PHASER, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_PLASMA, 1, NULL, INFO_DEATH_SELF_TURRET_PLASMA, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_TESLA, 1, NULL, INFO_DEATH_SELF_TURRET_TESLA, CENTER_DEATH_SELF_TURRET) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_WALK_GUN, 1, NULL, INFO_DEATH_SELF_TURRET_WALK_GUN, CENTER_DEATH_SELF_TURRET_WALK) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_WALK_MELEE, 1, NULL, INFO_DEATH_SELF_TURRET_WALK_MELEE, CENTER_DEATH_SELF_TURRET_WALK) - MSG_MULTI_NOTIF(DEATH_SELF_TURRET_WALK_ROCKET, 1, NULL, INFO_DEATH_SELF_TURRET_WALK_ROCKET, CENTER_DEATH_SELF_TURRET_WALK) - MSG_MULTI_NOTIF(DEATH_SELF_VH_BUMB_DEATH, 1, NULL, INFO_DEATH_SELF_VH_BUMB_DEATH, CENTER_DEATH_SELF_VH_BUMB_DEATH) - MSG_MULTI_NOTIF(DEATH_SELF_VH_CRUSH, 1, NULL, INFO_DEATH_SELF_VH_CRUSH, CENTER_DEATH_SELF_VH_CRUSH) - MSG_MULTI_NOTIF(DEATH_SELF_VH_RAPT_BOMB, 1, NULL, INFO_DEATH_SELF_VH_RAPT_BOMB, CENTER_DEATH_SELF_VH_RAPT_BOMB) - MSG_MULTI_NOTIF(DEATH_SELF_VH_RAPT_DEATH, 1, NULL, INFO_DEATH_SELF_VH_RAPT_DEATH, CENTER_DEATH_SELF_VH_RAPT_DEATH) - MSG_MULTI_NOTIF(DEATH_SELF_VH_SPID_DEATH, 1, NULL, INFO_DEATH_SELF_VH_SPID_DEATH, CENTER_DEATH_SELF_VH_SPID_DEATH) - MSG_MULTI_NOTIF(DEATH_SELF_VH_SPID_ROCKET, 1, NULL, INFO_DEATH_SELF_VH_SPID_ROCKET, CENTER_DEATH_SELF_VH_SPID_ROCKET) - MSG_MULTI_NOTIF(DEATH_SELF_VH_WAKI_DEATH, 1, NULL, INFO_DEATH_SELF_VH_WAKI_DEATH, CENTER_DEATH_SELF_VH_WAKI_DEATH) - MSG_MULTI_NOTIF(DEATH_SELF_VH_WAKI_ROCKET, 1, NULL, INFO_DEATH_SELF_VH_WAKI_ROCKET, CENTER_DEATH_SELF_VH_WAKI_ROCKET) - MSG_MULTI_NOTIF(DEATH_SELF_VOID, 1, NULL, INFO_DEATH_SELF_VOID, CENTER_DEATH_SELF_VOID) - - MSG_MULTI_NOTIF(ITEM_BUFF_DROP, 1, NULL, INFO_ITEM_BUFF_DROP, CENTER_ITEM_BUFF_DROP) - MSG_MULTI_NOTIF(ITEM_BUFF_GOT, 1, NULL, INFO_ITEM_BUFF_GOT, CENTER_ITEM_BUFF_GOT) - MSG_MULTI_NOTIF(ITEM_WEAPON_DONTHAVE, 1, NULL, INFO_ITEM_WEAPON_DONTHAVE, CENTER_ITEM_WEAPON_DONTHAVE) - MSG_MULTI_NOTIF(ITEM_WEAPON_DROP, 1, NULL, INFO_ITEM_WEAPON_DROP, CENTER_ITEM_WEAPON_DROP) - MSG_MULTI_NOTIF(ITEM_WEAPON_GOT, 1, NULL, INFO_ITEM_WEAPON_GOT, CENTER_ITEM_WEAPON_GOT) - MSG_MULTI_NOTIF(ITEM_WEAPON_NOAMMO, 1, NULL, INFO_ITEM_WEAPON_NOAMMO, CENTER_ITEM_WEAPON_NOAMMO) - MSG_MULTI_NOTIF(ITEM_WEAPON_PRIMORSEC, 1, NULL, INFO_ITEM_WEAPON_PRIMORSEC, CENTER_ITEM_WEAPON_PRIMORSEC) - MSG_MULTI_NOTIF(ITEM_WEAPON_UNAVAILABLE, 1, NULL, INFO_ITEM_WEAPON_UNAVAILABLE, CENTER_ITEM_WEAPON_UNAVAILABLE) - - MSG_MULTI_NOTIF(MULTI_COINTOSS, 1, NULL, INFO_COINTOSS, CENTER_COINTOSS) - MSG_MULTI_NOTIF(MULTI_COUNTDOWN_BEGIN, 1, ANNCE_BEGIN, NULL, CENTER_COUNTDOWN_BEGIN) - MSG_MULTI_NOTIF(MULTI_INSTAGIB_FINDAMMO, 1, ANNCE_NUM_10, NULL, CENTER_INSTAGIB_FINDAMMO_FIRST) - - MSG_MULTI_NOTIF(WEAPON_ACCORDEON_MURDER, 1, NULL, INFO_WEAPON_ACCORDEON_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_ACCORDEON_SUICIDE, 1, NULL, INFO_WEAPON_ACCORDEON_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_ARC_MURDER, 1, NULL, INFO_WEAPON_ARC_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_ARC_MURDER_SPRAY, 1, NULL, INFO_WEAPON_ARC_MURDER_SPRAY, NULL) - MSG_MULTI_NOTIF(WEAPON_BLASTER_MURDER, 1, NULL, INFO_WEAPON_BLASTER_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_BLASTER_SUICIDE, 1, NULL, INFO_WEAPON_BLASTER_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_CRYLINK_MURDER, 1, NULL, INFO_WEAPON_CRYLINK_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_CRYLINK_SUICIDE, 1, NULL, INFO_WEAPON_CRYLINK_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_DEVASTATOR_MURDER_DIRECT, 1, NULL, INFO_WEAPON_DEVASTATOR_MURDER_DIRECT, NULL) - MSG_MULTI_NOTIF(WEAPON_DEVASTATOR_MURDER_SPLASH, 1, NULL, INFO_WEAPON_DEVASTATOR_MURDER_SPLASH, NULL) - MSG_MULTI_NOTIF(WEAPON_DEVASTATOR_SUICIDE, 1, NULL, INFO_WEAPON_DEVASTATOR_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_ELECTRO_MURDER_BOLT, 1, NULL, INFO_WEAPON_ELECTRO_MURDER_BOLT, NULL) - MSG_MULTI_NOTIF(WEAPON_ELECTRO_MURDER_COMBO, 1, NULL, INFO_WEAPON_ELECTRO_MURDER_COMBO, NULL) - MSG_MULTI_NOTIF(WEAPON_ELECTRO_MURDER_ORBS, 1, NULL, INFO_WEAPON_ELECTRO_MURDER_ORBS, NULL) - MSG_MULTI_NOTIF(WEAPON_ELECTRO_SUICIDE_BOLT, 1, NULL, INFO_WEAPON_ELECTRO_SUICIDE_BOLT, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_ELECTRO_SUICIDE_ORBS, 1, NULL, INFO_WEAPON_ELECTRO_SUICIDE_ORBS, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_FIREBALL_MURDER_BLAST, 1, NULL, INFO_WEAPON_FIREBALL_MURDER_BLAST, NULL) - MSG_MULTI_NOTIF(WEAPON_FIREBALL_MURDER_FIREMINE, 1, NULL, INFO_WEAPON_FIREBALL_MURDER_FIREMINE, NULL) - MSG_MULTI_NOTIF(WEAPON_FIREBALL_SUICIDE_BLAST, 1, NULL, INFO_WEAPON_FIREBALL_SUICIDE_BLAST, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_FIREBALL_SUICIDE_FIREMINE, 1, NULL, INFO_WEAPON_FIREBALL_SUICIDE_FIREMINE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_HAGAR_MURDER_BURST, 1, NULL, INFO_WEAPON_HAGAR_MURDER_BURST, NULL) - MSG_MULTI_NOTIF(WEAPON_HAGAR_MURDER_SPRAY, 1, NULL, INFO_WEAPON_HAGAR_MURDER_SPRAY, NULL) - MSG_MULTI_NOTIF(WEAPON_HAGAR_SUICIDE, 1, NULL, INFO_WEAPON_HAGAR_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_HLAC_MURDER, 1, NULL, INFO_WEAPON_HLAC_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_HLAC_SUICIDE, 1, NULL, INFO_WEAPON_HLAC_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_HMG_MURDER_SNIPE, 1, NULL, INFO_WEAPON_HMG_MURDER_SNIPE, NULL) - MSG_MULTI_NOTIF(WEAPON_HMG_MURDER_SPRAY, 1, NULL, INFO_WEAPON_HMG_MURDER_SPRAY, NULL) - MSG_MULTI_NOTIF(WEAPON_HOOK_MURDER, 1, NULL, INFO_WEAPON_HOOK_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_KLEINBOTTLE_MURDER, 1, NULL, INFO_WEAPON_KLEINBOTTLE_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_KLEINBOTTLE_SUICIDE, 1, NULL, INFO_WEAPON_KLEINBOTTLE_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_MACHINEGUN_MURDER_SNIPE, 1, NULL, INFO_WEAPON_MACHINEGUN_MURDER_SNIPE, NULL) - MSG_MULTI_NOTIF(WEAPON_MACHINEGUN_MURDER_SPRAY, 1, NULL, INFO_WEAPON_MACHINEGUN_MURDER_SPRAY, NULL) - MSG_MULTI_NOTIF(WEAPON_MINELAYER_LIMIT, 1, NULL, INFO_WEAPON_MINELAYER_LIMIT, CENTER_WEAPON_MINELAYER_LIMIT) - MSG_MULTI_NOTIF(WEAPON_MINELAYER_MURDER, 1, NULL, INFO_WEAPON_MINELAYER_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_MINELAYER_SUICIDE, 1, NULL, INFO_WEAPON_MINELAYER_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_MORTAR_MURDER_BOUNCE, 1, NULL, INFO_WEAPON_MORTAR_MURDER_BOUNCE, NULL) - MSG_MULTI_NOTIF(WEAPON_MORTAR_MURDER_EXPLODE, 1, NULL, INFO_WEAPON_MORTAR_MURDER_EXPLODE, NULL) - MSG_MULTI_NOTIF(WEAPON_MORTAR_SUICIDE_BOUNCE, 1, NULL, INFO_WEAPON_MORTAR_SUICIDE_BOUNCE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_MORTAR_SUICIDE_EXPLODE, 1, NULL, INFO_WEAPON_MORTAR_SUICIDE_EXPLODE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER, 1, NULL, INFO_WEAPON_RIFLE_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER_HAIL, 1, NULL, INFO_WEAPON_RIFLE_MURDER_HAIL, NULL) - MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER_HAIL_PIERCING, 1, NULL, INFO_WEAPON_RIFLE_MURDER_HAIL_PIERCING, NULL) - MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER_PIERCING, 1, NULL, INFO_WEAPON_RIFLE_MURDER_PIERCING, NULL) - MSG_MULTI_NOTIF(WEAPON_RPC_MURDER_DIRECT, 1, NULL, INFO_WEAPON_RPC_MURDER_DIRECT, NULL) - MSG_MULTI_NOTIF(WEAPON_RPC_MURDER_SPLASH, 1, NULL, INFO_WEAPON_RPC_MURDER_SPLASH, NULL) - MSG_MULTI_NOTIF(WEAPON_RPC_SUICIDE_DIRECT, 1, NULL, INFO_WEAPON_RPC_SUICIDE_DIRECT, NULL) - MSG_MULTI_NOTIF(WEAPON_RPC_SUICIDE_SPLASH, 1, NULL, INFO_WEAPON_RPC_SUICIDE_SPLASH, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_SEEKER_MURDER_SPRAY, 1, NULL, INFO_WEAPON_SEEKER_MURDER_SPRAY, NULL) - MSG_MULTI_NOTIF(WEAPON_SEEKER_MURDER_TAG, 1, NULL, INFO_WEAPON_SEEKER_MURDER_TAG, NULL) - MSG_MULTI_NOTIF(WEAPON_SEEKER_SUICIDE, 1, NULL, INFO_WEAPON_SEEKER_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_SHOCKWAVE_MURDER, 1, NULL, INFO_WEAPON_SHOCKWAVE_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_SHOCKWAVE_MURDER_SLAP, 1, NULL, INFO_WEAPON_SHOCKWAVE_MURDER_SLAP, NULL) - MSG_MULTI_NOTIF(WEAPON_SHOTGUN_MURDER, 1, NULL, INFO_WEAPON_SHOTGUN_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_SHOTGUN_MURDER_SLAP, 1, NULL, INFO_WEAPON_SHOTGUN_MURDER_SLAP, NULL) - MSG_MULTI_NOTIF(WEAPON_THINKING_WITH_PORTALS, 1, NULL, INFO_WEAPON_THINKING_WITH_PORTALS, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_TUBA_MURDER, 1, NULL, INFO_WEAPON_TUBA_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_TUBA_SUICIDE, 1, NULL, INFO_WEAPON_TUBA_SUICIDE, CENTER_DEATH_SELF_GENERIC) - MSG_MULTI_NOTIF(WEAPON_VAPORIZER_MURDER, 1, NULL, INFO_WEAPON_VAPORIZER_MURDER, NULL) - MSG_MULTI_NOTIF(WEAPON_VORTEX_MURDER, 1, NULL, INFO_WEAPON_VORTEX_MURDER, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_BUFF, N_ENABLE, NULL, INFO_DEATH_MURDER_BUFF, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_CHEAT, N_ENABLE, NULL, INFO_DEATH_MURDER_CHEAT, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_DROWN, N_ENABLE, NULL, INFO_DEATH_MURDER_DROWN, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_FALL, N_ENABLE, NULL, INFO_DEATH_MURDER_FALL, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_FIRE, N_ENABLE, NULL, INFO_DEATH_MURDER_FIRE, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_LAVA, N_ENABLE, NULL, INFO_DEATH_MURDER_LAVA, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_MONSTER, N_ENABLE, NULL, INFO_DEATH_MURDER_MONSTER, CENTER_DEATH_SELF_MONSTER) + MSG_MULTI_NOTIF(DEATH_MURDER_NADE, N_ENABLE, NULL, INFO_DEATH_MURDER_NADE, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_NADE_NAPALM, N_ENABLE, NULL, INFO_DEATH_MURDER_NADE_NAPALM, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_NADE_ICE, N_ENABLE, NULL, INFO_DEATH_MURDER_NADE_ICE, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_NADE_ICE_FREEZE, N_ENABLE, NULL, INFO_DEATH_MURDER_NADE_ICE_FREEZE, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_NADE_HEAL, N_ENABLE, NULL, INFO_DEATH_MURDER_NADE_HEAL, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_SHOOTING_STAR, N_ENABLE, NULL, INFO_DEATH_MURDER_SHOOTING_STAR, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_SLIME, N_ENABLE, NULL, INFO_DEATH_MURDER_SLIME, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_SWAMP, N_ENABLE, NULL, INFO_DEATH_MURDER_SWAMP, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_TELEFRAG, N_ENABLE, NULL, INFO_DEATH_MURDER_TELEFRAG, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_TOUCHEXPLODE, N_ENABLE, NULL, INFO_DEATH_MURDER_TOUCHEXPLODE, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_BUMB_DEATH, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_BUMB_DEATH, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_BUMB_GUN, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_BUMB_GUN, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_CRUSH, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_CRUSH, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_RAPT_BOMB, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_RAPT_BOMB, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_RAPT_CANNON, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_RAPT_CANNON, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_RAPT_DEATH, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_RAPT_DEATH, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_SPID_DEATH, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_SPID_DEATH, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_SPID_MINIGUN, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_SPID_MINIGUN, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_SPID_ROCKET, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_SPID_ROCKET, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_WAKI_DEATH, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_WAKI_DEATH, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_WAKI_GUN, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_WAKI_GUN, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VH_WAKI_ROCKET, N_ENABLE, NULL, INFO_DEATH_MURDER_VH_WAKI_ROCKET, NULL) + MSG_MULTI_NOTIF(DEATH_MURDER_VOID, N_ENABLE, NULL, INFO_DEATH_MURDER_VOID, NULL) + + MSG_MULTI_NOTIF(DEATH_SELF_AUTOTEAMCHANGE, N_ENABLE, NULL, INFO_DEATH_SELF_AUTOTEAMCHANGE, CENTER_DEATH_SELF_AUTOTEAMCHANGE) + MSG_MULTI_NOTIF(DEATH_SELF_BETRAYAL, N_ENABLE, NULL, INFO_DEATH_SELF_BETRAYAL, CENTER_DEATH_SELF_BETRAYAL) + MSG_MULTI_NOTIF(DEATH_SELF_CAMP, N_ENABLE, NULL, INFO_DEATH_SELF_CAMP, CENTER_DEATH_SELF_CAMP) + MSG_MULTI_NOTIF(DEATH_SELF_CHEAT, N_ENABLE, NULL, INFO_DEATH_SELF_CHEAT, CENTER_DEATH_SELF_CHEAT) + MSG_MULTI_NOTIF(DEATH_SELF_CUSTOM, N_ENABLE, NULL, INFO_DEATH_SELF_GENERIC, CENTER_DEATH_SELF_CUSTOM) + MSG_MULTI_NOTIF(DEATH_SELF_DROWN, N_ENABLE, NULL, INFO_DEATH_SELF_DROWN, CENTER_DEATH_SELF_DROWN) + MSG_MULTI_NOTIF(DEATH_SELF_FALL, N_ENABLE, NULL, INFO_DEATH_SELF_FALL, CENTER_DEATH_SELF_FALL) + MSG_MULTI_NOTIF(DEATH_SELF_FIRE, N_ENABLE, NULL, INFO_DEATH_SELF_FIRE, CENTER_DEATH_SELF_FIRE) + MSG_MULTI_NOTIF(DEATH_SELF_GENERIC, N_ENABLE, NULL, INFO_DEATH_SELF_GENERIC, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(DEATH_SELF_LAVA, N_ENABLE, NULL, INFO_DEATH_SELF_LAVA, CENTER_DEATH_SELF_LAVA) + MSG_MULTI_NOTIF(DEATH_SELF_MON_MAGE, N_ENABLE, NULL, INFO_DEATH_SELF_MON_MAGE, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_SHAMBLER_CLAW, N_ENABLE, NULL, INFO_DEATH_SELF_MON_SHAMBLER_CLAW, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_SHAMBLER_SMASH, N_ENABLE, NULL, INFO_DEATH_SELF_MON_SHAMBLER_SMASH, CENTER_DEATH_SELF_MONSTER) - MSG_MULTI_NOTIF(DEATH_SELF_MON_SHAMBLER_ZAP, N_ENABLE, NULL, INFO_DEATH_SELF_MON_SHAMBLER_ZAP, CENTER_DEATH_SELF_MONSTER) ++ MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_CLAW, N_ENABLE, NULL, INFO_DEATH_SELF_MON_GOLEM_CLAW, CENTER_DEATH_SELF_MONSTER) ++ MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_SMASH, N_ENABLE, NULL, INFO_DEATH_SELF_MON_GOLEM_SMASH, CENTER_DEATH_SELF_MONSTER) ++ MSG_MULTI_NOTIF(DEATH_SELF_MON_GOLEM_ZAP, N_ENABLE, NULL, INFO_DEATH_SELF_MON_GOLEM_ZAP, CENTER_DEATH_SELF_MONSTER) + MSG_MULTI_NOTIF(DEATH_SELF_MON_SPIDER, N_ENABLE, NULL, INFO_DEATH_SELF_MON_SPIDER, CENTER_DEATH_SELF_MONSTER) + MSG_MULTI_NOTIF(DEATH_SELF_MON_WYVERN, N_ENABLE, NULL, INFO_DEATH_SELF_MON_WYVERN, CENTER_DEATH_SELF_MONSTER) + MSG_MULTI_NOTIF(DEATH_SELF_MON_ZOMBIE_JUMP, N_ENABLE, NULL, INFO_DEATH_SELF_MON_ZOMBIE_JUMP, CENTER_DEATH_SELF_MONSTER) + MSG_MULTI_NOTIF(DEATH_SELF_MON_ZOMBIE_MELEE, N_ENABLE, NULL, INFO_DEATH_SELF_MON_ZOMBIE_MELEE, CENTER_DEATH_SELF_MONSTER) + MSG_MULTI_NOTIF(DEATH_SELF_NADE, N_ENABLE, NULL, INFO_DEATH_SELF_NADE, CENTER_DEATH_SELF_NADE) + MSG_MULTI_NOTIF(DEATH_SELF_NADE_NAPALM, N_ENABLE, NULL, INFO_DEATH_SELF_NADE_NAPALM, CENTER_DEATH_SELF_NADE_NAPALM) + MSG_MULTI_NOTIF(DEATH_SELF_NADE_ICE, N_ENABLE, NULL, INFO_DEATH_SELF_NADE_ICE, CENTER_DEATH_SELF_NADE_ICE_FREEZE) + MSG_MULTI_NOTIF(DEATH_SELF_NADE_ICE_FREEZE, N_ENABLE, NULL, INFO_DEATH_SELF_NADE_ICE_FREEZE, CENTER_DEATH_SELF_NADE_ICE_FREEZE) + MSG_MULTI_NOTIF(DEATH_SELF_NADE_HEAL, N_ENABLE, NULL, INFO_DEATH_SELF_NADE_HEAL, CENTER_DEATH_SELF_NADE_HEAL) + MSG_MULTI_NOTIF(DEATH_SELF_NOAMMO, N_ENABLE, NULL, INFO_DEATH_SELF_NOAMMO, CENTER_DEATH_SELF_NOAMMO) + MSG_MULTI_NOTIF(DEATH_SELF_ROT, N_ENABLE, NULL, INFO_DEATH_SELF_ROT, CENTER_DEATH_SELF_ROT) + MSG_MULTI_NOTIF(DEATH_SELF_SHOOTING_STAR, N_ENABLE, NULL, INFO_DEATH_SELF_SHOOTING_STAR, CENTER_DEATH_SELF_SHOOTING_STAR) + MSG_MULTI_NOTIF(DEATH_SELF_SLIME, N_ENABLE, NULL, INFO_DEATH_SELF_SLIME, CENTER_DEATH_SELF_SLIME) + MSG_MULTI_NOTIF(DEATH_SELF_SUICIDE, N_ENABLE, NULL, INFO_DEATH_SELF_SUICIDE, CENTER_DEATH_SELF_SUICIDE) + MSG_MULTI_NOTIF(DEATH_SELF_SWAMP, N_ENABLE, NULL, INFO_DEATH_SELF_SWAMP, CENTER_DEATH_SELF_SWAMP) + MSG_MULTI_NOTIF(DEATH_SELF_TEAMCHANGE, N_ENABLE, NULL, INFO_DEATH_SELF_TEAMCHANGE, CENTER_DEATH_SELF_TEAMCHANGE) + MSG_MULTI_NOTIF(DEATH_SELF_TOUCHEXPLODE, N_ENABLE, NULL, INFO_DEATH_SELF_TOUCHEXPLODE, CENTER_DEATH_SELF_TOUCHEXPLODE) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_EWHEEL, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_EWHEEL, CENTER_DEATH_SELF_TURRET_EWHEEL) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_FLAC, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_FLAC, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_HELLION, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_HELLION, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_HK, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_HK, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_MACHINEGUN, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_MACHINEGUN, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_MLRS, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_MLRS, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_PHASER, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_PHASER, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_PLASMA, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_PLASMA, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_TESLA, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_TESLA, CENTER_DEATH_SELF_TURRET) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_WALK_GUN, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_WALK_GUN, CENTER_DEATH_SELF_TURRET_WALK) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_WALK_MELEE, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_WALK_MELEE, CENTER_DEATH_SELF_TURRET_WALK) + MSG_MULTI_NOTIF(DEATH_SELF_TURRET_WALK_ROCKET, N_ENABLE, NULL, INFO_DEATH_SELF_TURRET_WALK_ROCKET, CENTER_DEATH_SELF_TURRET_WALK) + MSG_MULTI_NOTIF(DEATH_SELF_VH_BUMB_DEATH, N_ENABLE, NULL, INFO_DEATH_SELF_VH_BUMB_DEATH, CENTER_DEATH_SELF_VH_BUMB_DEATH) + MSG_MULTI_NOTIF(DEATH_SELF_VH_CRUSH, N_ENABLE, NULL, INFO_DEATH_SELF_VH_CRUSH, CENTER_DEATH_SELF_VH_CRUSH) + MSG_MULTI_NOTIF(DEATH_SELF_VH_RAPT_BOMB, N_ENABLE, NULL, INFO_DEATH_SELF_VH_RAPT_BOMB, CENTER_DEATH_SELF_VH_RAPT_BOMB) + MSG_MULTI_NOTIF(DEATH_SELF_VH_RAPT_DEATH, N_ENABLE, NULL, INFO_DEATH_SELF_VH_RAPT_DEATH, CENTER_DEATH_SELF_VH_RAPT_DEATH) + MSG_MULTI_NOTIF(DEATH_SELF_VH_SPID_DEATH, N_ENABLE, NULL, INFO_DEATH_SELF_VH_SPID_DEATH, CENTER_DEATH_SELF_VH_SPID_DEATH) + MSG_MULTI_NOTIF(DEATH_SELF_VH_SPID_ROCKET, N_ENABLE, NULL, INFO_DEATH_SELF_VH_SPID_ROCKET, CENTER_DEATH_SELF_VH_SPID_ROCKET) + MSG_MULTI_NOTIF(DEATH_SELF_VH_WAKI_DEATH, N_ENABLE, NULL, INFO_DEATH_SELF_VH_WAKI_DEATH, CENTER_DEATH_SELF_VH_WAKI_DEATH) + MSG_MULTI_NOTIF(DEATH_SELF_VH_WAKI_ROCKET, N_ENABLE, NULL, INFO_DEATH_SELF_VH_WAKI_ROCKET, CENTER_DEATH_SELF_VH_WAKI_ROCKET) + MSG_MULTI_NOTIF(DEATH_SELF_VOID, N_ENABLE, NULL, INFO_DEATH_SELF_VOID, CENTER_DEATH_SELF_VOID) + + MSG_MULTI_NOTIF(ITEM_BUFF_DROP, N_ENABLE, NULL, INFO_ITEM_BUFF_DROP, CENTER_ITEM_BUFF_DROP) + MSG_MULTI_NOTIF(ITEM_BUFF_GOT, N_ENABLE, NULL, INFO_ITEM_BUFF_GOT, CENTER_ITEM_BUFF_GOT) + MSG_MULTI_NOTIF(ITEM_WEAPON_DONTHAVE, N_ENABLE, NULL, INFO_ITEM_WEAPON_DONTHAVE, CENTER_ITEM_WEAPON_DONTHAVE) + MSG_MULTI_NOTIF(ITEM_WEAPON_DROP, N_ENABLE, NULL, INFO_ITEM_WEAPON_DROP, CENTER_ITEM_WEAPON_DROP) + MSG_MULTI_NOTIF(ITEM_WEAPON_GOT, N_ENABLE, NULL, INFO_ITEM_WEAPON_GOT, CENTER_ITEM_WEAPON_GOT) + MSG_MULTI_NOTIF(ITEM_WEAPON_NOAMMO, N_ENABLE, NULL, INFO_ITEM_WEAPON_NOAMMO, CENTER_ITEM_WEAPON_NOAMMO) + MSG_MULTI_NOTIF(ITEM_WEAPON_PRIMORSEC, N_ENABLE, NULL, INFO_ITEM_WEAPON_PRIMORSEC, CENTER_ITEM_WEAPON_PRIMORSEC) + MSG_MULTI_NOTIF(ITEM_WEAPON_UNAVAILABLE, N_ENABLE, NULL, INFO_ITEM_WEAPON_UNAVAILABLE, CENTER_ITEM_WEAPON_UNAVAILABLE) + + MSG_MULTI_NOTIF(MULTI_COINTOSS, N_ENABLE, NULL, INFO_COINTOSS, CENTER_COINTOSS) + MSG_MULTI_NOTIF(MULTI_COUNTDOWN_BEGIN, N_ENABLE, ANNCE_BEGIN, NULL, CENTER_COUNTDOWN_BEGIN) + MSG_MULTI_NOTIF(MULTI_INSTAGIB_FINDAMMO, N_ENABLE, ANNCE_NUM_10, NULL, CENTER_INSTAGIB_FINDAMMO_FIRST) + + MSG_MULTI_NOTIF(WEAPON_ACCORDEON_MURDER, N_ENABLE, NULL, INFO_WEAPON_ACCORDEON_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_ACCORDEON_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_ACCORDEON_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_ARC_MURDER, N_ENABLE, NULL, INFO_WEAPON_ARC_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_ARC_MURDER_SPRAY, N_ENABLE, NULL, INFO_WEAPON_ARC_MURDER_SPRAY, NULL) + MSG_MULTI_NOTIF(WEAPON_BLASTER_MURDER, N_ENABLE, NULL, INFO_WEAPON_BLASTER_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_BLASTER_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_BLASTER_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_CRYLINK_MURDER, N_ENABLE, NULL, INFO_WEAPON_CRYLINK_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_CRYLINK_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_CRYLINK_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_DEVASTATOR_MURDER_DIRECT, N_ENABLE, NULL, INFO_WEAPON_DEVASTATOR_MURDER_DIRECT, NULL) + MSG_MULTI_NOTIF(WEAPON_DEVASTATOR_MURDER_SPLASH, N_ENABLE, NULL, INFO_WEAPON_DEVASTATOR_MURDER_SPLASH, NULL) + MSG_MULTI_NOTIF(WEAPON_DEVASTATOR_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_DEVASTATOR_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_ELECTRO_MURDER_BOLT, N_ENABLE, NULL, INFO_WEAPON_ELECTRO_MURDER_BOLT, NULL) + MSG_MULTI_NOTIF(WEAPON_ELECTRO_MURDER_COMBO, N_ENABLE, NULL, INFO_WEAPON_ELECTRO_MURDER_COMBO, NULL) + MSG_MULTI_NOTIF(WEAPON_ELECTRO_MURDER_ORBS, N_ENABLE, NULL, INFO_WEAPON_ELECTRO_MURDER_ORBS, NULL) + MSG_MULTI_NOTIF(WEAPON_ELECTRO_SUICIDE_BOLT, N_ENABLE, NULL, INFO_WEAPON_ELECTRO_SUICIDE_BOLT, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_ELECTRO_SUICIDE_ORBS, N_ENABLE, NULL, INFO_WEAPON_ELECTRO_SUICIDE_ORBS, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_FIREBALL_MURDER_BLAST, N_ENABLE, NULL, INFO_WEAPON_FIREBALL_MURDER_BLAST, NULL) + MSG_MULTI_NOTIF(WEAPON_FIREBALL_MURDER_FIREMINE, N_ENABLE, NULL, INFO_WEAPON_FIREBALL_MURDER_FIREMINE, NULL) + MSG_MULTI_NOTIF(WEAPON_FIREBALL_SUICIDE_BLAST, N_ENABLE, NULL, INFO_WEAPON_FIREBALL_SUICIDE_BLAST, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_FIREBALL_SUICIDE_FIREMINE, N_ENABLE, NULL, INFO_WEAPON_FIREBALL_SUICIDE_FIREMINE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_HAGAR_MURDER_BURST, N_ENABLE, NULL, INFO_WEAPON_HAGAR_MURDER_BURST, NULL) + MSG_MULTI_NOTIF(WEAPON_HAGAR_MURDER_SPRAY, N_ENABLE, NULL, INFO_WEAPON_HAGAR_MURDER_SPRAY, NULL) + MSG_MULTI_NOTIF(WEAPON_HAGAR_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_HAGAR_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_HLAC_MURDER, N_ENABLE, NULL, INFO_WEAPON_HLAC_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_HLAC_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_HLAC_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_HMG_MURDER_SNIPE, N_ENABLE, NULL, INFO_WEAPON_HMG_MURDER_SNIPE, NULL) + MSG_MULTI_NOTIF(WEAPON_HMG_MURDER_SPRAY, N_ENABLE, NULL, INFO_WEAPON_HMG_MURDER_SPRAY, NULL) + MSG_MULTI_NOTIF(WEAPON_HOOK_MURDER, N_ENABLE, NULL, INFO_WEAPON_HOOK_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_KLEINBOTTLE_MURDER, N_ENABLE, NULL, INFO_WEAPON_KLEINBOTTLE_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_KLEINBOTTLE_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_KLEINBOTTLE_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_MACHINEGUN_MURDER_SNIPE, N_ENABLE, NULL, INFO_WEAPON_MACHINEGUN_MURDER_SNIPE, NULL) + MSG_MULTI_NOTIF(WEAPON_MACHINEGUN_MURDER_SPRAY, N_ENABLE, NULL, INFO_WEAPON_MACHINEGUN_MURDER_SPRAY, NULL) + MSG_MULTI_NOTIF(WEAPON_MINELAYER_LIMIT, N_ENABLE, NULL, INFO_WEAPON_MINELAYER_LIMIT, CENTER_WEAPON_MINELAYER_LIMIT) + MSG_MULTI_NOTIF(WEAPON_MINELAYER_MURDER, N_ENABLE, NULL, INFO_WEAPON_MINELAYER_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_MINELAYER_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_MINELAYER_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_MORTAR_MURDER_BOUNCE, N_ENABLE, NULL, INFO_WEAPON_MORTAR_MURDER_BOUNCE, NULL) + MSG_MULTI_NOTIF(WEAPON_MORTAR_MURDER_EXPLODE, N_ENABLE, NULL, INFO_WEAPON_MORTAR_MURDER_EXPLODE, NULL) + MSG_MULTI_NOTIF(WEAPON_MORTAR_SUICIDE_BOUNCE, N_ENABLE, NULL, INFO_WEAPON_MORTAR_SUICIDE_BOUNCE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_MORTAR_SUICIDE_EXPLODE, N_ENABLE, NULL, INFO_WEAPON_MORTAR_SUICIDE_EXPLODE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER, N_ENABLE, NULL, INFO_WEAPON_RIFLE_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER_HAIL, N_ENABLE, NULL, INFO_WEAPON_RIFLE_MURDER_HAIL, NULL) + MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER_HAIL_PIERCING, N_ENABLE, NULL, INFO_WEAPON_RIFLE_MURDER_HAIL_PIERCING, NULL) + MSG_MULTI_NOTIF(WEAPON_RIFLE_MURDER_PIERCING, N_ENABLE, NULL, INFO_WEAPON_RIFLE_MURDER_PIERCING, NULL) + MSG_MULTI_NOTIF(WEAPON_RPC_MURDER_DIRECT, N_ENABLE, NULL, INFO_WEAPON_RPC_MURDER_DIRECT, NULL) + MSG_MULTI_NOTIF(WEAPON_RPC_MURDER_SPLASH, N_ENABLE, NULL, INFO_WEAPON_RPC_MURDER_SPLASH, NULL) + MSG_MULTI_NOTIF(WEAPON_RPC_SUICIDE_DIRECT, N_ENABLE, NULL, INFO_WEAPON_RPC_SUICIDE_DIRECT, NULL) + MSG_MULTI_NOTIF(WEAPON_RPC_SUICIDE_SPLASH, N_ENABLE, NULL, INFO_WEAPON_RPC_SUICIDE_SPLASH, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_SEEKER_MURDER_SPRAY, N_ENABLE, NULL, INFO_WEAPON_SEEKER_MURDER_SPRAY, NULL) + MSG_MULTI_NOTIF(WEAPON_SEEKER_MURDER_TAG, N_ENABLE, NULL, INFO_WEAPON_SEEKER_MURDER_TAG, NULL) + MSG_MULTI_NOTIF(WEAPON_SEEKER_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_SEEKER_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_SHOCKWAVE_MURDER, N_ENABLE, NULL, INFO_WEAPON_SHOCKWAVE_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_SHOCKWAVE_MURDER_SLAP, N_ENABLE, NULL, INFO_WEAPON_SHOCKWAVE_MURDER_SLAP, NULL) + MSG_MULTI_NOTIF(WEAPON_SHOTGUN_MURDER, N_ENABLE, NULL, INFO_WEAPON_SHOTGUN_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_SHOTGUN_MURDER_SLAP, N_ENABLE, NULL, INFO_WEAPON_SHOTGUN_MURDER_SLAP, NULL) + MSG_MULTI_NOTIF(WEAPON_THINKING_WITH_PORTALS, N_ENABLE, NULL, INFO_WEAPON_THINKING_WITH_PORTALS, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_TUBA_MURDER, N_ENABLE, NULL, INFO_WEAPON_TUBA_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_TUBA_SUICIDE, N_ENABLE, NULL, INFO_WEAPON_TUBA_SUICIDE, CENTER_DEATH_SELF_GENERIC) + MSG_MULTI_NOTIF(WEAPON_VAPORIZER_MURDER, N_ENABLE, NULL, INFO_WEAPON_VAPORIZER_MURDER, NULL) + MSG_MULTI_NOTIF(WEAPON_VORTEX_MURDER, N_ENABLE, NULL, INFO_WEAPON_VORTEX_MURDER, NULL) #define MULTITEAM_CHOICE2(prefix, default, challow, chtype, optiona, optionb) \ MSG_CHOICE_NOTIF_TEAM(NUM_TEAM_1, prefix##_RED, prefix, default, challow, chtype, optiona##_RED, optionb##_RED) \ diff --cc scripts/golem.shader index 0000000000,0000000000..5ccfd24e2c new file mode 100644 --- /dev/null +++ b/scripts/golem.shader @@@ -1,0 -1,0 +1,8 @@@ ++golem ++{ ++ dpreflectcube cubemaps/default/sky ++ { ++ map textures/golem.tga ++ rgbgen lightingDiffuse ++ } ++} diff --cc scripts/nanomage.shader index 0000000000,0000000000..c0bd334731 new file mode 100644 --- /dev/null +++ b/scripts/nanomage.shader @@@ -1,0 -1,0 +1,8 @@@ ++nanomage ++{ ++ dpreflectcube cubemaps/default/sky ++ { ++ map textures/nanomage.tga ++ rgbgen lightingDiffuse ++ } ++} diff --cc scripts/spider.shader index 0000000000,0000000000..ed479600e6 new file mode 100644 --- /dev/null +++ b/scripts/spider.shader @@@ -1,0 -1,0 +1,8 @@@ ++spider ++{ ++ dpreflectcube cubemaps/default/sky ++ { ++ map textures/spider.tga ++ rgbgen lightingDiffuse ++ } ++} diff --cc sound/monsters/troll/death1.wav index 0000000000,0000000000..211656ad8c new file mode 100644 Binary files differ diff --cc sound/monsters/troll/death2.wav index 0000000000,0000000000..bd6882637d new file mode 100644 Binary files differ diff --cc sound/monsters/troll/death3.wav index 0000000000,0000000000..09608f53f0 new file mode 100644 Binary files differ diff --cc sound/monsters/troll/idle1.wav index 0000000000,0000000000..cc67c222f0 new file mode 100644 Binary files differ diff --cc sound/monsters/troll/idle2.wav index 0000000000,0000000000..478913d6ad new file mode 100644 Binary files differ diff --cc sound/monsters/troll/melee.wav index 0000000000,0000000000..cc67c222f0 new file mode 100644 Binary files differ diff --cc sound/monsters/troll/pain1.wav index 0000000000,0000000000..328dafc55c new file mode 100644 Binary files differ diff --cc sound/monsters/troll/pain2.wav index 0000000000,0000000000..2c056bdcf5 new file mode 100644 Binary files differ diff --cc sound/monsters/troll/sight.wav index 0000000000,0000000000..85e5682fc9 new file mode 100644 Binary files differ diff --cc textures/forest-monster-skin1.jpg index 0000000000,0000000000..6a227d0409 new file mode 100644 Binary files differ diff --cc textures/forest-monster-skin1_norm.jpg index 0000000000,0000000000..142823e09d new file mode 100644 Binary files differ diff --cc textures/forest-monster-skin1_pants.jpg index 0000000000,0000000000..61f6667422 new file mode 100644 Binary files differ diff --cc textures/forest-monster-skin1_spec.jpg index 0000000000,0000000000..14e57c51cd new file mode 100644 Binary files differ diff --cc textures/glow_reflect.tga index 0000000000,0000000000..6615d49cae new file mode 100644 Binary files differ diff --cc textures/golem.tga index 0000000000,0000000000..83456ae5f4 new file mode 100644 Binary files differ diff --cc textures/golem_gloss.tga index 0000000000,0000000000..b6a110f653 new file mode 100644 Binary files differ diff --cc textures/golem_glow.tga index 0000000000,0000000000..4ab4a365fb new file mode 100644 Binary files differ diff --cc textures/golem_norm.tga index 0000000000,0000000000..cbd684458a new file mode 100644 Binary files differ diff --cc textures/golem_reflect.tga index 0000000000,0000000000..fc26699a9f new file mode 100644 Binary files differ diff --cc textures/golem_shirt.tga index 0000000000,0000000000..82c232a9fd new file mode 100644 Binary files differ diff --cc textures/mage.tga index 55aadbaffa,55aadbaffa..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc textures/mage_glow.tga index 8498c467f0,8498c467f0..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc textures/mage_pants.tga index a3d2e132bc,a3d2e132bc..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc textures/monsters/Dragon.tga index 0000000000,0000000000..69bc82fb55 new file mode 100644 Binary files differ diff --cc textures/monsters/Dragon_Norm.tga index 0000000000,0000000000..3f749b10ba new file mode 100644 Binary files differ diff --cc textures/monsters/Dragon_Shirt.tga index 0000000000,0000000000..5cdb81bbf7 new file mode 100644 Binary files differ diff --cc textures/monsters/Dragon_Spec.tga index 0000000000,0000000000..60cafa4bd0 new file mode 100644 Binary files differ diff --cc textures/nanomage.tga index 0000000000,0000000000..151ee1f60d new file mode 100644 Binary files differ diff --cc textures/nanomage_gloss.tga index 0000000000,0000000000..1a717a2c48 new file mode 100644 Binary files differ diff --cc textures/nanomage_glow.tga index 0000000000,0000000000..e380ce8373 new file mode 100644 Binary files differ diff --cc textures/nanomage_norm.tga index 0000000000,0000000000..06aae48fdd new file mode 100644 Binary files differ diff --cc textures/nanomage_reflect.tga index 0000000000,0000000000..0baed7eb8f new file mode 100644 Binary files differ diff --cc textures/nanomage_shirt.tga index 0000000000,0000000000..1665ca51ea new file mode 100644 Binary files differ diff --cc textures/spider.tga index 0000000000,0000000000..61215a8d1a new file mode 100644 Binary files differ diff --cc textures/spider_gloss.tga index 0000000000,0000000000..cf5a79daac new file mode 100644 Binary files differ diff --cc textures/spider_glow.tga index 0000000000,0000000000..25cfcf3e3b new file mode 100644 Binary files differ diff --cc textures/spider_norm.tga index 0000000000,0000000000..0438279d63 new file mode 100644 Binary files differ diff --cc textures/spider_reflect.tga index 0000000000,0000000000..6ebe87440a new file mode 100644 Binary files differ diff --cc textures/spider_shirt.tga index 0000000000,0000000000..c774996794 new file mode 100644 Binary files differ diff --cc textures/spidertex.tga index c1c40c0dee,c1c40c0dee..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc textures/spidertex_glow.tga index 8c7d3dc8ee,8c7d3dc8ee..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc textures/spidertex_pants.tga index 09263af9b1,09263af9b1..0000000000 deleted file mode 100644,100644 Binary files differ diff --cc textures/tree.tga index 0000000000,0000000000..8fa7816654 new file mode 100644 Binary files differ diff --cc textures/tree_norm.tga index 0000000000,0000000000..3bef163bee new file mode 100644 Binary files differ diff --cc textures/tree_spec.tga index 0000000000,0000000000..6a44d55e29 new file mode 100644 Binary files differ