X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmonsters%2Fspawn.qc;h=70459263f1087da264e10fe71d95b218bbf59279;hb=068324d293df795dbc41de75f38256b8c6c35607;hp=8aee54b98084fe36279553eb5ab761f7de4046af;hpb=37903827937b44f174275a75d2dab5301b8ab53e;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/monsters/spawn.qc b/qcsrc/common/monsters/spawn.qc index 8aee54b98..70459263f 100644 --- a/qcsrc/common/monsters/spawn.qc +++ b/qcsrc/common/monsters/spawn.qc @@ -1,29 +1,22 @@ #if defined(CSQC) #elif defined(MENUQC) #elif defined(SVQC) - #include "../../dpdefs/progsdefs.qh" #include "../util.qh" - #include "monsters.qh" + #include "all.qh" #include "sv_monsters.qh" #include "spawn.qh" - #include "../../server/autocvars.qh" - #include "../../server/defs.qh" + #include + #include #endif entity spawnmonster (string monster, float monster_id, entity spawnedby, entity own, vector orig, float respwn, float invincible, float moveflag) -{ - // ensure spawnfunc database is initialized - //initialize_field_db(); - +{SELFPARAM(); + float i; entity e = spawn(); - float i; e.spawnflags = MONSTERFLAG_SPAWNED; - if(!respwn) - e.spawnflags |= MONSTERFLAG_NORESPAWN; - - if(invincible) - e.spawnflags |= MONSTERFLAG_INVINCIBLE; + if(!respwn) { e.spawnflags |= MONSTERFLAG_NORESPAWN; } + if(invincible) { e.spawnflags |= MONSTERFLAG_INVINCIBLE; } setorigin(e, orig); @@ -31,12 +24,11 @@ entity spawnmonster (string monster, float monster_id, entity spawnedby, entity { RandomSelection_Init(); for(i = MON_FIRST; i <= MON_LAST; ++i) - RandomSelection_Add(world, 0, (get_monsterinfo(i)).netname, 1, 1); + RandomSelection_Add(world, i, string_null, 1, 1); - monster = RandomSelection_chosen_string; + monster_id = RandomSelection_chosen_float; } - - if(monster != "") + else if(monster != "") { float found = 0; entity mon; @@ -51,13 +43,9 @@ entity spawnmonster (string monster, float monster_id, entity spawnedby, entity } } if(!found) - monster = (get_monsterinfo(MON_FIRST)).netname; + monster_id = ((monster_id > 0) ? monster_id : MON_FIRST); } - if(monster == "") - if(monster_id) - monster = (get_monsterinfo(monster_id)).netname; - e.realowner = spawnedby; if(moveflag) @@ -69,19 +57,13 @@ entity spawnmonster (string monster, float monster_id, entity spawnedby, entity e.team = spawnedby.team; // colors handled in spawn code if(autocvar_g_monsters_owners) - e.monster_owner = own; // using .owner makes the monster non-solid for its master + e.monster_follow = own; // using .owner makes the monster non-solid for its master - e.angles = spawnedby.angles; + e.angles_y = spawnedby.angles_y; } - //monster = strcat("$ spawnfunc_monster_", monster); - - entity oldself = self; - self = e; - monster_initialize(monster_id); - self = oldself; - - //target_spawn_edit_entity(e, monster, world, world, world, world, world); + // Monster_Spawn checks if monster is valid + Monster_Spawn(e, monster_id); return e; }