X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Felectro.qc;h=7e05241a490873f200bbd1ecbeb5cbd8ec43e0ab;hb=268f9c69576b6bb929f66d19f0d077d19ba47edd;hp=5f8208a7ff6419ee9b82819f0df179030bee9afa;hpb=cff3504ad5e8ace014ea44de7ad04ad6e246a277;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/weapon/electro.qc b/qcsrc/common/weapons/weapon/electro.qc index 5f8208a7f..7e05241a4 100644 --- a/qcsrc/common/weapons/weapon/electro.qc +++ b/qcsrc/common/weapons/weapon/electro.qc @@ -1,12 +1,13 @@ +#include "electro.qh" #ifndef IMPLEMENTATION CLASS(Electro, Weapon) -/* ammotype */ ATTRIB(Electro, ammo_field, .int, ammo_cells) -/* impulse */ ATTRIB(Electro, impulse, int, 5) +/* ammotype */ ATTRIB(Electro, ammo_field, .int, ammo_cells); +/* impulse */ ATTRIB(Electro, impulse, int, 5); /* flags */ ATTRIB(Electro, spawnflags, int, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH); /* rating */ ATTRIB(Electro, bot_pickupbasevalue, float, BOT_PICKUP_RATING_MID); /* color */ ATTRIB(Electro, wpcolor, vector, '0 0.5 1'); /* modelname */ ATTRIB(Electro, mdl, string, "electro"); -#ifndef MENUQC +#ifdef GAMEQC /* model */ ATTRIB(Electro, m_model, Model, MDL_ELECTRO_ITEM); #endif /* crosshair */ ATTRIB(Electro, w_crosshair, string, "gfx/crosshairelectro"); @@ -260,7 +261,7 @@ void W_Electro_Bolt_Think(entity this) // this.nextthink = time; } -void W_Electro_Attack_Bolt(Weapon thiswep, entity actor) +void W_Electro_Attack_Bolt(Weapon thiswep, entity actor, .entity weaponentity) { entity proj; @@ -268,6 +269,7 @@ void W_Electro_Attack_Bolt(Weapon thiswep, entity actor) W_SetupShot_ProjectileSize( actor, + weaponentity, '0 0 -3', '0 0 -3', false, @@ -299,6 +301,7 @@ void W_Electro_Attack_Bolt(Weapon thiswep, entity actor) setsize(proj, '0 0 -3', '0 0 -3'); proj.flags = FL_PROJECTILE; IL_PUSH(g_projectiles, proj); + IL_PUSH(g_bot_dodge, proj); proj.missile_flags = MIF_SPLASH; CSQCProjectile(proj, true, PROJECTILE_ELECTRO_BEAM, true); @@ -338,6 +341,8 @@ void W_Electro_Orb_Stick(entity this, entity to) newproj.nextthink = this.nextthink; newproj.use = this.use; newproj.flags = this.flags; + IL_PUSH(g_projectiles, newproj); + IL_PUSH(g_bot_dodge, newproj); delete(this); @@ -403,12 +408,13 @@ void W_Electro_Orb_Damage(entity this, entity inflictor, entity attacker, float } } -void W_Electro_Attack_Orb(Weapon thiswep, entity actor) +void W_Electro_Attack_Orb(Weapon thiswep, entity actor, .entity weaponentity) { W_DecreaseAmmo(thiswep, actor, WEP_CVAR_SEC(electro, ammo)); W_SetupShot_ProjectileSize( actor, + weaponentity, '-4 -4 -4', '4 4 4', false, @@ -445,6 +451,7 @@ void W_Electro_Attack_Orb(Weapon thiswep, entity actor) proj.event_damage = W_Electro_Orb_Damage; proj.flags = FL_PROJECTILE; IL_PUSH(g_projectiles, proj); + IL_PUSH(g_bot_dodge, proj); proj.damagedbycontents = (WEP_CVAR_SEC(electro, damagedbycontents)); proj.bouncefactor = WEP_CVAR_SEC(electro, bouncefactor); @@ -470,7 +477,7 @@ void W_Electro_CheckAttack(Weapon thiswep, entity actor, .entity weaponentity, i if(PHYS_INPUT_BUTTON_ATCK2(actor)) if(weapon_prepareattack(thiswep, actor, weaponentity, true, -1)) { - W_Electro_Attack_Orb(WEP_ELECTRO, actor); + W_Electro_Attack_Orb(WEP_ELECTRO, actor, weaponentity); actor.electro_count -= 1; weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(electro, animtime), W_Electro_CheckAttack); return; @@ -530,7 +537,7 @@ METHOD(Electro, wr_think, void(entity thiswep, entity actor, .entity weaponentit { if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR_PRI(electro, refire))) { - W_Electro_Attack_Bolt(thiswep, actor); + W_Electro_Attack_Bolt(thiswep, actor, weaponentity); weapon_thinkf(actor, weaponentity, WFRAME_FIRE1, WEP_CVAR_PRI(electro, animtime), w_ready); } } @@ -539,7 +546,7 @@ METHOD(Electro, wr_think, void(entity thiswep, entity actor, .entity weaponentit if(time >= actor.electro_secondarytime) if(weapon_prepareattack(thiswep, actor, weaponentity, true, WEP_CVAR_SEC(electro, refire))) { - W_Electro_Attack_Orb(thiswep, actor); + W_Electro_Attack_Orb(thiswep, actor, weaponentity); actor.electro_count = WEP_CVAR_SEC(electro, count); weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(electro, animtime), W_Electro_CheckAttack); actor.electro_secondarytime = time + WEP_CVAR_SEC(electro, refire2) * W_WeaponRateFactor(actor); @@ -573,7 +580,7 @@ METHOD(Electro, wr_resetplayer, void(entity thiswep, entity actor)) } METHOD(Electro, wr_reload, void(entity thiswep, entity actor, .entity weaponentity)) { - W_Reload(actor, min(WEP_CVAR_PRI(electro, ammo), WEP_CVAR_SEC(electro, ammo)), SND_RELOAD); + W_Reload(actor, weaponentity, min(WEP_CVAR_PRI(electro, ammo), WEP_CVAR_SEC(electro, ammo)), SND_RELOAD); } METHOD(Electro, wr_suicidemessage, Notification(entity thiswep)) {