From: Mario Date: Mon, 29 Apr 2013 18:50:02 +0000 (+1000) Subject: Remove marine X-Git-Tag: xonotic-v0.8.0~241^2^2~261 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=530cf677ae1785b47188c83b6d01ca71b46b98f3;p=xonotic%2Fxonotic-data.pk3dir.git Remove marine --- diff --git a/models/monsters/marine.zym b/models/monsters/marine.zym deleted file mode 100644 index 1615af482..000000000 Binary files a/models/monsters/marine.zym and /dev/null differ diff --git a/monsters.cfg b/monsters.cfg index 967581040..fd9e198f6 100644 --- a/monsters.cfg +++ b/monsters.cfg @@ -25,7 +25,7 @@ set g_monsters_skill_normal 4 "Monster normal skill level (used for skill based set g_monsters_skill_hard 5 "Monster hard skill level (used for skill based functions)" set g_monsters_skill_insane 7 "Monster insane skill level (used for skill based functions)" set g_monsters_skill_nightmare 10 "Monster nightmare skill level (used for skill based functions)" -set g_monsters_spawn_list "ogre animus shambler bruiser marine wyvern cerberus slime knight fish mage zombie spider" "monsters not listed here will spawn as bruisers" +set g_monsters_spawn_list "ogre animus shambler bruiser wyvern cerberus slime knight fish mage zombie spider" "monsters not listed here will spawn as bruisers" // Ogre set g_monster_ogre 1 "Enable Ogres" @@ -75,39 +75,6 @@ set g_monster_bruiser_melee_side_damage 10 "Bruiser melee attack side damage" set g_monster_bruiser_speed_walk 40 "Bruiser walk speed" set g_monster_bruiser_speed_run 70 "Bruiser run speed" -// Marine -set g_monster_marine 1 "Enable Marines" -set g_monster_marine_health 100 "Marine Health" -set g_monster_marine_drop ammo "Marine drops this item on death" -set g_monster_marine_drop_size shells "Size of the item Marines drop. Possible values are: small, medium, large" -set g_monster_marine_melee_damage 20 "Marine melee attack damage" -set g_monster_marine_speed_walk 75 "Marine walk speed" -set g_monster_marine_speed_run 100 "Marine run speed" -set g_monster_marine_ammo 5 "Marine weapon ammo" -set g_monster_marine_weapon_laser_chance 6 "Chance of Marine weapon being laser" -set g_monster_marine_weapon_shotgun_chance 8 "Chance of Marine weapon being shotgun" -set g_monster_marine_weapon_machinegun_chance 4 "Chance of Marine weapon being machine gun" -set g_monster_marine_weapon_rocketlauncher_chance 2 "Chance of Marine weapon being rocket launcher" -set g_monster_marine_attack_uzi_bullets 3 "Number of machine gun bullets Marine fires" -set g_monster_marine_attack_uzi_damage 10 "Marine machine gun damage per bullet" -set g_monster_marine_attack_uzi_force 5 "Marine machine gun knockback" -set g_monster_marine_attack_shotgun_damage 4 "Marine shotgun per bullet damage" -set g_monster_marine_attack_shotgun_spread 0.2 "Marine shotgun bullet spread" -set g_monster_marine_attack_shotgun_bullets 12 "Marine shotgun bullets per shot" -set g_monster_marine_attack_shotgun_force 5 "Marine shotgun knockback" -set g_monster_marine_attack_rocket_damage 50 "Marine rocket direct hit damage" -set g_monster_marine_attack_rocket_edgedamage 25 "Marine rocket indirect hit damage" -set g_monster_marine_attack_rocket_radius 110 "Marine rocket explosion radius" -set g_monster_marine_attack_rocket_force 25 "Marine rocket knockback" -set g_monster_marine_attack_rocket_lifetime 5 "Marine rocket lifetime" -set g_monster_marine_attack_rocket_speed 2000 "Marine rocket fly speed" -set g_monster_marine_attack_laser_damage 15 "Marine laser damage" -set g_monster_marine_attack_laser_edgedamage 7 "Marine laser indirect hit damage" -set g_monster_marine_attack_laser_radius 50 "Marine laser damage radius" -set g_monster_marine_attack_laser_force 300 "Marine laser knockback" -set g_monster_marine_attack_laser_speed 2000 "Marine laser projectile speed" -set g_monster_marine_attack_laser_spread 0 "Marine laser projectile spread" - // Wyvern set g_monster_wyvern 1 "Enable Wyverns" set g_monster_wyvern_health 80 "Wyvern health" diff --git a/qcsrc/client/monsters.qc b/qcsrc/client/monsters.qc index 725c2f057..ff2a3d00e 100644 --- a/qcsrc/client/monsters.qc +++ b/qcsrc/client/monsters.qc @@ -39,16 +39,6 @@ void monster_precache(float _mid) precache_model(BRUISER_MODEL); break; } - case MONSTER_MARINE: - { - precache_model(MARINE_MODEL); - precache_sound("weapons/shotgun_fire.wav"); - precache_sound("weapons/uzi_fire.wav"); - precache_sound("weapons/laser_fire.wav"); - precache_sound("weapons/reload.wav"); - precache_model("models/weapons/v_seeker.md3"); - break; - } case MONSTER_WYVERN: { precache_model(WYVERN_MODEL); @@ -144,14 +134,6 @@ void monster_mid2info(float _mid) if(self) self.scale = 1.3; break; } - case MONSTER_MARINE: - { - mid2info_model = MARINE_MODEL; - mid2info_name = "Marine"; - mid2info_min = MARINE_MIN; - mid2info_max = MARINE_MAX; - break; - } case MONSTER_WYVERN: { mid2info_model = WYVERN_MODEL; diff --git a/qcsrc/common/deathtypes.qh b/qcsrc/common/deathtypes.qh index 89affd1af..1a8eca952 100644 --- a/qcsrc/common/deathtypes.qh +++ b/qcsrc/common/deathtypes.qh @@ -32,8 +32,6 @@ DEATHTYPE(DEATH_MONSTER_SHAMBLER_CLAW, DEATH_SELF_MON_SHAMBLER_CLAW, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_MONSTER_SHAMBLER_SMASH, DEATH_SELF_MON_SHAMBLER_SMASH, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_MONSTER_SHAMBLER_ZAP, DEATH_SELF_MON_SHAMBLER_ZAP, NO_MSG, NORMAL_POS) \ - DEATHTYPE(DEATH_MONSTER_MARINE, DEATH_SELF_MON_MARINE, NO_MSG, NORMAL_POS) \ - DEATHTYPE(DEATH_MONSTER_MARINE_SLAP, DEATH_SELF_MON_MARINE_SLAP, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_MONSTER_SPIDER, DEATH_SELF_MON_SPIDER, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_MONSTER_SPIDER_FIRE, DEATH_SELF_MON_SPIDER_FIRE, NO_MSG, NORMAL_POS) \ DEATHTYPE(DEATH_MONSTER_SLIME, DEATH_SELF_MON_SLIME, NO_MSG, NORMAL_POS) \ diff --git a/qcsrc/common/notifications.qh b/qcsrc/common/notifications.qh index 1429242c3..afff4cba0 100644 --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@ -308,8 +308,6 @@ void Send_Notification_WOVA( MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_CLAW, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1's innards became outwards by a Shambler%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_SMASH, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was smashed by a Shambler%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_ZAP, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was zapped to death by a Shambler%s%s\n"), "") \ - MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_MARINE_SLAP, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was slapped to death by a Marine%s%s\n"), "") \ - MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_MARINE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was gunned down by a Marine%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SPIDER, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was bitten by a Spider%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SPIDER_FIRE, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was incinerated by a Spider%s%s\n"), "") \ MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SLIME, 2, 1, "s1 s2loc spree_lost", "s1", "notify_death", _("^BG%s^K1 was blown up by a Slime%s%s\n"), "") \ @@ -664,8 +662,6 @@ void Send_Notification_WOVA( MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_CLAW, NO_MSG, INFO_DEATH_SELF_MON_SHAMBLER_CLAW, CENTER_DEATH_SELF_MONSTER) \ MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_SMASH, NO_MSG, INFO_DEATH_SELF_MON_SHAMBLER_SMASH, CENTER_DEATH_SELF_MONSTER) \ MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_ZAP, NO_MSG, INFO_DEATH_SELF_MON_SHAMBLER_ZAP, CENTER_DEATH_SELF_MONSTER) \ - MSG_MULTI_NOTIF(1, DEATH_SELF_MON_MARINE_SLAP, NO_MSG, INFO_DEATH_SELF_MON_MARINE_SLAP, CENTER_DEATH_SELF_MONSTER) \ - MSG_MULTI_NOTIF(1, DEATH_SELF_MON_MARINE, NO_MSG, INFO_DEATH_SELF_MON_MARINE, CENTER_DEATH_SELF_MONSTER) \ MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SPIDER, NO_MSG, INFO_DEATH_SELF_MON_SPIDER, CENTER_DEATH_SELF_MONSTER) \ MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SPIDER_FIRE, NO_MSG, INFO_DEATH_SELF_MON_SPIDER_FIRE, CENTER_DEATH_SELF_MONSTER) \ MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SLIME, NO_MSG, INFO_DEATH_SELF_MON_SLIME, CENTER_DEATH_SELF_MONSTER) \ diff --git a/qcsrc/menu/xonotic/dialog_monstertools.c b/qcsrc/menu/xonotic/dialog_monstertools.c index 7d5228a1b..5cdbeac7f 100644 --- a/qcsrc/menu/xonotic/dialog_monstertools.c +++ b/qcsrc/menu/xonotic/dialog_monstertools.c @@ -25,7 +25,6 @@ void XonoticMonsterToolsDialog_fill(entity me) me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "bruiser", _("Bruiser"))); me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "knight", _("Knight"))); me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "shambler", _("Shambler"))); - me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "marine", _("Marine"))); me.TR(me); me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "cerberus", _("Cerberus"))); me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "slime", _("Slime"))); diff --git a/qcsrc/server/monsters/lib/monsters_early.qh b/qcsrc/server/monsters/lib/monsters_early.qh index 12c9184b1..4d2786459 100644 --- a/qcsrc/server/monsters/lib/monsters_early.qh +++ b/qcsrc/server/monsters/lib/monsters_early.qh @@ -27,15 +27,14 @@ float MONSTER_OGRE = 3; float MONSTER_ANIMUS = 4; float MONSTER_SHAMBLER = 5; float MONSTER_BRUISER = 6; -float MONSTER_MARINE = 7; -float MONSTER_WYVERN = 8; -float MONSTER_CERBERUS = 9; -float MONSTER_SLIME = 10; -float MONSTER_KNIGHT = 11; -float MONSTER_FISH = 12; -float MONSTER_MAGE = 13; -float MONSTER_SPIDER = 14; -float MONSTER_LAST = 15; +float MONSTER_WYVERN = 7; +float MONSTER_CERBERUS = 8; +float MONSTER_SLIME = 9; +float MONSTER_KNIGHT = 10; +float MONSTER_FISH = 11; +float MONSTER_MAGE = 12; +float MONSTER_SPIDER = 13; +float MONSTER_LAST = 14; float MSF_UPDATE = 2; float MSF_STATUS = 4; diff --git a/qcsrc/server/monsters/monster/marine.qc b/qcsrc/server/monsters/monster/marine.qc deleted file mode 100644 index 6560ae8e4..000000000 --- a/qcsrc/server/monsters/monster/marine.qc +++ /dev/null @@ -1,387 +0,0 @@ -// size -const vector MARINE_MIN = '-16 -16 -30'; -const vector MARINE_MAX = '16 16 32'; - -// model -string MARINE_MODEL = "models/monsters/marine.zym"; - -#ifdef SVQC -// cvars -float autocvar_g_monster_marine; -float autocvar_g_monster_marine_health; -float autocvar_g_monster_marine_melee_damage; -float autocvar_g_monster_marine_speed_walk; -float autocvar_g_monster_marine_speed_run; -float autocvar_g_monster_marine_ammo; -float autocvar_g_monster_marine_weapon_laser_chance; -float autocvar_g_monster_marine_weapon_shotgun_chance; -float autocvar_g_monster_marine_weapon_machinegun_chance; -float autocvar_g_monster_marine_weapon_rocketlauncher_chance; -float autocvar_g_monster_marine_attack_uzi_bullets; -float autocvar_g_monster_marine_attack_uzi_damage; -float autocvar_g_monster_marine_attack_uzi_force; -float autocvar_g_monster_marine_attack_shotgun_damage; -float autocvar_g_monster_marine_attack_shotgun_force; -float autocvar_g_monster_marine_attack_shotgun_spread; -float autocvar_g_monster_marine_attack_shotgun_bullets; -float autocvar_g_monster_marine_attack_rocket_damage; -float autocvar_g_monster_marine_attack_rocket_edgedamage; -float autocvar_g_monster_marine_attack_rocket_radius; -float autocvar_g_monster_marine_attack_rocket_force; -float autocvar_g_monster_marine_attack_rocket_lifetime; -float autocvar_g_monster_marine_attack_rocket_speed; -float autocvar_g_monster_marine_attack_laser_damage; -float autocvar_g_monster_marine_attack_laser_edgedamage; -float autocvar_g_monster_marine_attack_laser_radius; -float autocvar_g_monster_marine_attack_laser_force; - -// animations -const float marine_anim_die1 = 0; -const float marine_anim_die2 = 1; -const float marine_anim_draw = 2; -const float marine_anim_duck = 3; -const float marine_anim_duckwalk = 4; -const float marine_anim_duckjump = 5; -const float marine_anim_duckidle = 6; -const float marine_anim_idle = 7; -const float marine_anim_jump = 8; -const float marine_anim_pain1 = 9; -const float marine_anim_pain2 = 10; -const float marine_anim_shoot = 11; -const float marine_anim_taunt = 12; -const float marine_anim_run = 13; -const float marine_anim_runbackwards = 14; -const float marine_anim_strafeleft = 15; -const float marine_anim_straferight = 16; -const float marine_anim_dead1 = 17; -const float marine_anim_dead2 = 18; -const float marine_anim_forwardright = 19; -const float marine_anim_forwardleft = 20; -const float marine_anim_backright = 21; -const float marine_anim_backleft = 22; - -.float marine_cycles; - -void marine_think() -{ - self.think = marine_think; - self.nextthink = time + self.ticrate; - - if(time < self.attack_finished_single) - monster_move(0, 0, 0, marine_anim_shoot, marine_anim_shoot, marine_anim_shoot); - else - monster_move(autocvar_g_monster_marine_speed_run, autocvar_g_monster_marine_speed_walk, 50, marine_anim_run, marine_anim_run, marine_anim_idle); -} - -void marine_reload() -{ - self.monster_delayedattack = func_null; // out of ammo, don't keep attacking - self.delay = -1; - monsters_setframe(marine_anim_draw); - self.attack_finished_single = time + 2; - self.currentammo = autocvar_g_monster_marine_ammo; - sound (self, CH_SHOTS, "weapons/reload.wav", VOL_BASE, ATTN_LARGE); -} - -void marine_uzi() -{ - self.currentammo -= 1; - if(self.currentammo <= 0) - { - marine_reload(); - return; - } - - self.marine_cycles += 1; - - if(self.marine_cycles > autocvar_g_monster_marine_attack_uzi_bullets) - { - self.monster_delayedattack = func_null; - self.delay = -1; - return; - } - - monster_makevectors(self.enemy); - - W_SetupShot(self, autocvar_g_antilag_bullets && 18000 >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_monster_marine_attack_uzi_damage); - fireBallisticBullet(w_shotorg, w_shotdir, 0.02, 18000, 5, autocvar_g_monster_marine_attack_uzi_damage, autocvar_g_monster_marine_attack_uzi_force, DEATH_MONSTER_MARINE, 0, 1, 115); - endFireBallisticBullet(); - - self.delay = time + 0.1; - self.monster_delayedattack = marine_uzi; -} - -void marine_rocket_explode() -{ - self.event_damage = func_null; - self.takedamage = DAMAGE_NO; - - pointparticles(particleeffectnum("rocket_explode"), self.origin, '0 0 0', 1); - sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); - - RadiusDamage(self, self.realowner, autocvar_g_monster_marine_attack_rocket_damage, autocvar_g_monster_marine_attack_rocket_edgedamage, autocvar_g_monster_marine_attack_rocket_radius, world, autocvar_g_monster_marine_attack_rocket_force, self.projectiledeathtype, other); - - remove(self); -} - -void marine_rocket_touch() -{ - PROJECTILE_TOUCH; - - marine_rocket_explode(); -} - -void marine_rocket_think() -{ - self.nextthink = time; - if(time >= self.cnt) - { - marine_rocket_explode(); - return; - } -} - -void marine_rocket_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) -{ - if(self.health <= 0) - return; - - if(!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, -1)) // no exceptions - return; // g_projectiles_damage says to halt - - self.health -= damage; - self.angles = vectoangles(self.velocity); - - if(self.health <= 0) - W_PrepareExplosionByDamage(attacker, marine_rocket_explode); -} - -void marine_rocket() -{ - entity missile; - - W_SetupShot_ProjectileSize(self, '-3 -3 -3', '3 3 3', FALSE, 5, "weapons/rocket_fire.wav", CH_WEAPON_A, autocvar_g_monster_marine_attack_rocket_damage); - - missile = spawn(); - missile.owner = missile.realowner = self; - missile.classname = "rocket"; - missile.bot_dodge = TRUE; - missile.bot_dodgerating = autocvar_g_monster_marine_attack_rocket_damage * 2; // * 2 because it can be detonated inflight which makes it even more dangerous - - missile.takedamage = DAMAGE_YES; - missile.health = 50; - missile.event_damage = marine_rocket_damage; - missile.damagedbycontents = TRUE; - - missile.movetype = MOVETYPE_FLY; - PROJECTILE_MAKETRIGGER(missile); - missile.projectiledeathtype = DEATH_MONSTER_MARINE; - setsize(missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot - - setorigin(missile, w_shotorg - v_forward * 3); // move it back so it hits the wall at the right point - W_SetupProjectileVelocity(missile, autocvar_g_monster_marine_attack_rocket_speed, 0); - missile.angles = vectoangles(missile.velocity); - - missile.touch = marine_rocket_touch; - missile.think = marine_rocket_think; - missile.nextthink = time; - missile.cnt = time + autocvar_g_monster_marine_attack_rocket_lifetime; - missile.flags = FL_PROJECTILE; - missile.missile_flags = MIF_SPLASH; - - CSQCProjectile(missile, TRUE, PROJECTILE_ROCKET, FALSE); -} - -void marine_shotgun() -{ - float sc; - W_SetupShot(self, autocvar_g_antilag_bullets && 18000 >= autocvar_g_antilag_bullets, 5, "weapons/shotgun_fire.wav", CH_WEAPON_A, autocvar_g_monster_marine_attack_shotgun_damage * autocvar_g_monster_marine_attack_shotgun_bullets); - for(sc = 0;sc < autocvar_g_monster_marine_attack_shotgun_bullets;sc = sc + 1) - fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_monster_marine_attack_shotgun_spread, 18000, 5, autocvar_g_monster_marine_attack_shotgun_damage, autocvar_g_monster_marine_attack_shotgun_force, DEATH_MONSTER_MARINE, 0, 1, 115); - endFireBallisticBullet(); -} - -void marine_laser_touch() -{ - PROJECTILE_TOUCH; - - self.event_damage = func_null; - RadiusDamage(self, self.realowner, autocvar_g_monster_marine_attack_laser_damage, autocvar_g_monster_marine_attack_laser_edgedamage, autocvar_g_monster_marine_attack_laser_radius, world, autocvar_g_monster_marine_attack_laser_force, self.projectiledeathtype, other); - - remove(self); -} - -void marine_laser() -{ - entity missile; - - W_SetupShot_Dir(self, v_forward, FALSE, 3, "weapons/lasergun_fire.wav", CH_WEAPON_B, autocvar_g_monster_marine_attack_laser_damage); - - missile = spawn(); - missile.owner = missile.realowner = self; - missile.classname = "laserbolt"; - PROJECTILE_MAKETRIGGER(missile); - missile.projectiledeathtype = DEATH_MONSTER_MARINE; - - setorigin(missile, w_shotorg); - setsize(missile, '0 0 0', '0 0 0'); - - W_SETUPPROJECTILEVELOCITY(missile, g_monster_marine_attack_laser); - missile.angles = vectoangles(missile.velocity); - missile.touch = marine_laser_touch; - - missile.flags = FL_PROJECTILE; - missile.missile_flags = MIF_SPLASH; - missile.movetype = MOVETYPE_FLY; - - missile.think = SUB_Remove; - missile.nextthink = time + 5; - - CSQCProjectile(missile, TRUE, PROJECTILE_LASER, TRUE); -} - -float marine_attack(float attack_type) -{ - switch(attack_type) - { - case MONSTER_ATTACK_MELEE: - { - monsters_setframe(marine_anim_shoot); - self.attack_finished_single = time + 0.8; - monster_melee(self.enemy, autocvar_g_monster_marine_melee_damage, 0.3, DEATH_MONSTER_MARINE_SLAP, TRUE); - - return TRUE; - } - case MONSTER_ATTACK_RANGED: - { - if(self.currentammo <= 0) - { - marine_reload(); - - return FALSE; - } - - monsters_setframe(marine_anim_shoot); - monster_makevectors(self.enemy); - self.marine_cycles = 0; - - switch(self.weapon) - { - case WEP_ROCKET_LAUNCHER: - { - self.currentammo -= 1; - self.attack_finished_single = time + 0.8; - marine_rocket(); - - return TRUE; - } - case WEP_SHOTGUN: - { - self.currentammo -= 1; - self.attack_finished_single = time + 0.8; - marine_shotgun(); - - return TRUE; - } - case WEP_UZI: - { - self.attack_finished_single = time + 0.8; - self.delay = time + 0.1; - self.monster_delayedattack = marine_uzi; - - return TRUE; - } - case WEP_LASER: - { - self.attack_finished_single = time + 0.8; - marine_laser(); - - return TRUE; - } - } - - return FALSE; - } - } - - return FALSE; -} - -void marine_die() -{ - Monster_CheckDropCvars ("marine"); - - self.think = monster_dead_think; - self.nextthink = time + self.ticrate; - self.ltime = time + 5; - monsters_setframe((random() > 0.5) ? marine_anim_die1 : marine_anim_die2); - - monster_hook_death(); // for post-death mods -} - -void marine_spawn() -{ - if not(self.health) - self.health = autocvar_g_monster_marine_health; - - self.damageforcescale = 0.003; - self.classname = "monster_marine"; - self.monster_attackfunc = marine_attack; - self.nextthink = time + random() * 0.5 + 0.1; - self.think = marine_think; - self.currentammo = 3; - self.items = (IT_SHELLS | IT_ROCKETS | IT_NAILS); - - monsters_setframe(marine_anim_draw); - - monster_setupsounds("marine"); - - setmodel(self, MARINE_MODEL); - - RandomSelection_Init(); - RandomSelection_Add(world, WEP_LASER, string_null, autocvar_g_monster_marine_weapon_laser_chance, 1); - RandomSelection_Add(world, WEP_SHOTGUN, string_null, autocvar_g_monster_marine_weapon_shotgun_chance, 1); - RandomSelection_Add(world, WEP_UZI, string_null, autocvar_g_monster_marine_weapon_machinegun_chance, 1); - RandomSelection_Add(world, WEP_ROCKET_LAUNCHER, string_null, autocvar_g_monster_marine_weapon_rocketlauncher_chance, 1); - - self.weaponentity = spawn(); - self.weaponentity.movetype = MOVETYPE_NOCLIP; - self.weaponentity.team = self.team; - self.weaponentity.solid = SOLID_NOT; - self.weaponentity.owner = self.weaponentity.realowner = self; - setmodel(self.weaponentity, "models/weapons/v_seeker.md3"); - setattachment(self.weaponentity, self, "bip01 r hand"); - - self.armorvalue = bound(0.5, random(), 1); - self.weapon = RandomSelection_chosen_float; - - monster_hook_spawn(); // for post-spawn mods -} - -void spawnfunc_monster_marine() -{ - if not(autocvar_g_monster_marine) { remove(self); return; } - - self.monster_spawnfunc = spawnfunc_monster_marine; - - if(Monster_CheckAppearFlags(self)) - return; - - precache_model("models/weapons/v_seeker.md3"); - precache_model(MARINE_MODEL); - - if not (monster_initialize( - "Marine", MONSTER_MARINE, - MARINE_MIN, MARINE_MAX, - FALSE, - marine_die, marine_spawn)) - { - remove(self); - return; - } -} - -// compatibility with old spawns -void spawnfunc_monster_army() { spawnfunc_monster_marine(); } - -#endif // SVQC diff --git a/qcsrc/server/monsters/monsters.qh b/qcsrc/server/monsters/monsters.qh index aa46643b5..8edb390e3 100644 --- a/qcsrc/server/monsters/monsters.qh +++ b/qcsrc/server/monsters/monsters.qh @@ -10,7 +10,6 @@ #include "monster/animus.qc" #include "monster/shambler.qc" #include "monster/bruiser.qc" -#include "monster/marine.qc" #include "monster/wyvern.qc" #include "monster/cerberus.qc" #include "monster/slime.qc" diff --git a/qcsrc/server/mutators/gamemode_towerdefense.qc b/qcsrc/server/mutators/gamemode_towerdefense.qc index d0204ae6e..29f909932 100644 --- a/qcsrc/server/mutators/gamemode_towerdefense.qc +++ b/qcsrc/server/mutators/gamemode_towerdefense.qc @@ -380,7 +380,6 @@ float Monster_GetStrength(float mnster) { default: case MONSTER_BRUISER: - case MONSTER_MARINE: case MONSTER_ZOMBIE: case MONSTER_SPIDER: case MONSTER_SLIME: @@ -407,7 +406,6 @@ string monster_type2string(float mnster) case MONSTER_ANIMUS: return "animus"; case MONSTER_SHAMBLER: return "shambler"; case MONSTER_BRUISER: return "bruiser"; - case MONSTER_MARINE: return "marine"; case MONSTER_WYVERN: return "wyvern"; case MONSTER_CERBERUS: return "cerberus"; case MONSTER_SLIME: return "slime"; @@ -425,7 +423,6 @@ float Monster_GetType(float mnster) { default: case MONSTER_BRUISER: - case MONSTER_MARINE: case MONSTER_ZOMBIE: case MONSTER_SPIDER: case MONSTER_SLIME: @@ -449,7 +446,6 @@ float RandomMonster() if(n_animuses) RandomSelection_Add(world, MONSTER_ANIMUS, "", 1, 1); if(n_mages) RandomSelection_Add(world, MONSTER_MAGE, "", 1, 1); - if(n_marines) RandomSelection_Add(world, MONSTER_MARINE, "", 1, 1); if(n_knights) RandomSelection_Add(world, MONSTER_KNIGHT, "", 1, 1); if(n_zombies) RandomSelection_Add(world, MONSTER_ZOMBIE, "", 1, 1); if(n_spiders) RandomSelection_Add(world, MONSTER_SPIDER, "", 1, 1); @@ -494,7 +490,7 @@ void combat_phase() void queue_monsters(float maxmonsters) { - float mc = 10; // note: shambler + slime = 1 + float mc = 9; // note: shambler + slime = 1 if(waterspawns_count > 0) mc += 1; @@ -507,7 +503,6 @@ void queue_monsters(float maxmonsters) n_cerberuses = DistributeEvenly_Get(1); n_bruisers = DistributeEvenly_Get(1); n_mages = DistributeEvenly_Get(1); - n_marines = DistributeEvenly_Get(1); n_knights = DistributeEvenly_Get(1); n_zombies = DistributeEvenly_Get(1); n_spiders = DistributeEvenly_Get(1); @@ -843,7 +838,6 @@ MUTATOR_HOOKFUNCTION(td_MonsterSpawn) case MONSTER_ANIMUS: n_animuses -= 1; break; case MONSTER_SHAMBLER: n_shamblers -= 1; break; case MONSTER_BRUISER: n_bruisers -= 1; break; - case MONSTER_MARINE: n_marines -= 1; break; case MONSTER_WYVERN: n_wyverns -= 1; break; case MONSTER_CERBERUS: n_cerberuses -= 1; break; case MONSTER_SLIME: n_slimes -= 1; break; diff --git a/qcsrc/server/mutators/gamemode_towerdefense.qh b/qcsrc/server/mutators/gamemode_towerdefense.qh index 2086ee60e..de8a84347 100644 --- a/qcsrc/server/mutators/gamemode_towerdefense.qh +++ b/qcsrc/server/mutators/gamemode_towerdefense.qh @@ -1,6 +1,6 @@ // Counters float monster_count, totalmonsters; -float n_bruisers, n_cerberuses, n_ogres, n_shamblers, n_wyverns, n_mages, n_marines, n_knights, n_animuses, n_zombies, n_slimes, n_fish, n_spiders; +float n_bruisers, n_cerberuses, n_ogres, n_shamblers, n_wyverns, n_mages, n_knights, n_animuses, n_zombies, n_slimes, n_fish, n_spiders; float current_monsters; float waterspawns_count, flyspawns_count; float wave_count, max_waves;