]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/monsters/spawn.qc
95e0261aeb511687fe40ae57497945b2a10eaff8
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / monsters / spawn.qc
1 entity spawnmonster (string monster, float mnster, entity spawnedby, entity own, vector orig, float respwn, float moveflag)
2 {
3         if(!spawncode_first_load)
4         {
5                 initialize_field_db();
6                 spawncode_first_load = TRUE;
7         }
8         
9         entity e = spawn();
10         
11         e.spawnflags = MONSTERFLAG_SPAWNED;
12         
13         if not(respwn)
14                 e.spawnflags |= MONSTERFLAG_NORESPAWN;
15         
16         setorigin(e, orig);
17         
18         if(monster != "")
19         {
20                 float i, found = 0;
21                 entity mon;
22                 for(i = MON_FIRST; i <= MON_LAST; ++i)
23                 {
24                         mon = get_monsterinfo(i);
25                         if(mon.netname == monster)
26                         {
27                                 found = TRUE;
28                                 break;
29                         }
30                 }
31                 if not(found)
32                         monster = (get_monsterinfo(MON_FIRST)).netname;
33         }
34                 
35         if(monster == "")
36         if(mnster)
37                 monster = (get_monsterinfo(mnster)).netname;
38         
39         e.realowner = spawnedby;
40         
41         if(moveflag)
42                 e.monster_moveflags = moveflag;
43         
44         if(IS_PLAYER(spawnedby))
45         {
46                 if(teamplay && autocvar_g_monsters_teams)
47                         e.team = spawnedby.team; // colors handled in spawn code
48                         
49                 if(e.team)
50                         e.colormap = 1024;
51                 else
52                         e.colormap = spawnedby.colormap;
53                         
54                 if(autocvar_g_monsters_owners)
55                         e.monster_owner = own; // using .owner makes the monster non-solid for its master
56                         
57                 e.angles = spawnedby.angles;
58         }
59                 
60         monster = strcat("$ spawnfunc_monster_", monster);
61                 
62         target_spawn_edit_entity(e, monster, world, world, world, world, world);
63                 
64         return e;
65 }