X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmonsters%2Fsv_monsters.qc;h=8658b437f774f2831eb8d1ba4a9f175ac135ab03;hb=e500c4c3ae16913240d1bd0509e68510195f2872;hp=28430e9617e8a9a6666519a444d39df47303a103;hpb=f2c50fe4e6218a0a1bb0ca078ee122c5ba6a238d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/monsters/sv_monsters.qc b/qcsrc/common/monsters/sv_monsters.qc index 28430e961..8658b437f 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 "../../server/vehicles/vehicle.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) @@ -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?! @@ -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 {