X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fraptor_weapons.qc;h=5cb0f271c52fec0effb514dff201983fa2069c02;hb=fa4d71afab8ff75d2781bef2a39ec991d0cb1822;hp=f1357f306c49e389bd43c070101c55182c2c7759;hpb=7666560c6a475aefe6b55ff74a20444f328e0093;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/vehicle/raptor_weapons.qc b/qcsrc/common/vehicles/vehicle/raptor_weapons.qc index f1357f306..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; @@ -67,7 +67,7 @@ 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; setthink(_flare, raptor_flare_think); @@ -91,7 +91,7 @@ void raptor_bomblet_boom(entity this) autocvar_g_vehicle_raptor_bomblet_edgedamage, autocvar_g_vehicle_raptor_bomblet_radius, NULL, NULL, autocvar_g_vehicle_raptor_bomblet_force, DEATH_VH_RAPT_BOMB.m_id, NULL); - remove(this); + delete(this); } void raptor_bomblet_touch(entity this, entity toucher) @@ -128,7 +128,7 @@ void raptor_bomb_burst(entity this) bomblet = spawn(); setorigin(bomblet, this.origin); - bomblet.movetype = MOVETYPE_TOSS; + set_movetype(bomblet, MOVETYPE_TOSS); settouch(bomblet, raptor_bomblet_touch); setthink(bomblet, raptor_bomblet_boom); bomblet.nextthink = time + 5; @@ -140,7 +140,7 @@ void raptor_bomb_burst(entity this) CSQCProjectile(bomblet, true, PROJECTILE_RAPTORBOMBLET, true); } - remove(this); + delete(this); } void raptor_bomb_touch(entity this, entity toucher) @@ -160,7 +160,8 @@ void raptor_bombdrop(entity this) org = gettaginfo(this, gettagindex(this, "bombmount_right")); setorigin(bomb_2, org); - bomb_1.movetype = bomb_2.movetype = MOVETYPE_BOUNCE; + 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); @@ -187,31 +188,28 @@ void raptor_bombdrop(entity this) void raptor_flare_touch(entity this, entity toucher) { - remove(this); + 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(entity this) { this.nextthink = time + 0.1; - entity _missile = findchainentity(enemy, this.owner); - while(_missile) + IL_EACH(g_projectiles, it.enemy == this.owner, { - if(_missile.flags & FL_PROJECTILE) - if(vdist(this.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 = this; - _missile = _missile.chain; - } + it.enemy = this; + }); if(this.tur_impacttime < time) - remove(this); + delete(this); } #endif @@ -231,7 +229,7 @@ void RaptorCBShellfragDraw(entity this) 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) @@ -240,11 +238,12 @@ void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang) 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.velocity = _vel; sfrag.avelocity = prandomvec() * vlen(sfrag.velocity);