MCPcopy Create free account
hub / github.com/demoth/jake2 / monster_start

Method monster_start

game/src/main/java/jake2/game/Monster.java:127–175  ·  view source on GitHub ↗
(SubgameEntity self, GameExportsImpl gameExports)

Source from the content-addressed store, hash-verified

125
126 // ============================================================================
127 public static void monster_start(SubgameEntity self, GameExportsImpl gameExports) {
128 if (gameExports.gameCvars.deathmatch.value != 0) {
129 gameExports.freeEntity(self);
130 return;
131 }
132
133 if ((self.spawnflags & 4) != 0
134 && 0 == (self.monsterinfo.aiflags & GameDefines.AI_GOOD_GUY)) {
135 self.spawnflags &= ~4;
136 self.spawnflags |= 1;
137 // gi.dprintf("fixed spawnflags on %s at %s\n", self.classname,
138 // vtos(self.s.origin));
139 }
140
141 if (0 == (self.monsterinfo.aiflags & GameDefines.AI_GOOD_GUY))
142 gameExports.level.total_monsters++;
143
144 self.think.nextTime = gameExports.level.time + Defines.FRAMETIME;
145 self.svflags |= Defines.SVF_MONSTER;
146 self.s.renderfx |= Defines.RF_FRAMELERP;
147 self.takedamage = Defines.DAMAGE_AIM;
148 self.air_finished = gameExports.level.time + 12;
149 self.use = GameUtil.monster_use;
150 self.max_health = self.health;
151 self.clipmask = Defines.MASK_MONSTERSOLID;
152
153 self.s.skinnum = 0;
154 self.deadflag = GameDefines.DEAD_NO;
155 self.svflags &= ~Defines.SVF_DEADMONSTER;
156
157 if (null == self.monsterinfo.checkattack)
158 self.monsterinfo.checkattack = GameUtil.M_CheckAttack;
159 Math3D.VectorCopy(self.s.origin, self.s.old_origin);
160
161 if (self.st.item != null && self.st.item.length() > 0) {
162 self.item = GameItems.FindItemByClassname(self.st.item, gameExports);
163 if (self.item == null)
164 gameExports.gameImports.dprintf("monster_start:" + self.classname + " at "
165 + Lib.vtos(self.s.origin) + " has bad item: "
166 + self.st.item + "\n");
167 }
168
169 // randomize what frame they start on
170 if (self.monsterinfo.currentmove != null)
171 self.s.frame = self.monsterinfo.currentmove.firstframe
172 + (Lib.rand() % (self.monsterinfo.currentmove.lastframe
173 - self.monsterinfo.currentmove.firstframe + 1));
174
175 }
176
177 public static void monster_start_go(SubgameEntity self, GameExportsImpl gameExports) {
178

Callers 2

walkmonster_startMethod · 0.95
thinkMethod · 0.95

Calls 6

VectorCopyMethod · 0.95
FindItemByClassnameMethod · 0.95
vtosMethod · 0.95
randMethod · 0.95
freeEntityMethod · 0.80
dprintfMethod · 0.65

Tested by

no test coverage detected