X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fraptor_weapons.qc;h=5cb0f271c52fec0effb514dff201983fa2069c02;hp=14cc7c0ff31f001ee6f31f6dfdaa5cedd24709d9;hb=64f2b309aa5be8aafb9ad2137174bb6d99aeb876;hpb=1add7fc6b9e512dcfcfd3180505046449ac782cd diff --git a/qcsrc/common/vehicles/vehicle/raptor_weapons.qc b/qcsrc/common/vehicles/vehicle/raptor_weapons.qc index 14cc7c0ff..5cb0f271c 100644 --- a/qcsrc/common/vehicles/vehicle/raptor_weapons.qc +++ b/qcsrc/common/vehicles/vehicle/raptor_weapons.qc @@ -12,7 +12,7 @@ METHOD(RaptorCannon, wr_think, void(entity thiswep, entity actor, .entity weapon float t = autocvar_g_vehicle_raptor_cannon_refire * (1 + veh.misc_bulletcounter == 4); if (fire & 1) if (weapon_prepareattack(thiswep, player, weaponentity, false, t)) { - if (isPlayer) W_SetupShot_Dir(player, v_forward, false, 0, SND_Null, CH_WEAPON_B, 0); + if (isPlayer) W_SetupShot_Dir(player, weaponentity, v_forward, false, 0, SND_Null, CH_WEAPON_B, 0); vector org = w_shotorg; vector dir = w_shotdir; if (veh) { @@ -30,7 +30,7 @@ METHOD(RaptorCannon, wr_think, void(entity thiswep, entity actor, .entity weapon weapon_thinkf(player, weaponentity, WFRAME_FIRE1, 0, w_ready); } } -METHOD(RaptorCannon, wr_checkammo1, bool(RacerAttack thiswep, entity actor)) { +METHOD(RaptorCannon, wr_checkammo1, bool(RacerAttack thiswep, entity actor, .entity weaponentity)) { bool isPlayer = IS_PLAYER(actor); entity player = isPlayer ? actor : actor.owner; entity veh = player.vehicle; @@ -38,7 +38,7 @@ METHOD(RaptorCannon, wr_checkammo1, bool(RacerAttack thiswep, entity actor)) { } -void raptor_bombdrop(); +void raptor_bombdrop(entity this); METHOD(RaptorBomb, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) { bool isPlayer = IS_PLAYER(actor); entity player = isPlayer ? actor : actor.owner; @@ -46,14 +46,14 @@ METHOD(RaptorBomb, wr_think, void(entity thiswep, entity actor, .entity weaponen if (fire & 2) if (!isPlayer || weapon_prepareattack(thiswep, player, weaponentity, true, autocvar_g_vehicle_raptor_bombs_refire)) { entity e = (veh) ? veh : player; - WITHSELF(e, raptor_bombdrop()); + raptor_bombdrop(e); weapon_thinkf(player, weaponentity, WFRAME_FIRE2, 0, w_ready); } } -void raptor_flare_think(); +void raptor_flare_think(entity this); void raptor_flare_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force); -void raptor_flare_touch(); +void raptor_flare_touch(entity this, entity toucher); METHOD(RaptorFlare, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) { bool isPlayer = IS_PLAYER(actor); @@ -67,10 +67,10 @@ METHOD(RaptorFlare, wr_think, void(entity thiswep, entity actor, .entity weapone _flare.effects = EF_LOWPRECISION | EF_FLAME; _flare.scale = 0.5; setorigin(_flare, actor.origin - '0 0 16'); - _flare.movetype = MOVETYPE_TOSS; + set_movetype(_flare, MOVETYPE_TOSS); _flare.gravity = 0.15; _flare.velocity = 0.25 * actor.velocity + (v_forward + randomvec() * 0.25)* -500; - _flare.think = raptor_flare_think; + setthink(_flare, raptor_flare_think); _flare.nextthink = time; _flare.owner = veh ? veh : player; _flare.solid = SOLID_CORPSE; @@ -85,35 +85,35 @@ METHOD(RaptorFlare, wr_think, void(entity thiswep, entity actor, .entity weapone } -void raptor_bomblet_boom() -{SELFPARAM(); - RadiusDamage (self, self.realowner, autocvar_g_vehicle_raptor_bomblet_damage, +void raptor_bomblet_boom(entity this) +{ + RadiusDamage (this, this.realowner, autocvar_g_vehicle_raptor_bomblet_damage, autocvar_g_vehicle_raptor_bomblet_edgedamage, - autocvar_g_vehicle_raptor_bomblet_radius, world, world, - autocvar_g_vehicle_raptor_bomblet_force, DEATH_VH_RAPT_BOMB.m_id, world); - remove(self); + autocvar_g_vehicle_raptor_bomblet_radius, NULL, NULL, + autocvar_g_vehicle_raptor_bomblet_force, DEATH_VH_RAPT_BOMB.m_id, NULL); + delete(this); } -void raptor_bomblet_touch() -{SELFPARAM(); - if(other == self.owner) +void raptor_bomblet_touch(entity this, entity toucher) +{ + if(toucher == this.owner) return; - PROJECTILE_TOUCH; - self.think = raptor_bomblet_boom; - self.nextthink = time + random() * autocvar_g_vehicle_raptor_bomblet_explode_delay; + PROJECTILE_TOUCH(this, toucher); + setthink(this, raptor_bomblet_boom); + this.nextthink = time + random() * autocvar_g_vehicle_raptor_bomblet_explode_delay; } -void raptor_bomb_burst() -{SELFPARAM(); - if(self.cnt > time) +void raptor_bomb_burst(entity this) +{ + if(this.cnt > time) if(autocvar_g_vehicle_raptor_bomblet_alt) { - self.nextthink = time; - traceline(self.origin, self.origin + (normalize(self.velocity) * autocvar_g_vehicle_raptor_bomblet_alt), MOVE_NORMAL, self); - if((trace_fraction == 1.0) || (vdist(self.origin - self.owner.origin, <, autocvar_g_vehicle_raptor_bomblet_radius))) + this.nextthink = time; + traceline(this.origin, this.origin + (normalize(this.velocity) * autocvar_g_vehicle_raptor_bomblet_alt), MOVE_NORMAL, this); + if((trace_fraction == 1.0) || (vdist(this.origin - this.owner.origin, <, autocvar_g_vehicle_raptor_bomblet_radius))) { - UpdateCSQCProjectile(self); + UpdateCSQCProjectile(this); return; } } @@ -121,45 +121,52 @@ void raptor_bomb_burst() entity bomblet; float i; - Damage_DamageInfo(self.origin, 0, 0, 0, '0 0 0', DEATH_VH_RAPT_FRAGMENT.m_id, 0, self); + Damage_DamageInfo(this.origin, 0, 0, 0, '0 0 0', DEATH_VH_RAPT_FRAGMENT.m_id, 0, this); for(i = 0; i < autocvar_g_vehicle_raptor_bomblets; ++i) { bomblet = spawn(); - setorigin(bomblet, self.origin); + setorigin(bomblet, this.origin); - bomblet.movetype = MOVETYPE_TOSS; + set_movetype(bomblet, MOVETYPE_TOSS); settouch(bomblet, raptor_bomblet_touch); - bomblet.think = raptor_bomblet_boom; + setthink(bomblet, raptor_bomblet_boom); bomblet.nextthink = time + 5; - bomblet.owner = self.owner; - bomblet.realowner = self.realowner; - bomblet.velocity = normalize(normalize(self.velocity) + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * vlen(self.velocity); + bomblet.owner = this.owner; + bomblet.realowner = this.realowner; + bomblet.velocity = normalize(normalize(this.velocity) + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * vlen(this.velocity); PROJECTILE_MAKETRIGGER(bomblet); CSQCProjectile(bomblet, true, PROJECTILE_RAPTORBOMBLET, true); } - remove(self); + delete(this); +} + +void raptor_bomb_touch(entity this, entity toucher) +{ + raptor_bomb_burst(this); } -void raptor_bombdrop() -{SELFPARAM(); +void raptor_bombdrop(entity this) +{ entity bomb_1, bomb_2; bomb_1 = spawn(); bomb_2 = spawn(); - vector org = gettaginfo(self, gettagindex(self, "bombmount_left")); + vector org = gettaginfo(this, gettagindex(this, "bombmount_left")); setorigin(bomb_1, org); - org = gettaginfo(self, gettagindex(self, "bombmount_right")); + org = gettaginfo(this, gettagindex(this, "bombmount_right")); setorigin(bomb_2, org); - bomb_1.movetype = bomb_2.movetype = MOVETYPE_BOUNCE; - bomb_1.velocity = bomb_2.velocity = self.velocity; - settouch(bomb_1, raptor_bomb_burst); - settouch(bomb_2, raptor_bomb_burst); - bomb_1.think = bomb_2.think = raptor_bomb_burst; + set_movetype(bomb_1, MOVETYPE_BOUNCE); + set_movetype(bomb_2, MOVETYPE_BOUNCE); + bomb_1.velocity = bomb_2.velocity = this.velocity; + settouch(bomb_1, raptor_bomb_touch); + settouch(bomb_2, raptor_bomb_touch); + setthink(bomb_1, raptor_bomb_burst); + setthink(bomb_2, raptor_bomb_burst); bomb_1.cnt = bomb_2.cnt = time + 10; if(autocvar_g_vehicle_raptor_bomblet_alt) @@ -167,8 +174,8 @@ void raptor_bombdrop() else bomb_1.nextthink = bomb_2.nextthink = time + autocvar_g_vehicle_raptor_bomblet_time; - bomb_1.owner = bomb_2.owner = self; - bomb_1.realowner = bomb_2.realowner = self.owner; + bomb_1.owner = bomb_2.owner = this; + bomb_1.realowner = bomb_2.realowner = this.owner; bomb_1.solid = bomb_2.solid = SOLID_BBOX; bomb_1.gravity = bomb_2.gravity = 1; @@ -179,33 +186,30 @@ void raptor_bombdrop() CSQCProjectile(bomb_2, true, PROJECTILE_RAPTORBOMB, true); } -void raptor_flare_touch() -{SELFPARAM(); - remove(self); +void raptor_flare_touch(entity this, entity toucher) +{ + delete(this); } void raptor_flare_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) { this.health -= damage; if(this.health <= 0) - remove(this); + delete(this); } -void raptor_flare_think() -{SELFPARAM(); - self.nextthink = time + 0.1; - entity _missile = findchainentity(enemy, self.owner); - while(_missile) +void raptor_flare_think(entity this) +{ + this.nextthink = time + 0.1; + IL_EACH(g_projectiles, it.enemy == this.owner, { - if(_missile.flags & FL_PROJECTILE) - if(vdist(self.origin - _missile.origin, <, autocvar_g_vehicle_raptor_flare_range)) + if(vdist(this.origin - it.origin, <, autocvar_g_vehicle_raptor_flare_range)) if(random() > autocvar_g_vehicle_raptor_flare_chase) - _missile.enemy = self; - _missile = _missile.chain; - } + it.enemy = this; + }); - if(self.tur_impacttime < time) - remove(self); + if(this.tur_impacttime < time) + delete(this); } #endif @@ -218,34 +222,32 @@ void RaptorCBShellfragDraw(entity this) return; Movetype_Physics_MatchTicrate(this, autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy); - this.move_avelocity += randomvec() * 15; + this.avelocity += randomvec() * 15; this.renderflags = 0; if(this.cnt < time) this.alpha = bound(0, this.nextthink - time, 1); if(this.alpha < ALPHA_MIN_VISIBLE) - remove(this); + delete(this); } void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang) -{SELFPARAM(); - entity sfrag; - - sfrag = spawn(); +{ + entity sfrag = spawn(); setmodel(sfrag, MDL_VEH_RAPTOR_CB_FRAGMENT); setorigin(sfrag, _org); - sfrag.move_movetype = MOVETYPE_BOUNCE; + set_movetype(sfrag, MOVETYPE_BOUNCE); sfrag.gravity = 0.15; sfrag.solid = SOLID_CORPSE; sfrag.draw = RaptorCBShellfragDraw; + IL_PUSH(g_drawables, sfrag); - sfrag.move_origin = sfrag.origin = _org; - sfrag.move_velocity = _vel; - sfrag.move_avelocity = prandomvec() * vlen(sfrag.move_velocity); - sfrag.angles = self.move_angles = _ang; + sfrag.velocity = _vel; + sfrag.avelocity = prandomvec() * vlen(sfrag.velocity); + sfrag.angles = _ang; sfrag.move_time = time; sfrag.damageforcescale = 4;