X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmonsters%2Fsv_monsters.qc;h=887ac20ec3be81b4cb4d7c8baf2069dc17212db1;hp=28430e9617e8a9a6666519a444d39df47303a103;hb=ae2c1407ec9a05e4f501a6604a7cce8e1030df9f;hpb=ea48961feb50159e05ef56f38b7fd0ebc15cc64e diff --git a/qcsrc/common/monsters/sv_monsters.qc b/qcsrc/common/monsters/sv_monsters.qc index 28430e9617..887ac20ec3 100644 --- a/qcsrc/common/monsters/sv_monsters.qc +++ b/qcsrc/common/monsters/sv_monsters.qc @@ -7,18 +7,19 @@ #include "../constants.qh" #include "../teams.qh" #include "../util.qh" - #include "monsters.qh" + #include "all.qh" #include "sv_monsters.qh" - #include "../weapons/weapons.qh" + #include "../weapons/all.qh" #include "../../server/autocvars.qh" #include "../../server/defs.qh" #include "../deathtypes.qh" #include "../../server/mutators/mutators_include.qh" #include "../../server/tturrets/include/turrets_early.qh" - #include "../../server/vehicles/vehicles_def.qh" + #include "../vehicles/sv_vehicles.qh" #include "../../server/campaign.qh" #include "../../server/command/common.qh" #include "../../server/command/cmd.qh" + #include "../triggers/triggers.qh" #include "../../csqcmodellib/sv_model.qh" #include "../../server/round_handler.qh" #include "../../server/tturrets/include/turrets.qh" @@ -39,8 +40,7 @@ void monster_dropitem() e.monster_loot = self.monster_loot; - other = e; - MUTATOR_CALLHOOK(MonsterDropItem); + MUTATOR_CALLHOOK(MonsterDropItem, e); e = other; if(e && e.monster_loot) @@ -80,7 +80,7 @@ float monster_isvalidtarget (entity targ, entity ent) //if(trace_ent != targ) //return false; - if(targ.vehicle_flags & VHF_ISVEHICLE) + if(IS_VEHICLE(targ)) if(!((get_monsterinfo(ent.monsterid)).spawnflags & MON_FLAG_RANGED)) return false; // melee attacks are useless against vehicles @@ -99,7 +99,7 @@ float monster_isvalidtarget (entity targ, entity ent) if(IS_SPEC(targ) || IS_OBSERVER(targ)) return false; // enemy is a spectator - if(!(targ.vehicle_flags & VHF_ISVEHICLE)) + if(!IS_VEHICLE(targ)) if(targ.deadflag != DEAD_NO || ent.deadflag != DEAD_NO || targ.health <= 0 || ent.health <= 0) return false; // enemy/self is dead @@ -109,7 +109,7 @@ float monster_isvalidtarget (entity targ, entity ent) if(targ.monster_owner == ent) return false; // don't attack our pet - if(!(targ.vehicle_flags & VHF_ISVEHICLE)) + if(!IS_VEHICLE(targ)) if(targ.flags & FL_NOTARGET) return false; // enemy can't be targeted @@ -181,7 +181,7 @@ void MonsterTouch () return; if(self.enemy != other) - if(!(other.flags & FL_MONSTER)) + if(!IS_MONSTER(other)) if(monster_isvalidtarget(other, self)) self.enemy = other; } @@ -275,9 +275,9 @@ float LoadMonsterSounds(string f, float first) field = GetMonsterSoundSampleField(argv(0)); if(GetMonsterSoundSampleField_notFound) continue; - if(self.field) - strunzone(self.field); - self.field = strzone(strcat(argv(1), " ", argv(2))); + if (self.(field)) + strunzone(self.(field)); + self.(field) = strzone(strcat(argv(1), " ", argv(2))); } fclose(fh); return 1; @@ -305,7 +305,7 @@ void MonsterSound(.string samplefield, float sound_delay, float delaytoo, float if(delaytoo) if(time < self.msound_delay) return; // too early - GlobalSound(self.samplefield, chan, VOICETYPE_PLAYERSOUND); + GlobalSound(self.(samplefield), chan, VOICETYPE_PLAYERSOUND); self.msound_delay = time + sound_delay; } @@ -321,7 +321,7 @@ void monster_makevectors(entity e) makevectors(self.v_angle); } -float monster_melee(entity targ, float damg, float anim, float er, float anim_finished, float deathtype, float dostop) +float monster_melee(entity targ, float damg, float anim, float er, float anim_finished, int deathtype, float dostop) { if (self.health <= 0) return false; // attacking while dead?! @@ -361,7 +361,7 @@ void Monster_CheckMinibossFlag () self.health += autocvar_g_monsters_miniboss_healthboost; self.effects |= EF_RED; if(!self.weapon) - self.weapon = WEP_VORTEX; + self.weapon = WEP_VORTEX.m_id; } } @@ -369,7 +369,7 @@ float Monster_CanRespawn(entity ent) { other = ent; if(ent.deadflag == DEAD_DEAD) // don't call when monster isn't dead - if(MUTATOR_CALLHOOK(MonsterRespawn)) + if(MUTATOR_CALLHOOK(MonsterRespawn, ent)) return true; // enabled by a mutator if(ent.spawnflags & MONSTERFLAG_NORESPAWN) @@ -591,7 +591,7 @@ void monster_CalculateVelocity(entity mon, vector to, vector from, float turnrat { float current_distance = vlen((('1 0 0' * to.x) + ('0 1 0' * to.y)) - (('1 0 0' * from.x) + ('0 1 0' * from.y))); // for the sake of this check, exclude Z axis float initial_height = 0; //min(50, (targ_distance * tanh(20))); - float current_height = (initial_height * min(1, (current_distance / self.pass_distance))); + float current_height = (initial_height * min(1, self.pass_distance ? (current_distance / self.pass_distance) : 0)); //print("current_height = ", ftos(current_height), ", initial_height = ", ftos(initial_height), ".\n"); vector targpos; @@ -715,11 +715,13 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_ targ = self.goalentity; - monster_target = targ; - monster_speed_run = runspeed; - monster_speed_walk = walkspeed; - - if(MUTATOR_CALLHOOK(MonsterMove) || gameover || self.draggedby != world || (round_handler_IsActive() && !round_handler_IsRoundStarted()) || time < game_starttime || (autocvar_g_campaign && !campaign_bots_may_start) || time < self.spawn_time) + if (MUTATOR_CALLHOOK(MonsterMove, runspeed, walkspeed, targ) + || gameover + || self.draggedby != world + || (round_handler_IsActive() && !round_handler_IsRoundStarted()) + || time < game_starttime + || (autocvar_g_campaign && !campaign_bots_may_start) + || time < self.spawn_time) { runspeed = walkspeed = 0; if(time >= self.spawn_time) @@ -728,7 +730,6 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_ return; } - targ = monster_target; runspeed = bound(0, monster_speed_run * Monster_SkillModifier(), runspeed * 2); // limit maxspeed to prevent craziness walkspeed = bound(0, monster_speed_walk * Monster_SkillModifier(), walkspeed * 2); // limit maxspeed to prevent craziness @@ -841,7 +842,7 @@ void monster_remove(entity mon) if(!mon) return; // nothing to remove - pointparticles(particleeffectnum("item_pickup"), mon.origin, '0 0 0', 1); + Send_Effect("item_pickup", mon.origin, '0 0 0', 1); if(mon.weaponentity) remove(mon.weaponentity); @@ -910,7 +911,7 @@ void monsters_reset() self.moveto = self.origin; } -void monsters_corpse_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) +void monsters_corpse_damage (entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) { self.health -= damage; @@ -979,7 +980,7 @@ void monster_die(entity attacker, float gibbed) MON_ACTION(self.monsterid, MR_DEATH); } -void monsters_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) +void monsters_damage (entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) { if(self.frozen && deathtype != DEATH_KILL && deathtype != DEATH_NADE_ICE_FREEZE) return; @@ -1038,9 +1039,8 @@ void monsters_damage (entity inflictor, entity attacker, float damage, float dea WaypointSprite_Kill(self.sprite); - frag_attacker = attacker; frag_target = self; - MUTATOR_CALLHOOK(MonsterDies); + MUTATOR_CALLHOOK(MonsterDies, attacker); if(self.health <= -100 || deathtype == DEATH_KILL) // check if we're already gibbed {