X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fweapon%2Ffireball.qc;h=2add2e4685eb26ef9b091429e7ce7efe1521ddf7;hp=4010def843f9273fc4e5da3b183bfc76c1af610f;hb=d492869ab1f18e05121529b7bcffcb637d13994c;hpb=12150869d71c8ff952778108e82f665530d60778 diff --git a/qcsrc/common/weapons/weapon/fireball.qc b/qcsrc/common/weapons/weapon/fireball.qc index 4010def84..2add2e468 100644 --- a/qcsrc/common/weapons/weapon/fireball.qc +++ b/qcsrc/common/weapons/weapon/fireball.qc @@ -4,7 +4,7 @@ CLASS(Fireball, Weapon) /* ammotype */ //ATTRIB(Fireball, ammo_field, .int, ammo_none); /* impulse */ ATTRIB(Fireball, impulse, int, 9); /* flags */ ATTRIB(Fireball, spawnflags, int, WEP_FLAG_SUPERWEAPON | WEP_TYPE_SPLASH); -/* rating */ ATTRIB(Fireball, bot_pickupbasevalue, float, BOT_PICKUP_RATING_MID); +/* rating */ ATTRIB(Fireball, bot_pickupbasevalue, float, 5000); /* color */ ATTRIB(Fireball, wpcolor, vector, '1 0.5 0'); /* modelname */ ATTRIB(Fireball, mdl, string, "fireball"); #ifdef GAMEQC @@ -56,7 +56,7 @@ REGISTER_WEAPON(FIREBALL, fireball, NEW(Fireball)); #ifdef SVQC .float bot_primary_fireballmooth; // whatever a mooth is .vector fireball_impactvec; -.float fireball_primarytime[MAX_WEAPONSLOTS]; +.float fireball_primarytime; #endif #endif #ifdef IMPLEMENTATION @@ -150,7 +150,7 @@ void W_Fireball_LaserPlay(entity this, float dt, float dist, float damage, float if(d < dist) { e.fireball_impactvec = p; - RandomSelection_Add(e, 0, string_null, 1 / (1 + d), !Fire_IsBurning(e)); + RandomSelection_AddEnt(e, 1 / (1 + d), !Fire_IsBurning(e)); } } if(RandomSelection_chosen_ent) @@ -364,13 +364,13 @@ void W_Fireball_Attack2(entity actor, .entity weaponentity) MUTATOR_CALLHOOK(EditProjectile, actor, proj); } -METHOD(Fireball, wr_aim, void(entity thiswep, entity actor)) +METHOD(Fireball, wr_aim, void(entity thiswep, entity actor, .entity weaponentity)) { PHYS_INPUT_BUTTON_ATCK(actor) = false; PHYS_INPUT_BUTTON_ATCK2(actor) = false; if(actor.bot_primary_fireballmooth == 0) { - if(bot_aim(actor, WEP_CVAR_PRI(fireball, speed), 0, WEP_CVAR_PRI(fireball, lifetime), false)) + if(bot_aim(actor, weaponentity, WEP_CVAR_PRI(fireball, speed), 0, WEP_CVAR_PRI(fireball, lifetime), false)) { PHYS_INPUT_BUTTON_ATCK(actor) = true; if(random() < 0.02) actor.bot_primary_fireballmooth = 0; @@ -378,7 +378,7 @@ METHOD(Fireball, wr_aim, void(entity thiswep, entity actor)) } else { - if(bot_aim(actor, WEP_CVAR_SEC(fireball, speed), WEP_CVAR_SEC(fireball, speed_up), WEP_CVAR_SEC(fireball, lifetime), true)) + if(bot_aim(actor, weaponentity, WEP_CVAR_SEC(fireball, speed), WEP_CVAR_SEC(fireball, speed_up), WEP_CVAR_SEC(fireball, lifetime), true)) { PHYS_INPUT_BUTTON_ATCK2(actor) = true; if(random() < 0.01) actor.bot_primary_fireballmooth = 1; @@ -389,12 +389,11 @@ METHOD(Fireball, wr_think, void(entity thiswep, entity actor, .entity weaponenti { if(fire & 1) { - int slot = weaponslot(weaponentity); - if(time >= actor.fireball_primarytime[slot]) + if(time >= actor.(weaponentity).fireball_primarytime) if(weapon_prepareattack(thiswep, actor, weaponentity, false, WEP_CVAR_PRI(fireball, refire))) { W_Fireball_Attack1_Frame0(thiswep, actor, weaponentity, fire); - actor.fireball_primarytime[slot] = time + WEP_CVAR_PRI(fireball, refire2) * W_WeaponRateFactor(actor); + actor.(weaponentity).fireball_primarytime = time + WEP_CVAR_PRI(fireball, refire2) * W_WeaponRateFactor(actor); } } else if(fire & 2) @@ -417,7 +416,10 @@ METHOD(Fireball, wr_checkammo2, bool(entity thiswep, entity actor, .entity weapo METHOD(Fireball, wr_resetplayer, void(entity thiswep, entity actor)) { for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) - actor.fireball_primarytime[slot] = time; + { + .entity weaponentity = weaponentities[slot]; + actor.(weaponentity).fireball_primarytime = time; + } } METHOD(Fireball, wr_suicidemessage, Notification(entity thiswep)) {