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