From 04439564f83eb5f19fefc673465f3e7d7167f35c Mon Sep 17 00:00:00 2001 From: vermeulenl Date: Tue, 8 Feb 2005 23:28:40 +0000 Subject: [PATCH] Added crylink trails Add nexflash Make gibs more gorey and added 3 more of them got rid of all that dummy crap, and it now just uses copybody for impulse 13 git-svn-id: svn://svn.icculus.org/nexuiz/trunk@289 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- qcsrc/gamec/cl_client.c | 8 +- qcsrc/gamec/cl_impulse.c | 178 +-------------------------------- qcsrc/gamec/cl_player.c | 26 +++-- qcsrc/gamec/g_damage.c | 72 ++++++------- qcsrc/gamec/g_triggers.c | 40 ++++---- qcsrc/gamec/g_violence.c | 15 +-- qcsrc/gamec/g_world.c | 9 +- qcsrc/gamec/t_items.c | 26 ++--- qcsrc/gamec/w_common.c | 11 +- qcsrc/gamec/w_crylink.c | 9 +- qcsrc/gamec/w_hagar.c | 7 +- qcsrc/gamec/w_nex.c | 11 ++ qcsrc/gamec/w_rocketlauncher.c | 2 +- 13 files changed, 134 insertions(+), 280 deletions(-) diff --git a/qcsrc/gamec/cl_client.c b/qcsrc/gamec/cl_client.c index 0a0f25458..0a59bd60e 100644 --- a/qcsrc/gamec/cl_client.c +++ b/qcsrc/gamec/cl_client.c @@ -105,6 +105,7 @@ void PutClientInServer (void) self.viewzoom = 0.6; setmodel (self, self.playermodel); + self.skin = self.playerskin; setsize (self, PL_MIN, PL_MAX); setorigin (self, spot.origin + '0 0 1' * (1 - self.mins_z - 24)); // don't reset back to last position, even if new position is stuck in solid @@ -493,6 +494,7 @@ void PlayerPreThink (void) m2 = self.maxs; setmodel (self, self.playermodel); setsize (self, m1, m2); + self.skin = self.playerskin; } W_WeaponFrame(); @@ -551,11 +553,11 @@ void PlayerPostThink (void) soundrandom = random() * 4; if (soundrandom < 1) sound (self, CHAN_BODY, "misc/hitground1.wav", 1, ATTN_NORM); - if (soundrandom < 2) + else if (soundrandom < 2) sound (self, CHAN_BODY, "misc/hitground2.wav", 1, ATTN_NORM); - if (soundrandom < 3) + else if (soundrandom < 3) sound (self, CHAN_BODY, "misc/hitground3.wav", 1, ATTN_NORM); - if (soundrandom < 4) + else if (soundrandom < 4) sound (self, CHAN_BODY, "misc/hitground4.wav", 1, ATTN_NORM); if (self.jump_flag < -650) // landing damage { diff --git a/qcsrc/gamec/cl_impulse.c b/qcsrc/gamec/cl_impulse.c index 581549246..d282673e9 100644 --- a/qcsrc/gamec/cl_impulse.c +++ b/qcsrc/gamec/cl_impulse.c @@ -1,3 +1,4 @@ +void CopyBody(); // changes by LordHavoc on 03/30/04 // cleaned up dummy code @@ -16,54 +17,6 @@ void DummyThink(void) PlayerPostThink(); } -void PlayerDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force); -void CreateDummy (vector org, float type) -{ - entity oldself; - oldself = self; - self = spawn (); - self.norespawn = TRUE; - self.solid = SOLID_SLIDEBOX; - self.movetype = MOVETYPE_WALK; - self.classname = "corpse"; - self.takedamage = DAMAGE_YES; - self.damageforcescale = oldself.damageforcescale; - self.health = 300; - self.weapon = IT_LASER; - setsize (self, oldself.mins, oldself.maxs); - setorigin (self, org); - if (type==1) - setmodel (self, "models/player/marine.zym"); - if (type==2) - setmodel (self, "models/player/grunt.zym"); - if (type==3) - setmodel (self, "models/player/specop.zym"); - if (type==4) - setmodel (self, "models/player/pyria.zym"); - if (type==5) - setmodel (self, "models/player/lurk.zym"); - if (type==6) - setmodel (self, "models/player/visitant.zym"); - if (type==7) - setmodel (self, "models/player/headhunter.zym"); - if (type==8) - setmodel (self, "models/player/jeandarc.zym"); - if (type==9) - setmodel (self, "models/player/mulder.zym"); - if (type==10) - setmodel (self, "models/player/insurrectionist.zym"); - if (type==11) - setmodel (self, "models/player/robot.zym"); - if (type==12) - setmodel (self, "models/player/lycanthrope.zym"); - if (type==13) - setmodel (self, "models/player/fshock.zym"); - setsize (self, PL_MIN, PL_MAX); - self.event_damage = PlayerDamage; - DummyThink(); - self = oldself; -} - void ImpulseCommands (void) { if (self.impulse >= 1 && self.impulse <= 9) @@ -75,132 +28,7 @@ void ImpulseCommands (void) else if (self.impulse == 13 && cvar("sv_cheats")) { makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 1); - } - else if (self.impulse == 14 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 2); - } - else if (self.impulse == 15 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 3); - } - else if (self.impulse == 16 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 4); - } - else if (self.impulse == 17 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 5); - } - else if (self.impulse == 18 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 6); - } - else if (self.impulse == 19 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 7); - } - else if (self.impulse == 20 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 8); - } - else if (self.impulse == 21 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 9); - } - else if (self.impulse == 22 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 10); - } - else if (self.impulse == 23 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 11); - } - else if (self.impulse == 24 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 12); - } - else if (self.impulse == 25 && cvar("sv_cheats")) - { - makevectors (self.v_angle); - CreateDummy (self.origin + self.view_ofs + v_forward * 64, 13); - } - else if (self.impulse == 26) - { - setmodel (self, "models/player/marine.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 27) - { - setmodel (self, "models/player/grunt.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 28) - { - setmodel (self, "models/player/specop.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 29) - { - setmodel (self, "models/player/pyria.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 30) - { - setmodel (self, "models/player/lurk.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 31) - { - setmodel (self, "models/player/headhunter.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 32) - { - setmodel (self, "models/player/visitant.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 33) - { - setmodel (self, "models/player/jeandarc.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 34) - { - setmodel (self, "models/player/mulder.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 35) - { - setmodel (self, "models/player/insurrectionist.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 36) - { - setmodel (self, "models/player/robot.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 37) - { - setmodel (self, "models/player/lycanthrope.zym"); - setsize (self, PL_MIN, PL_MAX); - } - else if (self.impulse == 38) - { - setmodel (self, "models/player/fshock.zym"); - setsize (self, PL_MIN, PL_MAX); + CopyBody(); } else if (self.impulse == 97 && !self.crouch) { @@ -211,7 +39,7 @@ void ImpulseCommands (void) self.crouch = FALSE; self.view_ofs_z = self.view_ofs_z + 20; } - else if (self.impulse == 99) + else if (self.impulse == 99 && cvar("sv_cheats")) { self.items = IT_LASER | IT_UZI | IT_SHOTGUN | IT_GRENADE_LAUNCHER | IT_ELECTRO | IT_CRYLINK | IT_NEX | IT_HAGAR | IT_ROCKET_LAUNCHER; self.ammo_shells = 100; diff --git a/qcsrc/gamec/cl_player.c b/qcsrc/gamec/cl_player.c index a6461883f..747dee02d 100644 --- a/qcsrc/gamec/cl_player.c +++ b/qcsrc/gamec/cl_player.c @@ -161,17 +161,21 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float te_bloodshower (self.origin + self.mins, self.origin + self.maxs, 400, 1000); // make a meaty mess - TossGib (world, "models/gibs/gib1.md3", self.origin, self.velocity); - TossGib (world, "models/gibs/gib2.md3", self.origin, self.velocity); - TossGib (world, "models/gibs/gib3.md3", self.origin, self.velocity); - TossGib (self, "models/gibs/eye.md3", self.origin, self.velocity); + TossGib (self, "models/gibs/eye.md3", self.origin, self.velocity,0); + TossGib (world, "models/gibs/bloodyskull.md3", self.origin, '0 0 600',0); - TossGib (world, "models/gibs/gib4.mdl", self.origin, '500 0 450'); - TossGib (world, "models/gibs/gib4.mdl", self.origin, '-500 0 450'); - TossGib (world, "models/gibs/gib4.mdl", self.origin, '0 500 450'); - TossGib (world, "models/gibs/gib4.mdl", self.origin, '0 -500 450'); + TossGib (world, "models/gibs/gib1.md3", self.origin, self.velocity,0); + TossGib (world, "models/gibs/gib2.md3", self.origin, self.velocity,0); + TossGib (world, "models/gibs/gib3.md3", self.origin, self.velocity,0); + TossGib (world, "models/gibs/gib4.md3", self.origin, self.velocity,0); - TossGib (world, "models/gibs/bloodyskull.md3", self.origin, '0 0 600'); + // these destory on impact + TossGib (world, "models/gibs/gib5.md3", self.origin, '-500 0 450',1); + TossGib (world, "models/gibs/gib6.md3", self.origin, '0 500 450',1); + TossGib (world, "models/gibs/chunk.mdl", self.origin, '0 -500 450',1); + TossGib (world, "models/gibs/chunk.mdl", self.origin, '500 0 450',1); + TossGib (world, "models/gibs/chunk.mdl", self.origin, self.velocity,1); + TossGib (world, "models/gibs/chunk.mdl", self.origin, '0 0 450',1); sound (trace_ent, CHAN_VOICE, "misc/gib.wav", 1, ATTN_NORM); } @@ -206,9 +210,9 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht sound (self, CHAN_BODY, "misc/bodyimpact2.wav", 1, ATTN_NORM); if (take > 50) - TossGib (world, "models/gibs/gib4.mdl", hitloc, force * -0.1); + TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1); if (take > 100) - TossGib (world, "models/gibs/gib4.mdl", hitloc, force * -0.1); + TossGib (world, "models/gibs/chunk.mdl", hitloc, force * -0.1,1); self.health = self.health - take; self.dmg_save = self.dmg_save + save * 0.25; diff --git a/qcsrc/gamec/g_damage.c b/qcsrc/gamec/g_damage.c index 6d57b831a..084dfee74 100644 --- a/qcsrc/gamec/g_damage.c +++ b/qcsrc/gamec/g_damage.c @@ -10,62 +10,54 @@ void Obituary (entity attacker, entity targ, float deathtype) else s = targ.netname; - // Suicides - if (targ == attacker) - { - if (deathtype == IT_LASER) - bprint (s, " was unable to resist the urge to self-immolate\n"); - else if (deathtype == IT_GRENADE_LAUNCHER) - bprint (s, " detonated\n"); - else if (deathtype == IT_ELECTRO) - bprint (s, " played with plasma\n"); - else if (deathtype == IT_HAGAR) - bprint (s, " should have used a different weapon\n"); - else if (deathtype == IT_ROCKET_LAUNCHER) - bprint (s, " exploded\n"); - else if (deathtype == DEATH_KILL) - bprint (s, " couldn't take it anymore\n"); - else - bprint (s, " competes for the Darwin awards\n"); - - self.frags = self.frags - 1; - } // Kills - else if (attacker.classname == "player") + if (attacker.classname == "player") { if (deathtype == IT_LASER) - bprint (s, " was a victim of laser surgeon ", attacker.netname, "\n"); + bprint ("@1",s, " was blasted by ", attacker.netname, "\n"); else if (deathtype == IT_UZI) - bprint (s, " was riddled full of holes by ", attacker.netname, "\n"); + bprint ("@1",s, " was riddled full of holes by ", attacker.netname, "\n"); else if (deathtype == IT_SHOTGUN) - bprint (s, " was gunned by ", attacker.netname, "\n"); + bprint ("@1",s, " was gunned by ", attacker.netname, "\n"); else if (deathtype == IT_GRENADE_LAUNCHER) - bprint (s, " was blasted by ", attacker.netname, "\n"); + bprint ("@1", s, " was blasted by ", attacker.netname, "\n"); else if (deathtype == IT_ELECTRO) - bprint (s, " bathed in ", attacker.netname, "'s plasma\n"); + bprint ("@1",s, " was blasted by ", attacker.netname, "\n"); else if (deathtype == IT_CRYLINK) - bprint (s, " was zapped by ", attacker.netname, "\n"); + bprint ("@1",s, " was blasted ", attacker.netname, "\n"); else if (deathtype == IT_NEX) - bprint (s, " has been vaporized by ", attacker.netname, "\n"); + bprint ("@1",s, " has been vaporized by ", attacker.netname, "\n"); else if (deathtype == IT_HAGAR) - bprint (s, " was pummeled by ", attacker.netname, "\n"); + bprint ("@1",s, " was pummeled by ", attacker.netname, "\n"); else if (deathtype == IT_ROCKET_LAUNCHER) - bprint (s, " was given a lesson in rocketry by ", attacker.netname, "\n"); + bprint ("@1",s, " blasted by ", attacker.netname, "\n"); else - bprint (s, " was killed by ", attacker.netname, "\n"); + bprint ("@1",s, " was killed by ", attacker.netname, "\n"); attacker.frags = attacker.frags + 1; } - else if (deathtype == DEATH_HURTTRIGGER) - bprint (s, " ", attacker.message, "\n"); - else if (deathtype == DEATH_FALL) - bprint (s, " hit the ground with a crunch\n"); - else if (deathtype == DEATH_BIGFALL) - bprint (s, " fell into oblivion\n"); - else if (deathtype == DEATH_DROWN) - bprint (s, " wished he had gills\n"); + // Suicides or level deaths else - bprint (s, " died\n"); + { + if (deathtype == IT_GRENADE_LAUNCHER) + bprint ("@1",s, " detonated\n"); + else if (deathtype == IT_ELECTRO) + bprint ("@1",s, " played with plasma\n"); + else if (deathtype == IT_ROCKET_LAUNCHER) + bprint ("@1",s, " exploded\n"); + else if (deathtype == DEATH_HURTTRIGGER) + bprint ("@1",s, " ", attacker.message, "\n"); + else if (deathtype == DEATH_FALL) + bprint ("@1",s, " hit the ground with a crunch\n"); + else if (deathtype == DEATH_BIGFALL) + bprint ("@1",s, " fell into oblivion\n"); + else if (deathtype == DEATH_DROWN) + bprint ("@1",s, " drowned\n"); + else + bprint ("@1",s, " died\n"); + + self.frags = self.frags - 1; + } } } diff --git a/qcsrc/gamec/g_triggers.c b/qcsrc/gamec/g_triggers.c index 1f016f819..79d2ecddf 100644 --- a/qcsrc/gamec/g_triggers.c +++ b/qcsrc/gamec/g_triggers.c @@ -47,8 +47,8 @@ void() SUB_UseTargets = t.target = self.target; return; } - - + + // // print the message // @@ -73,7 +73,7 @@ void() SUB_UseTargets = remove (t); } while ( 1 ); } - + // // fire targets // @@ -99,7 +99,7 @@ void() SUB_UseTargets = activator = act; } while ( 1 ); } - + }; @@ -153,10 +153,10 @@ void() multi_trigger = self.takedamage = DAMAGE_NO; activator = self.enemy; - + SUB_UseTargets(); - if (self.wait > 0) + if (self.wait > 0) { self.think = multi_wait; self.nextthink = time + self.wait; @@ -181,7 +181,7 @@ void() multi_touch = { if (other.classname != "player") return; - + // if the trigger has an angles field, check player's facing direction if (self.movedir != '0 0 0') { @@ -189,7 +189,7 @@ void() multi_touch = if (v_forward * self.movedir < 0) return; // not facing the right way } - + self.enemy = other; multi_trigger (); }; @@ -236,7 +236,7 @@ void() trigger_multiple = precache_sound ("misc/trigger1.wav"); self.noise = "misc/trigger1.wav"; } - + if (!self.wait) self.wait = 0.2; self.use = multi_use; @@ -303,7 +303,7 @@ void() counter_use = self.count = self.count - 1; if (self.count < 0) return; - + if (self.count != 0) { if (activator.classname == "player" @@ -320,7 +320,7 @@ void() counter_use = } return; } - + if (activator.classname == "player" && (self.spawnflags & SPAWNFLAG_NOMESSAGE) == 0) centerprint(activator, "Sequence completed!"); @@ -344,20 +344,20 @@ void() trigger_counter = self.use = counter_use; }; -//void() hurt_on = -//{ -// self.solid = SOLID_TRIGGER; -// self.nextthink = -1; -//}; +void() hurt_on = +{ + self.solid = SOLID_TRIGGER; + self.nextthink = -1; +}; void() hurt_touch = { if (other.takedamage) { - //self.solid = SOLID_NOT; + self.solid = SOLID_NOT; Damage (other, self, self, self.dmg, DEATH_HURTTRIGGER, '0 0 0', '0 0 0'); - //self.think = hurt_on; - //self.nextthink = time + 1; + self.think = hurt_on; + self.nextthink = time + 1; } return; @@ -373,7 +373,7 @@ void() trigger_hurt = InitTrigger (); self.touch = hurt_touch; if (!self.dmg) - self.dmg = 5; + self.dmg = 1000; if (!self.message) self.message = "was in the wrong place."; }; diff --git a/qcsrc/gamec/g_violence.c b/qcsrc/gamec/g_violence.c index 6fcac0632..83a8527cd 100644 --- a/qcsrc/gamec/g_violence.c +++ b/qcsrc/gamec/g_violence.c @@ -1,6 +1,6 @@ -void GibDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) +void GibTouch () { - te_blood (self.origin + '0 0 1', '0 0 30', damage); + te_blood (self.origin + '0 0 1', '0 0 30', 10); float r; r = random (); @@ -12,9 +12,8 @@ void GibDamage (entity inflictor, entity attacker, float damage, float deathtype sound (self, CHAN_IMPACT, "misc/gib_splat03.wav", 1, ATTN_NORM); else if (r < 0.75) sound (self, CHAN_IMPACT, "misc/gib_splat04.wav", 1, ATTN_NORM); - - self.health = self.health - damage; - if (self.health <= -300) + self.health = self.health - 11; + if (self.health <= -12) { self.event_damage = nullfunction; SUB_VanishOrRemove (self); @@ -25,7 +24,7 @@ void GibDamage (entity inflictor, entity attacker, float damage, float deathtype // TossGib now takes a gib entity so it can be used for tossing heads // gib.velocity now uses randomvec() instead of a bunch of manual random calls // merged Gib() into PlayerGib() -void TossGib (entity gib, string mdlname, vector org, vector v) +void TossGib (entity gib, string mdlname, vector org, vector v, float destroyontouch) { if (gib == world) { @@ -43,7 +42,9 @@ void TossGib (entity gib, string mdlname, vector org, vector v) gib.health = -1; gib.takedamage = DAMAGE_YES; gib.damageforcescale = 3.5; - gib.event_damage = GibDamage; + //gib.event_damage = GibDamage; + if (destroyontouch == 1) + gib.touch = GibTouch; gib.velocity = v + randomvec() * 450; gib.avelocity = randomvec() * 300; diff --git a/qcsrc/gamec/g_world.c b/qcsrc/gamec/g_world.c index aa6cf0a5b..7d84ebe94 100644 --- a/qcsrc/gamec/g_world.c +++ b/qcsrc/gamec/g_world.c @@ -46,17 +46,19 @@ void worldspawn (void) precache_model ("models/grenademodel.md3"); precache_model ("models/hagarmissile.mdl"); - precache_model ("models/rocketmissile.mdl"); + precache_model ("models/rocket.md3"); precache_model ("models/bullet.mdl"); precache_model ("models/casing_bronze.mdl"); precache_model ("models/casing_shell.mdl"); precache_model ("models/casing_steel.mdl"); precache_model ("models/beam.mdl"); precache_model ("models/flash.md3"); + precache_model ("models/nexflash.md3"); precache_model ("models/laser.mdl"); precache_model ("models/elaser.mdl"); precache_model ("models/ebomb.mdl"); precache_model ("models/plasma.mdl"); + precache_model ("models/plasmatrail.mdl"); precache_model ("models/tracer.mdl"); precache_model ("models/items/g_h1.md3"); @@ -90,7 +92,10 @@ void worldspawn (void) precache_model ("models/gibs/gib1.md3"); precache_model ("models/gibs/gib2.md3"); precache_model ("models/gibs/gib3.md3"); - precache_model ("models/gibs/gib4.mdl"); + precache_model ("models/gibs/gib4.md3"); + precache_model ("models/gibs/gib5.md3"); + precache_model ("models/gibs/gib6.md3"); + precache_model ("models/gibs/chunk.mdl"); precache_model ("models/gibs/bloodyskull.md3"); precache_sound ("weapons/lasergun_fire.wav"); diff --git a/qcsrc/gamec/t_items.c b/qcsrc/gamec/t_items.c index d9d3064dc..3a315ea3d 100644 --- a/qcsrc/gamec/t_items.c +++ b/qcsrc/gamec/t_items.c @@ -26,8 +26,9 @@ void Item_Touch (void) // probably want to switch to an even better weapon after items are given _switchweapon = other.switchweapon == w_getbestweapon(other); - if (self.ammo_shells) + if (self.ammo_shells){ other.ammo_shells = min (other.ammo_shells + self.ammo_shells, 100); + } if (self.ammo_nails) other.ammo_nails = min (other.ammo_nails + self.ammo_nails, 200); if (self.ammo_rockets) @@ -35,14 +36,14 @@ void Item_Touch (void) if (self.ammo_cells) other.ammo_cells = min (other.ammo_cells + self.ammo_cells, 100); - if (self.items & IT_UZI) W_GiveWeapon (other, IT_UZI); - if (self.items & IT_SHOTGUN) W_GiveWeapon (other, IT_SHOTGUN); - if (self.items & IT_GRENADE_LAUNCHER) W_GiveWeapon (other, IT_GRENADE_LAUNCHER); - if (self.items & IT_ELECTRO) W_GiveWeapon (other, IT_ELECTRO); - if (self.items & IT_NEX) W_GiveWeapon (other, IT_NEX); - if (self.items & IT_HAGAR) W_GiveWeapon (other, IT_HAGAR); - if (self.items & IT_ROCKET_LAUNCHER) W_GiveWeapon (other, IT_ROCKET_LAUNCHER); - if (self.items & IT_CRYLINK) W_GiveWeapon (other, IT_CRYLINK); + if (self.items & IT_UZI) W_GiveWeapon (other, IT_UZI, "Machine gun"); + if (self.items & IT_SHOTGUN) W_GiveWeapon (other, IT_SHOTGUN, "Shotgun"); + if (self.items & IT_GRENADE_LAUNCHER) W_GiveWeapon (other, IT_GRENADE_LAUNCHER, "Mortar"); + if (self.items & IT_ELECTRO) W_GiveWeapon (other, IT_ELECTRO, "Electro"); + if (self.items & IT_NEX) W_GiveWeapon (other, IT_NEX, "Nex"); + if (self.items & IT_HAGAR) W_GiveWeapon (other, IT_HAGAR, "Hagar"); + if (self.items & IT_ROCKET_LAUNCHER) W_GiveWeapon (other, IT_ROCKET_LAUNCHER, "Rocket Launcher"); + if (self.items & IT_CRYLINK) W_GiveWeapon (other, IT_CRYLINK, "Crylink"); if (self.strength_finished) other.strength_finished = max(other.strength_finished, time) + self.strength_finished; @@ -58,13 +59,6 @@ void Item_Touch (void) if (self.armorvalue) other.armorvalue = other.armorvalue + self.armorvalue; - if (other.classname == "player") - { - sprint (other, "You got the "); - sprint (other, self.netname); - sprint (other, "\n"); - } - oldself = self; self = other; diff --git a/qcsrc/gamec/w_common.c b/qcsrc/gamec/w_common.c index c85816024..d1abd24fd 100644 --- a/qcsrc/gamec/w_common.c +++ b/qcsrc/gamec/w_common.c @@ -107,7 +107,7 @@ float W_GetBestWeapon (entity e) return IT_LASER; } -void W_GiveWeapon (entity e, float wep) +void W_GiveWeapon (entity e, float wep, string name) { entity oldself; @@ -120,6 +120,15 @@ void W_GiveWeapon (entity e, float wep) self = e; weapon_action(self.weapon, WR_UPDATECOUNTS); + + if (other.classname == "player") + { + sprint (other, "You got the "); + sprint (other, name); + sprint (other, "\n"); + } + + /* W_UpdateWeapon (); W_UpdateAmmo (); diff --git a/qcsrc/gamec/w_crylink.c b/qcsrc/gamec/w_crylink.c index f86178954..55693e5d7 100644 --- a/qcsrc/gamec/w_crylink.c +++ b/qcsrc/gamec/w_crylink.c @@ -41,6 +41,7 @@ void W_Crylink_Touch (void) RadiusDamage (self, self.owner, cvar("g_balance_crylink_damage"), cvar("g_balance_crylink_edgedamage"), cvar("g_balance_crylink_radius"), world, cvar("g_balance_crylink_force"), IT_CRYLINK); self.touch = nullfunction; self.norespawn = TRUE; + setmodel (self, "models/plasma.mdl"); self.gravity = 1; self.glow_size = 0; self.glow_color = 0; @@ -70,7 +71,7 @@ void W_Crylink_Attack (void) //(float postion) proj.solid = SOLID_BBOX; proj.gravity = 0.001; - setmodel (proj, "models/plasma.mdl"); + setmodel (proj, "models/plasmatrail.mdl"); setsize (proj, '0 0 0', '0 0 0'); setorigin (proj, self.origin + self.view_ofs + v_forward * 10 + v_right * 5 + v_up * -14); @@ -79,6 +80,8 @@ void W_Crylink_Attack (void) //(float postion) proj.think = SUB_Remove; proj.nextthink = time + 9; + proj.angles = vectoangles (proj.velocity); + proj.glow_color = 10; proj.glow_size = 20; @@ -109,7 +112,7 @@ void W_Crylink_Attack2 (void) proj.solid = SOLID_BBOX; proj.gravity = 0.001; - setmodel (proj, "models/plasma.mdl"); + setmodel (proj, "models/plasmatrail.mdl"); setsize (proj, '0 0 0', '0 0 0'); setorigin (proj, self.origin + self.view_ofs + v_forward * 10 + v_right * 5 + v_up * -14); @@ -118,6 +121,8 @@ void W_Crylink_Attack2 (void) proj.think = SUB_Remove; proj.nextthink = time + 9; + proj.angles = vectoangles (proj.velocity); + proj.glow_color = 10; proj.glow_size = 20; diff --git a/qcsrc/gamec/w_hagar.c b/qcsrc/gamec/w_hagar.c index 2cc0adf49..d4bd2bafb 100644 --- a/qcsrc/gamec/w_hagar.c +++ b/qcsrc/gamec/w_hagar.c @@ -82,8 +82,9 @@ void W_Hagar_Attack (void) missile.solid = SOLID_BBOX; setmodel (missile, "models/hagarmissile.mdl"); setsize (missile, '0 0 0', '0 0 0'); + missile.scale = 0.4; - setorigin (missile, self.origin + self.view_ofs + v_forward * 25 + v_right * 5 + v_up * -12); + setorigin (missile, self.origin + self.view_ofs + v_forward * 25 + v_right * 5 + v_up * -8); sped = cvar("g_balance_hagar_speed"); missile.velocity = v_forward * sped + v_right * crandom() * 0.035 * sped + v_up * crandom() * 0.015 * sped; @@ -120,7 +121,9 @@ void W_Hagar_Attack2 (void) setmodel (missile, "models/hagarmissile.mdl"); setsize (missile, '-6 -6 -3', '6 6 3'); - setorigin (missile, self.origin + self.view_ofs + v_forward * 15 + v_right * 5 + v_up * -12); + setorigin (missile, self.origin + self.view_ofs + v_forward * 25 + v_right * 5 + v_up * -8); + + missile.scale = 0.4; missile.velocity = v_forward * cvar("g_balance_hagar_speed2") + v_up * cvar("g_balance_hagar_speed2_up"); missile.angles = vectoangles (missile.velocity); diff --git a/qcsrc/gamec/w_nex.c b/qcsrc/gamec/w_nex.c index cee001df7..3fc58e9b7 100644 --- a/qcsrc/gamec/w_nex.c +++ b/qcsrc/gamec/w_nex.c @@ -50,6 +50,17 @@ void W_Nex_Attack (void) if (!(game & GAME_INSTAGIB)) self.ammo_cells = self.ammo_cells - 5; + + entity flash; + flash = spawn (); + //flash.drawonlytoclient; + org = self.origin + self.view_ofs + v_forward * 33 + v_right * 14 + v_up * -7; + setorigin (flash, org); + setmodel (flash, "models/nexflash.md3"); + flash.velocity = v_forward * 20; + flash.angles = vectoangles (flash.velocity); + SUB_SetFade (flash, time); + flash.effects = flash.effects | EF_ADDITIVE; } void W_Nex_Attack2 (void) diff --git a/qcsrc/gamec/w_rocketlauncher.c b/qcsrc/gamec/w_rocketlauncher.c index 8130f4a2e..1ea392d89 100644 --- a/qcsrc/gamec/w_rocketlauncher.c +++ b/qcsrc/gamec/w_rocketlauncher.c @@ -89,7 +89,7 @@ void W_Rocket_Attack (void) missile.movetype = MOVETYPE_FLY; missile.solid = SOLID_BBOX; - setmodel (missile, "models/rocketmissile.mdl"); + setmodel (missile, "models/rocket.md3"); setsize (missile, '0 0 0', '0 0 0'); org = self.origin + self.view_ofs + v_forward * 15 + v_right * 3 + v_up * -11; -- 2.39.2