export SP_info_camp
code
proc SP_info_camp 4 8
file "../g_misc.c"
line 24
;1:// Copyright (C) 1999-2000 Id Software, Inc.
;2://
;3:// g_misc.c
;4:
;5:#include "g_local.h"
;6:
;7:#include "ai_main.h" //for the g2animents
;8:
;9:#define HOLOCRON_RESPAWN_TIME 30000
;10:#define MAX_AMMO_GIVE 2
;11:#define STATION_RECHARGE_TIME 3000//800
;12:
;13:void HolocronThink(gentity_t *ent);
;14:extern vmCvar_t g_MaxHolocronCarry;
;15:
;16:/*QUAKED func_group (0 0 0) ?
;17:Used to group brushes together just for editor convenience.  They are turned into normal brushes by the utilities.
;18:*/
;19:
;20:
;21:/*QUAKED info_camp (0 0.5 0) (-4 -4 -4) (4 4 4)
;22:Used as a positional target for calculations in the utilities (spotlights, etc), but removed during gameplay.
;23:*/
;24:void SP_info_camp( gentity_t *self ) {
line 25
;25:	G_SetOrigin( self, self->s.origin );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 26
;26:}
LABELV $92
endproc SP_info_camp 4 8
export SP_info_null
proc SP_info_null 0 4
line 32
;27:
;28:
;29:/*QUAKED info_null (0 0.5 0) (-4 -4 -4) (4 4 4)
;30:Used as a positional target for calculations in the utilities (spotlights, etc), but removed during gameplay.
;31:*/
;32:void SP_info_null( gentity_t *self ) {
line 33
;33:	G_FreeEntity( self );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 34
;34:}
LABELV $93
endproc SP_info_null 0 4
export SP_info_notnull
proc SP_info_notnull 4 8
line 41
;35:
;36:
;37:/*QUAKED info_notnull (0 0.5 0) (-4 -4 -4) (4 4 4)
;38:Used as a positional target for in-game calculation, like jumppad targets.
;39:target_position does the same thing
;40:*/
;41:void SP_info_notnull( gentity_t *self ){
line 42
;42:	G_SetOrigin( self, self->s.origin );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 43
;43:}
LABELV $94
endproc SP_info_notnull 4 8
export SP_light
proc SP_light 0 4
line 53
;44:
;45:
;46:/*QUAKED light (0 1 0) (-8 -8 -8) (8 8 8) linear
;47:Non-displayed light.
;48:"light" overrides the default 300 intensity.
;49:Linear checbox gives linear falloff instead of inverse square
;50:Lights pointed at a target will be spotlights.
;51:"radius" overrides the default 64 unit radius of a spotlight at the target point.
;52:*/
;53:void SP_light( gentity_t *self ) {
line 54
;54:	G_FreeEntity( self );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 55
;55:}
LABELV $95
endproc SP_light 0 4
export TeleportPlayer
proc TeleportPlayer 40 16
line 67
;56:
;57:
;58:
;59:/*
;60:=================================================================================
;61:
;62:TELEPORTERS
;63:
;64:=================================================================================
;65:*/
;66:
;67:void TeleportPlayer( gentity_t *player, vec3_t origin, vec3_t angles ) {
line 72
;68:	gentity_t	*tent;
;69:
;70:	// use temp events at source and destination to prevent the effect
;71:	// from getting dropped by a second player event
;72:	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR ) {
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $97
line 73
;73:		tent = G_TempEntity( player->client->ps.origin, EV_PLAYER_TELEPORT_OUT );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 60
ARGI4
ADDRLP4 4
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 74
;74:		tent->s.clientNum = player->s.clientNum;
ADDRLP4 8
CNSTI4 220
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 8
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 76
;75:
;76:		tent = G_TempEntity( origin, EV_PLAYER_TELEPORT_IN );
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 59
ARGI4
ADDRLP4 12
ADDRGP4 G_TempEntity
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 12
INDIRP4
ASGNP4
line 77
;77:		tent->s.clientNum = player->s.clientNum;
ADDRLP4 16
CNSTI4 220
ASGNI4
ADDRLP4 0
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
ADDRFP4 0
INDIRP4
ADDRLP4 16
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 78
;78:	}
LABELV $97
line 81
;79:
;80:	// unlink to make sure it can't possibly interfere with G_KillBox
;81:	trap_UnlinkEntity (player);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_UnlinkEntity
CALLV
pop
line 83
;82:
;83:	VectorCopy ( origin, player->client->ps.origin );
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ADDRFP4 4
INDIRP4
INDIRB
ASGNB 12
line 84
;84:	player->client->ps.origin[2] += 1;
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRF4
CNSTF4 1065353216
ADDF4
ASGNF4
line 87
;85:
;86:	// spit the player out
;87:	AngleVectors( angles, player->client->ps.velocity, NULL, NULL );
ADDRFP4 8
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
ARGP4
ADDRLP4 8
CNSTP4 0
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 88
;88:	VectorScale( player->client->ps.velocity, 400, player->client->ps.velocity );
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 32
ADDP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTF4 1137180672
ADDRLP4 12
INDIRP4
INDIRF4
MULF4
ASGNF4
ADDRLP4 16
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 36
ADDP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTF4 1137180672
ADDRLP4 16
INDIRP4
INDIRF4
MULF4
ASGNF4
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 40
ADDP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTF4 1137180672
ADDRLP4 20
INDIRP4
INDIRF4
MULF4
ASGNF4
line 89
;89:	player->client->ps.pm_time = 160;		// hold time
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 16
ADDP4
CNSTI4 160
ASGNI4
line 90
;90:	player->client->ps.pm_flags |= PMF_TIME_KNOCKBACK;
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 12
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
CNSTI4 64
BORI4
ASGNI4
line 93
;91:
;92:	// toggle the teleport bit so the client knows to not lerp
;93:	player->client->ps.eFlags ^= EF_TELEPORT_BIT;
ADDRLP4 28
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 108
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
CNSTI4 4
BXORI4
ASGNI4
line 96
;94:
;95:	// set angles
;96:	SetClientViewAngle( player, angles );
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 8
INDIRP4
ARGP4
ADDRGP4 SetClientViewAngle
CALLV
pop
line 99
;97:
;98:	// kill anything at the destination
;99:	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR ) {
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $99
line 100
;100:		G_KillBox (player);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_KillBox
CALLV
pop
line 101
;101:	}
LABELV $99
line 104
;102:
;103:	// save results of pmove
;104:	BG_PlayerStateToEntityState( &player->client->ps, &player->s, qtrue );
ADDRLP4 32
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 32
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ARGP4
ADDRLP4 32
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRGP4 BG_PlayerStateToEntityState
CALLV
pop
line 107
;105:
;106:	// use the precise origin for linking
;107:	VectorCopy( player->client->ps.origin, player->r.currentOrigin );
ADDRLP4 36
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI4 368
ADDP4
ADDRLP4 36
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 109
;108:
;109:	if ( player->client->sess.sessionTeam != TEAM_SPECTATOR ) {
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $101
line 110
;110:		trap_LinkEntity (player);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 111
;111:	}
LABELV $101
line 112
;112:}
LABELV $96
endproc TeleportPlayer 40 16
export SP_misc_teleporter_dest
proc SP_misc_teleporter_dest 0 0
line 120
;113:
;114:
;115:/*QUAKED misc_teleporter_dest (1 0 0) (-32 -32 -24) (32 32 -16)
;116:Point teleporters at these.
;117:Now that we don't have teleport destination pads, this is just
;118:an info_notnull
;119:*/
;120:void SP_misc_teleporter_dest( gentity_t *ent ) {
line 121
;121:}
LABELV $103
endproc SP_misc_teleporter_dest 0 0
export SP_misc_model
proc SP_misc_model 0 4
line 129
;122:
;123:
;124://===========================================================
;125:
;126:/*QUAKED misc_model (1 0 0) (-16 -16 -16) (16 16 16)
;127:"model"		arbitrary .md3 file to display
;128:*/
;129:void SP_misc_model( gentity_t *ent ) {
line 140
;130:
;131:#if 0
;132:	ent->s.modelindex = G_ModelIndex( ent->model );
;133:	VectorSet (ent->mins, -16, -16, -16);
;134:	VectorSet (ent->maxs, 16, 16, 16);
;135:	trap_LinkEntity (ent);
;136:
;137:	G_SetOrigin( ent, ent->s.origin );
;138:	VectorCopy( ent->s.angles, ent->s.apos.trBase );
;139:#else
;140:	G_FreeEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 142
;141:#endif
;142:}
LABELV $104
endproc SP_misc_model 0 4
export SP_misc_G2model
proc SP_misc_G2model 0 4
line 148
;143:
;144:
;145:/*QUAKED misc_G2model (1 0 0) (-16 -16 -16) (16 16 16)
;146:"model"		arbitrary .glm file to display
;147:*/
;148:void SP_misc_G2model( gentity_t *ent ) {
line 162
;149:
;150:#if 0
;151:	char name1[200] = "models/players/kyle/modelmp.glm";
;152:	trap_G2API_InitGhoul2Model(&ent->s, name1, G_ModelIndex( name1 ), 0, 0, 0, 0);
;153:	trap_G2API_SetBoneAnim(ent->s.ghoul2, 0, "model_root", 0, 12, BONE_ANIM_OVERRIDE_LOOP, 1.0f, level.time, -1, -1);
;154:	ent->s.radius = 150;
;155://	VectorSet (ent->mins, -16, -16, -16);
;156://	VectorSet (ent->maxs, 16, 16, 16);
;157:	trap_LinkEntity (ent);
;158:
;159:	G_SetOrigin( ent, ent->s.origin );
;160:	VectorCopy( ent->s.angles, ent->s.apos.trBase );
;161:#else
;162:	G_FreeEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 164
;163:#endif
;164:}
LABELV $105
endproc SP_misc_G2model 0 4
export locateCamera
proc locateCamera 52 8
line 168
;165:
;166://===========================================================
;167:
;168:void locateCamera( gentity_t *ent ) {
line 173
;169:	vec3_t		dir;
;170:	gentity_t	*target;
;171:	gentity_t	*owner;
;172:
;173:	owner = G_PickTarget( ent->target );
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 G_PickTarget
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 20
INDIRP4
ASGNP4
line 174
;174:	if ( !owner ) {
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $107
line 175
;175:		G_Printf( "Couldn't find target for misc_partal_surface\n" );
ADDRGP4 $109
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 176
;176:		G_FreeEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 177
;177:		return;
ADDRGP4 $106
JUMPV
LABELV $107
line 179
;178:	}
;179:	ent->r.ownerNum = owner->s.number;
ADDRFP4 0
INDIRP4
CNSTI4 396
ADDP4
ADDRLP4 0
INDIRP4
INDIRI4
ASGNI4
line 182
;180:
;181:	// frame holds the rotate speed
;182:	if ( owner->spawnflags & 1 ) {
ADDRLP4 0
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
CNSTI4 1
BANDI4
CNSTI4 0
EQI4 $110
line 183
;183:		ent->s.frame = 25;
ADDRFP4 0
INDIRP4
CNSTI4 224
ADDP4
CNSTI4 25
ASGNI4
line 184
;184:	} else if ( owner->spawnflags & 2 ) {
ADDRGP4 $111
JUMPV
LABELV $110
ADDRLP4 0
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
CNSTI4 2
BANDI4
CNSTI4 0
EQI4 $112
line 185
;185:		ent->s.frame = 75;
ADDRFP4 0
INDIRP4
CNSTI4 224
ADDP4
CNSTI4 75
ASGNI4
line 186
;186:	}
LABELV $112
LABELV $111
line 189
;187:
;188:	// swing camera ?
;189:	if ( owner->spawnflags & 4 ) {
ADDRLP4 0
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
CNSTI4 4
BANDI4
CNSTI4 0
EQI4 $114
line 191
;190:		// set to 0 for no rotation at all
;191:		ent->s.powerups = 0;
ADDRFP4 0
INDIRP4
CNSTI4 272
ADDP4
CNSTI4 0
ASGNI4
line 192
;192:	}
ADDRGP4 $115
JUMPV
LABELV $114
line 193
;193:	else {
line 194
;194:		ent->s.powerups = 1;
ADDRFP4 0
INDIRP4
CNSTI4 272
ADDP4
CNSTI4 1
ASGNI4
line 195
;195:	}
LABELV $115
line 198
;196:
;197:	// clientNum holds the rotate offset
;198:	ent->s.clientNum = owner->s.clientNum;
ADDRLP4 24
CNSTI4 220
ASGNI4
ADDRFP4 0
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
ADDRLP4 0
INDIRP4
ADDRLP4 24
INDIRI4
ADDP4
INDIRI4
ASGNI4
line 200
;199:
;200:	VectorCopy( owner->s.origin, ent->s.origin2 );
ADDRFP4 0
INDIRP4
CNSTI4 104
ADDP4
ADDRLP4 0
INDIRP4
CNSTI4 92
ADDP4
INDIRB
ASGNB 12
line 203
;201:
;202:	// see if the portal_camera has a target
;203:	target = G_PickTarget( owner->target );
ADDRLP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 G_PickTarget
CALLP4
ASGNP4
ADDRLP4 16
ADDRLP4 28
INDIRP4
ASGNP4
line 204
;204:	if ( target ) {
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $116
line 205
;205:		VectorSubtract( target->s.origin, owner->s.origin, dir );
ADDRLP4 36
CNSTI4 92
ASGNI4
ADDRLP4 4
ADDRLP4 16
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 44
CNSTI4 96
ASGNI4
ADDRLP4 4+4
ADDRLP4 16
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
ADDRLP4 44
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 48
CNSTI4 100
ASGNI4
ADDRLP4 4+8
ADDRLP4 16
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRF4
ADDRLP4 0
INDIRP4
ADDRLP4 48
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 206
;206:		VectorNormalize( dir );
ADDRLP4 4
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 207
;207:	} else {
ADDRGP4 $117
JUMPV
LABELV $116
line 208
;208:		G_SetMovedir( owner->s.angles, dir );
ADDRLP4 0
INDIRP4
CNSTI4 116
ADDP4
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 G_SetMovedir
CALLV
pop
line 209
;209:	}
LABELV $117
line 211
;210:
;211:	ent->s.eventParm = DirToByte( dir );
ADDRLP4 4
ARGP4
ADDRLP4 32
ADDRGP4 DirToByte
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 256
ADDP4
ADDRLP4 32
INDIRI4
ASGNI4
line 212
;212:}
LABELV $106
endproc locateCamera 52 8
export SP_misc_portal_surface
proc SP_misc_portal_surface 20 4
line 218
;213:
;214:/*QUAKED misc_portal_surface (0 0 1) (-8 -8 -8) (8 8 8)
;215:The portal surface nearest this entity will show a view from the targeted misc_portal_camera, or a mirror view if untargeted.
;216:This must be within 64 world units of the surface!
;217:*/
;218:void SP_misc_portal_surface(gentity_t *ent) {
line 219
;219:	VectorClear( ent->r.mins );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
CNSTF4 0
ASGNF4
ADDRLP4 0
INDIRP4
CNSTI4 324
ADDP4
ADDRLP4 4
INDIRF4
ASGNF4
ADDRLP4 0
INDIRP4
CNSTI4 320
ADDP4
ADDRLP4 4
INDIRF4
ASGNF4
ADDRLP4 0
INDIRP4
CNSTI4 316
ADDP4
ADDRLP4 4
INDIRF4
ASGNF4
line 220
;220:	VectorClear( ent->r.maxs );
ADDRLP4 8
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
CNSTF4 0
ASGNF4
ADDRLP4 8
INDIRP4
CNSTI4 336
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
ADDRLP4 8
INDIRP4
CNSTI4 332
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
ADDRLP4 8
INDIRP4
CNSTI4 328
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
line 221
;221:	trap_LinkEntity (ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 223
;222:
;223:	ent->r.svFlags = SVF_PORTAL;
ADDRFP4 0
INDIRP4
CNSTI4 304
ADDP4
CNSTI4 64
ASGNI4
line 224
;224:	ent->s.eType = ET_PORTAL;
ADDRFP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 8
ASGNI4
line 226
;225:
;226:	if ( !ent->target ) {
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $121
line 227
;227:		VectorCopy( ent->s.origin, ent->s.origin2 );
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 104
ADDP4
ADDRLP4 16
INDIRP4
CNSTI4 92
ADDP4
INDIRB
ASGNB 12
line 228
;228:	} else {
ADDRGP4 $122
JUMPV
LABELV $121
line 229
;229:		ent->think = locateCamera;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 locateCamera
ASGNP4
line 230
;230:		ent->nextthink = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 231
;231:	}
LABELV $122
line 232
;232:}
LABELV $120
endproc SP_misc_portal_surface 20 4
export SP_misc_portal_camera
proc SP_misc_portal_camera 20 12
line 238
;233:
;234:/*QUAKED misc_portal_camera (0 0 1) (-8 -8 -8) (8 8 8) slowrotate fastrotate noswing
;235:The target for a misc_portal_director.  You can set either angles or target another entity to determine the direction of view.
;236:"roll" an angle modifier to orient the camera around the target vector;
;237:*/
;238:void SP_misc_portal_camera(gentity_t *ent) {
line 241
;239:	float	roll;
;240:
;241:	VectorClear( ent->r.mins );
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
CNSTF4 0
ASGNF4
ADDRLP4 4
INDIRP4
CNSTI4 324
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
ADDRLP4 4
INDIRP4
CNSTI4 320
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
ADDRLP4 4
INDIRP4
CNSTI4 316
ADDP4
ADDRLP4 8
INDIRF4
ASGNF4
line 242
;242:	VectorClear( ent->r.maxs );
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
CNSTF4 0
ASGNF4
ADDRLP4 12
INDIRP4
CNSTI4 336
ADDP4
ADDRLP4 16
INDIRF4
ASGNF4
ADDRLP4 12
INDIRP4
CNSTI4 332
ADDP4
ADDRLP4 16
INDIRF4
ASGNF4
ADDRLP4 12
INDIRP4
CNSTI4 328
ADDP4
ADDRLP4 16
INDIRF4
ASGNF4
line 243
;243:	trap_LinkEntity (ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 245
;244:
;245:	G_SpawnFloat( "roll", "0", &roll );
ADDRGP4 $125
ARGP4
ADDRGP4 $126
ARGP4
ADDRLP4 0
ARGP4
ADDRGP4 G_SpawnFloat
CALLI4
pop
line 247
;246:
;247:	ent->s.clientNum = roll/360.0 * 256;
ADDRFP4 0
INDIRP4
CNSTI4 220
ADDP4
CNSTF4 1132462080
ADDRLP4 0
INDIRF4
CNSTF4 1135869952
DIVF4
MULF4
CVFI4 4
ASGNI4
line 248
;248:}
LABELV $124
endproc SP_misc_portal_camera 20 12
export HolocronRespawn
proc HolocronRespawn 4 0
line 294
;249:
;250:/*QUAKED misc_holocron (0 0 1) (-8 -8 -8) (8 8 8)
;251:count	Set to type of holocron (based on force power value)
;252:	HEAL = 0
;253:	JUMP = 1
;254:	SPEED = 2
;255:	PUSH = 3
;256:	PULL = 4
;257:	TELEPATHY = 5
;258:	GRIP = 6
;259:	LIGHTNING = 7
;260:	RAGE = 8
;261:	PROTECT = 9
;262:	ABSORB = 10
;263:	TEAM HEAL = 11
;264:	TEAM FORCE = 12
;265:	DRAIN = 13
;266:	SEE = 14
;267:	SABERATTACK = 15
;268:	SABERDEFEND = 16
;269:	SABERTHROW = 17
;270:*/
;271:
;272:/*char *holocronTypeModels[] = {
;273:	"models/chunks/rock/rock_big.md3",//FP_HEAL,
;274:	"models/chunks/rock/rock_big.md3",//FP_LEVITATION,
;275:	"models/chunks/rock/rock_big.md3",//FP_SPEED,
;276:	"models/chunks/rock/rock_big.md3",//FP_PUSH,
;277:	"models/chunks/rock/rock_big.md3",//FP_PULL,
;278:	"models/chunks/rock/rock_big.md3",//FP_TELEPATHY,
;279:	"models/chunks/rock/rock_big.md3",//FP_GRIP,
;280:	"models/chunks/rock/rock_big.md3",//FP_LIGHTNING,
;281:	"models/chunks/rock/rock_big.md3",//FP_RAGE,
;282:	"models/chunks/rock/rock_big.md3",//FP_PROTECT,
;283:	"models/chunks/rock/rock_big.md3",//FP_ABSORB,
;284:	"models/chunks/rock/rock_big.md3",//FP_TEAM_HEAL,
;285:	"models/chunks/rock/rock_big.md3",//FP_TEAM_FORCE,
;286:	"models/chunks/rock/rock_big.md3",//FP_DRAIN,
;287:	"models/chunks/rock/rock_big.md3",//FP_SEE
;288:	"models/chunks/rock/rock_big.md3",//FP_SABERATTACK
;289:	"models/chunks/rock/rock_big.md3",//FP_SABERDEFEND
;290:	"models/chunks/rock/rock_big.md3"//FP_SABERTHROW
;291:};*/
;292:
;293:void HolocronRespawn(gentity_t *self)
;294:{
line 295
;295:	self->s.modelindex = (self->count - 128);
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 128
SUBI4
ASGNI4
line 296
;296:}
LABELV $127
endproc HolocronRespawn 4 0
export HolocronPopOut
proc HolocronPopOut 12 8
line 299
;297:
;298:void HolocronPopOut(gentity_t *self)
;299:{
line 300
;300:	if (Q_irand(1, 10) < 5)
CNSTI4 1
ARGI4
CNSTI4 10
ARGI4
ADDRLP4 0
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 5
GEI4 $129
line 301
;301:	{
line 302
;302:		self->s.pos.trDelta[0] = 150 + Q_irand(1, 100);
CNSTI4 1
ARGI4
CNSTI4 100
ARGI4
ADDRLP4 4
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 36
ADDP4
ADDRLP4 4
INDIRI4
CNSTI4 150
ADDI4
CVIF4 4
ASGNF4
line 303
;303:	}
ADDRGP4 $130
JUMPV
LABELV $129
line 305
;304:	else
;305:	{
line 306
;306:		self->s.pos.trDelta[0] = -150 - Q_irand(1, 100);
CNSTI4 1
ARGI4
CNSTI4 100
ARGI4
ADDRLP4 4
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 36
ADDP4
CNSTI4 -150
ADDRLP4 4
INDIRI4
SUBI4
CVIF4 4
ASGNF4
line 307
;307:	}
LABELV $130
line 308
;308:	if (Q_irand(1, 10) < 5)
CNSTI4 1
ARGI4
CNSTI4 10
ARGI4
ADDRLP4 4
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 5
GEI4 $131
line 309
;309:	{
line 310
;310:		self->s.pos.trDelta[1] = 150 + Q_irand(1, 100);
CNSTI4 1
ARGI4
CNSTI4 100
ARGI4
ADDRLP4 8
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 40
ADDP4
ADDRLP4 8
INDIRI4
CNSTI4 150
ADDI4
CVIF4 4
ASGNF4
line 311
;311:	}
ADDRGP4 $132
JUMPV
LABELV $131
line 313
;312:	else
;313:	{
line 314
;314:		self->s.pos.trDelta[1] = -150 - Q_irand(1, 100);
CNSTI4 1
ARGI4
CNSTI4 100
ARGI4
ADDRLP4 8
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 40
ADDP4
CNSTI4 -150
ADDRLP4 8
INDIRI4
SUBI4
CVIF4 4
ASGNF4
line 315
;315:	}
LABELV $132
line 316
;316:	self->s.pos.trDelta[2] = 150 + Q_irand(1, 100);
CNSTI4 1
ARGI4
CNSTI4 100
ARGI4
ADDRLP4 8
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 44
ADDP4
ADDRLP4 8
INDIRI4
CNSTI4 150
ADDI4
CVIF4 4
ASGNF4
line 317
;317:}
LABELV $128
endproc HolocronPopOut 12 8
export HolocronTouch
proc HolocronTouch 44 12
line 320
;318:
;319:void HolocronTouch(gentity_t *self, gentity_t *other, trace_t *trace)
;320:{
line 321
;321:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 322
;322:	int othercarrying = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 323
;323:	float time_lowest = 0;
ADDRLP4 16
CNSTF4 0
ASGNF4
line 324
;324:	int index_lowest = -1;
ADDRLP4 20
CNSTI4 -1
ASGNI4
line 325
;325:	int hasall = 1;
ADDRLP4 4
CNSTI4 1
ASGNI4
line 326
;326:	int forceReselect = WP_NONE;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 328
;327:
;328:	if (trace)
ADDRFP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $134
line 329
;329:	{
line 330
;330:		self->s.groundEntityNum = trace->entityNum;
ADDRFP4 0
INDIRP4
CNSTI4 192
ADDP4
ADDRFP4 8
INDIRP4
CNSTI4 52
ADDP4
INDIRI4
ASGNI4
line 331
;331:	}
LABELV $134
line 333
;332:
;333:	if (!other || !other->client || other->health < 1)
ADDRLP4 24
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 28
CNSTU4 0
ASGNU4
ADDRLP4 24
INDIRP4
CVPU4 4
ADDRLP4 28
INDIRU4
EQU4 $139
ADDRLP4 24
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 28
INDIRU4
EQU4 $139
ADDRLP4 24
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $136
LABELV $139
line 334
;334:	{
line 335
;335:		return;
ADDRGP4 $133
JUMPV
LABELV $136
line 338
;336:	}
;337:
;338:	if (!self->s.modelindex)
ADDRFP4 0
INDIRP4
CNSTI4 212
ADDP4
INDIRI4
CNSTI4 0
NEI4 $140
line 339
;339:	{
line 340
;340:		return;
ADDRGP4 $133
JUMPV
LABELV $140
line 343
;341:	}
;342:
;343:	if (self->enemy)
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $142
line 344
;344:	{
line 345
;345:		return;
ADDRGP4 $133
JUMPV
LABELV $142
line 357
;346:	}
;347:
;348:	// adnan
;349:   // killed holocron crap
;350:   /*
;351:   if (other->client->ps.holocronsCarried[self->count])
;352:	{
;353:		return;
;354:	}
;355:   */
;356:
;357:	if (other->client->ps.holocronCantTouch == self->s.number && other->client->ps.holocronCantTouchTime > level.time)
ADDRLP4 32
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 32
INDIRP4
CNSTI4 644
ADDP4
INDIRI4
ADDRFP4 0
INDIRP4
INDIRI4
NEI4 $148
ADDRLP4 32
INDIRP4
CNSTI4 648
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LEF4 $148
line 358
;358:	{
line 359
;359:		return;
ADDRGP4 $133
JUMPV
LABELV $147
line 365
;360:	}
;361:
;362:	
;363:   
;364:   while (i < NUM_FORCE_POWERS)
;365:	{
line 381
;366:		// adnan
;367:      // killed holocron crap
;368:      /*
;369:      if (other->client->ps.holocronsCarried[i])
;370:		{
;371:			othercarrying++;
;372:
;373:			if (index_lowest == -1 || other->client->ps.holocronsCarried[i] < time_lowest)
;374:			{
;375:				index_lowest = i;
;376:				time_lowest = other->client->ps.holocronsCarried[i];
;377:			}
;378:		}
;379:		else
;380:      */
;381:      if (i != self->count)
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
EQI4 $150
line 382
;382:		{
line 383
;383:			hasall = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 384
;384:		}
LABELV $150
line 385
;385:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 386
;386:	}
LABELV $148
line 364
ADDRLP4 0
INDIRI4
CNSTI4 18
LTI4 $147
line 389
;387:   
;388:
;389:	if (hasall)
ADDRLP4 4
INDIRI4
CNSTI4 0
EQI4 $152
line 390
;390:	{ //once we pick up this holocron we'll have all of them, so give us super special best prize!
line 392
;391:		//G_Printf("You deserve a pat on the back.\n");
;392:	}
LABELV $152
line 394
;393:
;394:	if (!(other->client->ps.fd.forcePowersActive & (1 << other->client->ps.fd.forcePowerSelected)))
ADDRLP4 36
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI4 848
ADDP4
INDIRI4
CNSTI4 1
ADDRLP4 36
INDIRP4
CNSTI4 852
ADDP4
INDIRI4
LSHI4
BANDI4
CNSTI4 0
NEI4 $154
line 395
;395:	{ //If the player isn't using his currently selected force power, select this one
line 396
;396:		if (self->count != FP_SABERATTACK && self->count != FP_SABERDEFEND && self->count != FP_SABERTHROW && self->count != FP_LEVITATION)
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
ADDRLP4 40
INDIRI4
CNSTI4 15
EQI4 $156
ADDRLP4 40
INDIRI4
CNSTI4 16
EQI4 $156
ADDRLP4 40
INDIRI4
CNSTI4 17
EQI4 $156
ADDRLP4 40
INDIRI4
CNSTI4 1
EQI4 $156
line 397
;397:		{
line 398
;398:			other->client->ps.fd.forcePowerSelected = self->count;
ADDRFP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 852
ADDP4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 399
;399:		}
LABELV $156
line 400
;400:	}
LABELV $154
line 426
;401:
;402:	// adnan
;403:   // killed holocron crap
;404:   /*
;405:   if (g_MaxHolocronCarry.integer && othercarrying >= g_MaxHolocronCarry.integer)
;406:	{ //make the oldest holocron carried by the player pop out to make room for this one
;407:		other->client->ps.holocronsCarried[index_lowest] = 0;
;408:
;409:		
;410:		if (index_lowest == FP_SABERATTACK && !HasSetSaberOnly())
;411:		{ //you lost your saberattack holocron, so no more saber for you
;412:			other->client->ps.stats[STAT_WEAPONS] |= (1 << WP_STUN_BATON);
;413:			other->client->ps.stats[STAT_WEAPONS] &= ~(1 << WP_SABER);
;414:
;415:			if (other->client->ps.weapon == WP_SABER)
;416:			{
;417:				forceReselect = WP_SABER;
;418:			}
;419:		}
;420:		
;421:		//NOTE: No longer valid as we are now always giving a force level 1 saber attack level in holocron
;422:	}
;423:   */
;424:
;425:	//G_Sound(other, CHAN_AUTO, G_SoundIndex("sound/weapons/w_pkup.wav"));
;426:	G_AddEvent( other, EV_ITEM_PICKUP, self->s.number );
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 20
ARGI4
ADDRFP4 0
INDIRP4
INDIRI4
ARGI4
ADDRGP4 G_AddEvent
CALLV
pop
line 431
;427:
;428:	// adnan
;429:   // killed holocron crap
;430:   //other->client->ps.holocronsCarried[self->count] = level.time;
;431:	self->s.modelindex = 0;
ADDRFP4 0
INDIRP4
CNSTI4 212
ADDP4
CNSTI4 0
ASGNI4
line 432
;432:	self->enemy = other;
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
ADDRFP4 4
INDIRP4
ASGNP4
line 434
;433:
;434:	self->pos2[0] = 1;
ADDRFP4 0
INDIRP4
CNSTI4 560
ADDP4
CNSTF4 1065353216
ASGNF4
line 435
;435:	self->pos2[1] = level.time + HOLOCRON_RESPAWN_TIME;
ADDRFP4 0
INDIRP4
CNSTI4 564
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 30000
ADDI4
CVIF4 4
ASGNF4
line 450
;436:
;437:	/*
;438:	if (self->count == FP_SABERATTACK && !HasSetSaberOnly())
;439:	{ //player gets a saber
;440:		other->client->ps.stats[STAT_WEAPONS] |= (1 << WP_SABER);
;441:		other->client->ps.stats[STAT_WEAPONS] &= ~(1 << WP_STUN_BATON);
;442:
;443:		if (other->client->ps.weapon == WP_STUN_BATON)
;444:		{
;445:			forceReselect = WP_STUN_BATON;
;446:		}
;447:	}
;448:	*/
;449:
;450:	if (forceReselect != WP_NONE)
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $159
line 451
;451:	{
line 452
;452:		G_AddEvent(other, EV_NOAMMO, forceReselect);
ADDRFP4 4
INDIRP4
ARGP4
CNSTI4 22
ARGI4
ADDRLP4 8
INDIRI4
ARGI4
ADDRGP4 G_AddEvent
CALLV
pop
line 453
;453:	}
LABELV $159
line 456
;454:
;455:	//G_Printf("DON'T TOUCH ME\n");
;456:}
LABELV $133
endproc HolocronTouch 44 12
export HolocronThink
proc HolocronThink 60 4
line 459
;457:
;458:void HolocronThink(gentity_t *ent)
;459:{
line 460
;460:	if (ent->pos2[0] && (!ent->enemy || !ent->enemy->client || ent->enemy->health < 1))
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 560
ADDP4
INDIRF4
CNSTF4 0
EQF4 $162
ADDRLP4 4
ADDRLP4 0
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
ASGNP4
ADDRLP4 8
CNSTU4 0
ASGNU4
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $165
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $165
ADDRLP4 4
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $162
LABELV $165
line 461
;461:	{
line 462
;462:		if (ent->enemy && ent->enemy->client)
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
ASGNP4
ADDRLP4 16
CNSTU4 0
ASGNU4
ADDRLP4 12
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $163
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $163
line 463
;463:		{
line 464
;464:			HolocronRespawn(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 HolocronRespawn
CALLV
pop
line 465
;465:			VectorCopy(ent->enemy->client->ps.origin, ent->s.pos.trBase);
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 24
ADDP4
ADDRLP4 20
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 466
;466:			VectorCopy(ent->enemy->client->ps.origin, ent->s.origin);
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CNSTI4 92
ADDP4
ADDRLP4 24
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 467
;467:			VectorCopy(ent->enemy->client->ps.origin, ent->r.currentOrigin);
ADDRLP4 28
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI4 368
ADDP4
ADDRLP4 28
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 469
;468:			//copy to person carrying's origin before popping out of them
;469:			HolocronPopOut(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 HolocronPopOut
CALLV
pop
line 473
;470:			// adnan
;471:         // killed holocron crap
;472:         //ent->enemy->client->ps.holocronsCarried[ent->count] = 0;
;473:			ent->enemy = NULL;
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
CNSTP4 0
ASGNP4
line 475
;474:			
;475:			goto justthink;
ADDRGP4 $168
JUMPV
line 477
;476:		}
;477:	}
LABELV $162
line 478
;478:	else if (ent->pos2[0] && ent->enemy && ent->enemy->client)
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 560
ADDP4
INDIRF4
CNSTF4 0
EQF4 $169
ADDRLP4 16
ADDRLP4 12
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
ASGNP4
ADDRLP4 20
CNSTU4 0
ASGNU4
ADDRLP4 16
INDIRP4
CVPU4 4
ADDRLP4 20
INDIRU4
EQU4 $169
ADDRLP4 16
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 20
INDIRU4
EQU4 $169
line 479
;479:	{
line 480
;480:		ent->pos2[1] = level.time + HOLOCRON_RESPAWN_TIME;
ADDRFP4 0
INDIRP4
CNSTI4 564
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 30000
ADDI4
CVIF4 4
ASGNF4
line 481
;481:	}
LABELV $169
LABELV $163
line 483
;482:
;483:	if (ent->enemy && ent->enemy->client)
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
ASGNP4
ADDRLP4 28
CNSTU4 0
ASGNU4
ADDRLP4 24
INDIRP4
CVPU4 4
ADDRLP4 28
INDIRU4
EQU4 $172
ADDRLP4 24
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 28
INDIRU4
EQU4 $172
line 484
;484:	{
line 505
;485:		// adnan
;486:      // killed holocron crap
;487:      /*
;488:      if (!ent->enemy->client->ps.holocronsCarried[ent->count])
;489:		{
;490:			ent->enemy->client->ps.holocronCantTouch = ent->s.number;
;491:			ent->enemy->client->ps.holocronCantTouchTime = level.time + 5000;
;492:
;493:			HolocronRespawn(ent);
;494:			VectorCopy(ent->enemy->client->ps.origin, ent->s.pos.trBase);
;495:			VectorCopy(ent->enemy->client->ps.origin, ent->s.origin);
;496:			VectorCopy(ent->enemy->client->ps.origin, ent->r.currentOrigin);
;497:			//copy to person carrying's origin before popping out of them
;498:			HolocronPopOut(ent);
;499:			ent->enemy = NULL;
;500:
;501:			goto justthink;
;502:		}
;503:      */
;504:
;505:		if (!ent->enemy->inuse || (ent->enemy->client && ent->enemy->client->ps.fallingToDeath))
ADDRLP4 32
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
ASGNP4
ADDRLP4 36
CNSTI4 0
ASGNI4
ADDRLP4 32
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
ADDRLP4 36
INDIRI4
EQI4 $176
ADDRLP4 40
ADDRLP4 32
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 40
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $174
ADDRLP4 40
INDIRP4
CNSTI4 1352
ADDP4
INDIRI4
ADDRLP4 36
INDIRI4
EQI4 $174
LABELV $176
line 506
;506:		{
line 507
;507:			if (ent->enemy->inuse && ent->enemy->client)
ADDRLP4 44
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $177
ADDRLP4 44
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $177
line 508
;508:			{
line 515
;509:				/*
;510:            ent->enemy->client->ps.holocronBits &= ~(1 << ent->count);
;511:				ent->enemy->client->ps.holocronsCarried[ent->count] = 0;
;512:            */
;513:            // adnan
;514:            // killed holocron crap
;515:			}
LABELV $177
line 516
;516:			ent->enemy = NULL;
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
CNSTP4 0
ASGNP4
line 517
;517:			HolocronRespawn(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 HolocronRespawn
CALLV
pop
line 518
;518:			VectorCopy(ent->s.origin2, ent->s.pos.trBase);
ADDRLP4 48
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 48
INDIRP4
CNSTI4 24
ADDP4
ADDRLP4 48
INDIRP4
CNSTI4 104
ADDP4
INDIRB
ASGNB 12
line 519
;519:			VectorCopy(ent->s.origin2, ent->s.origin);
ADDRLP4 52
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 52
INDIRP4
CNSTI4 92
ADDP4
ADDRLP4 52
INDIRP4
CNSTI4 104
ADDP4
INDIRB
ASGNB 12
line 520
;520:			VectorCopy(ent->s.origin2, ent->r.currentOrigin);
ADDRLP4 56
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 56
INDIRP4
CNSTI4 368
ADDP4
ADDRLP4 56
INDIRP4
CNSTI4 104
ADDP4
INDIRB
ASGNB 12
line 522
;521:
;522:			ent->s.pos.trTime = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 524
;523:
;524:			ent->pos2[0] = 0;
ADDRFP4 0
INDIRP4
CNSTI4 560
ADDP4
CNSTF4 0
ASGNF4
line 526
;525:
;526:			trap_LinkEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 528
;527:
;528:			goto justthink;
ADDRGP4 $168
JUMPV
LABELV $174
line 530
;529:		}
;530:	}
LABELV $172
line 532
;531:
;532:	if (ent->pos2[0] && ent->pos2[1] < level.time)
ADDRLP4 32
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 32
INDIRP4
CNSTI4 560
ADDP4
INDIRF4
CNSTF4 0
EQF4 $180
ADDRLP4 32
INDIRP4
CNSTI4 564
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
GEF4 $180
line 533
;533:	{ //isn't in original place and has been there for (HOLOCRON_RESPAWN_TIME) seconds without being picked up, so respawn
line 534
;534:		VectorCopy(ent->s.origin2, ent->s.pos.trBase);
ADDRLP4 36
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 36
INDIRP4
CNSTI4 24
ADDP4
ADDRLP4 36
INDIRP4
CNSTI4 104
ADDP4
INDIRB
ASGNB 12
line 535
;535:		VectorCopy(ent->s.origin2, ent->s.origin);
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 40
INDIRP4
CNSTI4 92
ADDP4
ADDRLP4 40
INDIRP4
CNSTI4 104
ADDP4
INDIRB
ASGNB 12
line 536
;536:		VectorCopy(ent->s.origin2, ent->r.currentOrigin);
ADDRLP4 44
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
CNSTI4 368
ADDP4
ADDRLP4 44
INDIRP4
CNSTI4 104
ADDP4
INDIRB
ASGNB 12
line 538
;537:
;538:		ent->s.pos.trTime = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 540
;539:
;540:		ent->pos2[0] = 0;
ADDRFP4 0
INDIRP4
CNSTI4 560
ADDP4
CNSTF4 0
ASGNF4
line 542
;541:
;542:		trap_LinkEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 543
;543:	}
LABELV $180
LABELV $168
line 546
;544:
;545:justthink:
;546:	ent->nextthink = level.time + 50;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 50
ADDI4
ASGNI4
line 548
;547:
;548:	if (ent->s.pos.trDelta[0] || ent->s.pos.trDelta[1] || ent->s.pos.trDelta[2])
ADDRLP4 36
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 40
CNSTF4 0
ASGNF4
ADDRLP4 36
INDIRP4
CNSTI4 36
ADDP4
INDIRF4
ADDRLP4 40
INDIRF4
NEF4 $188
ADDRLP4 36
INDIRP4
CNSTI4 40
ADDP4
INDIRF4
ADDRLP4 40
INDIRF4
NEF4 $188
ADDRLP4 36
INDIRP4
CNSTI4 44
ADDP4
INDIRF4
ADDRLP4 40
INDIRF4
EQF4 $185
LABELV $188
line 549
;549:	{
line 550
;550:		G_RunObject(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunObject
CALLV
pop
line 551
;551:	}
LABELV $185
line 552
;552:}
LABELV $161
endproc HolocronThink 60 4
export SP_misc_holocron
proc SP_misc_holocron 1132 28
line 555
;553:
;554:void SP_misc_holocron(gentity_t *ent)
;555:{
line 559
;556:	vec3_t dest;
;557:	trace_t tr;
;558:
;559:	if (g_gametype.integer != GT_HOLOCRON)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 1
EQI4 $190
line 560
;560:	{
line 561
;561:		G_FreeEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 562
;562:		return;
ADDRGP4 $189
JUMPV
LABELV $190
line 565
;563:	}
;564:
;565:	if (HasSetSaberOnly())
ADDRLP4 1092
ADDRGP4 HasSetSaberOnly
CALLI4
ASGNI4
ADDRLP4 1092
INDIRI4
CNSTI4 0
EQI4 $193
line 566
;566:	{
line 567
;567:		if (ent->count == FP_SABERATTACK ||
ADDRLP4 1096
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1096
INDIRI4
CNSTI4 15
EQI4 $198
ADDRLP4 1096
INDIRI4
CNSTI4 16
EQI4 $198
ADDRLP4 1096
INDIRI4
CNSTI4 17
NEI4 $195
LABELV $198
line 570
;568:			ent->count == FP_SABERDEFEND ||
;569:			ent->count == FP_SABERTHROW)
;570:		{ //having saber holocrons in saber only mode is pointless
line 571
;571:			G_FreeEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 572
;572:			return;
ADDRGP4 $189
JUMPV
LABELV $195
line 574
;573:		}
;574:	}
LABELV $193
line 576
;575:
;576:	ent->s.isJediMaster = qtrue;
ADDRFP4 0
INDIRP4
CNSTI4 244
ADDP4
CNSTI4 1
ASGNI4
line 578
;577:
;578:	VectorSet( ent->r.maxs, 8, 8, 8 );
ADDRFP4 0
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1090519040
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1090519040
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1090519040
ASGNF4
line 579
;579:	VectorSet( ent->r.mins, -8, -8, -8 );
ADDRFP4 0
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3238002688
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3238002688
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3238002688
ASGNF4
line 581
;580:
;581:	ent->s.origin[2] += 0.1;
ADDRLP4 1096
ADDRFP4 0
INDIRP4
CNSTI4 100
ADDP4
ASGNP4
ADDRLP4 1096
INDIRP4
ADDRLP4 1096
INDIRP4
INDIRF4
CNSTF4 1036831949
ADDF4
ASGNF4
line 582
;582:	ent->r.maxs[2] -= 0.1;
ADDRLP4 1100
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
ASGNP4
ADDRLP4 1100
INDIRP4
ADDRLP4 1100
INDIRP4
INDIRF4
CNSTF4 1036831949
SUBF4
ASGNF4
line 584
;583:
;584:	VectorSet( dest, ent->s.origin[0], ent->s.origin[1], ent->s.origin[2] - 4096 );
ADDRLP4 1104
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 1104
INDIRP4
CNSTI4 92
ADDP4
INDIRF4
ASGNF4
ADDRLP4 0+4
ADDRLP4 1104
INDIRP4
CNSTI4 96
ADDP4
INDIRF4
ASGNF4
ADDRLP4 0+8
ADDRFP4 0
INDIRP4
CNSTI4 100
ADDP4
INDIRF4
CNSTF4 1166016512
SUBF4
ASGNF4
line 585
;585:	trap_Trace( &tr, ent->s.origin, ent->r.mins, ent->r.maxs, dest, ent->s.number, MASK_SOLID );
ADDRLP4 12
ARGP4
ADDRLP4 1108
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1108
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 1108
INDIRP4
CNSTI4 316
ADDP4
ARGP4
ADDRLP4 1108
INDIRP4
CNSTI4 328
ADDP4
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 1108
INDIRP4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 586
;586:	if ( tr.startsolid )
ADDRLP4 12+4
INDIRI4
CNSTI4 0
EQI4 $201
line 587
;587:	{
line 588
;588:		G_Printf ("SP_misc_holocron: misc_holocron startsolid at %s\n", vtos(ent->s.origin));
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 1112
ADDRGP4 vtos
CALLP4
ASGNP4
ADDRGP4 $204
ARGP4
ADDRLP4 1112
INDIRP4
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 589
;589:		G_FreeEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 590
;590:		return;
ADDRGP4 $189
JUMPV
LABELV $201
line 594
;591:	}
;592:
;593:	//add the 0.1 back after the trace
;594:	ent->r.maxs[2] += 0.1;
ADDRLP4 1112
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
ASGNP4
ADDRLP4 1112
INDIRP4
ADDRLP4 1112
INDIRP4
INDIRF4
CNSTF4 1036831949
ADDF4
ASGNF4
line 599
;595:
;596:	// allow to ride movers
;597://	ent->s.groundEntityNum = tr.entityNum;
;598:
;599:	G_SetOrigin( ent, tr.endpos );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 12+12
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 601
;600:
;601:	if (ent->count < 0)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 0
GEI4 $206
line 602
;602:	{
line 603
;603:		ent->count = 0;
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
CNSTI4 0
ASGNI4
line 604
;604:	}
LABELV $206
line 606
;605:
;606:	if (ent->count >= NUM_FORCE_POWERS)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 18
LTI4 $208
line 607
;607:	{
line 608
;608:		ent->count = NUM_FORCE_POWERS-1;
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
CNSTI4 17
ASGNI4
line 609
;609:	}
LABELV $208
line 621
;610:/*
;611:	if (g_forcePowerDisable.integer &&
;612:		(g_forcePowerDisable.integer & (1 << ent->count)))
;613:	{
;614:		G_FreeEntity(ent);
;615:		return;
;616:	}
;617:*/
;618:	//No longer doing this, causing too many complaints about accidentally setting no force powers at all
;619:	//and starting a holocron game (making it basically just FFA)
;620:
;621:	ent->enemy = NULL;
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
CNSTP4 0
ASGNP4
line 623
;622:
;623:	ent->s.eFlags = EF_BOUNCE_HALF;
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
CNSTI4 32
ASGNI4
line 625
;624:
;625:	ent->s.modelindex = (ent->count - 128);//G_ModelIndex(holocronTypeModels[ent->count]);
ADDRLP4 1116
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1116
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 1116
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 128
SUBI4
ASGNI4
line 626
;626:	ent->s.eType = ET_HOLOCRON;
ADDRFP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 5
ASGNI4
line 627
;627:	ent->s.pos.trType = TR_GRAVITY;
ADDRFP4 0
INDIRP4
CNSTI4 12
ADDP4
CNSTI4 5
ASGNI4
line 628
;628:	ent->s.pos.trTime = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 630
;629:
;630:	ent->r.contents = CONTENTS_TRIGGER;
ADDRFP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 1024
ASGNI4
line 631
;631:	ent->clipmask = MASK_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 508
ADDP4
CNSTI4 1
ASGNI4
line 633
;632:
;633:	ent->s.trickedentindex4 = ent->count;
ADDRLP4 1120
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1120
INDIRP4
CNSTI4 160
ADDP4
ADDRLP4 1120
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 635
;634:
;635:	if (forcePowerDarkLight[ent->count] == FORCE_DARKSIDE)
ADDRLP4 1124
CNSTI4 2
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ADDRLP4 1124
INDIRI4
LSHI4
ADDRGP4 forcePowerDarkLight
ADDP4
INDIRI4
ADDRLP4 1124
INDIRI4
NEI4 $211
line 636
;636:	{
line 637
;637:		ent->s.trickedentindex3 = 1;
ADDRFP4 0
INDIRP4
CNSTI4 156
ADDP4
CNSTI4 1
ASGNI4
line 638
;638:	}
ADDRGP4 $212
JUMPV
LABELV $211
line 639
;639:	else if (forcePowerDarkLight[ent->count] == FORCE_LIGHTSIDE)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 forcePowerDarkLight
ADDP4
INDIRI4
CNSTI4 1
NEI4 $213
line 640
;640:	{
line 641
;641:		ent->s.trickedentindex3 = 2;
ADDRFP4 0
INDIRP4
CNSTI4 156
ADDP4
CNSTI4 2
ASGNI4
line 642
;642:	}
ADDRGP4 $214
JUMPV
LABELV $213
line 644
;643:	else
;644:	{
line 645
;645:		ent->s.trickedentindex3 = 3;
ADDRFP4 0
INDIRP4
CNSTI4 156
ADDP4
CNSTI4 3
ASGNI4
line 646
;646:	}
LABELV $214
LABELV $212
line 648
;647:
;648:	ent->physicsObject = qtrue;
ADDRFP4 0
INDIRP4
CNSTI4 500
ADDP4
CNSTI4 1
ASGNI4
line 650
;649:
;650:	VectorCopy(ent->s.pos.trBase, ent->s.origin2); //remember the spawn spot
ADDRLP4 1128
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1128
INDIRP4
CNSTI4 104
ADDP4
ADDRLP4 1128
INDIRP4
CNSTI4 24
ADDP4
INDIRB
ASGNB 12
line 654
;651:
;652:	//ent->touch = HolocronTouch;
;653:
;654:	trap_LinkEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 656
;655:
;656:	ent->think = HolocronThink;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 HolocronThink
ASGNP4
line 657
;657:	ent->nextthink = level.time + 50;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 50
ADDI4
ASGNI4
line 658
;658:}
LABELV $189
endproc SP_misc_holocron 1132 28
export Use_Shooter
proc Use_Shooter 64 16
line 668
;659:
;660:/*
;661:======================================================================
;662:
;663:  SHOOTERS
;664:
;665:======================================================================
;666:*/
;667:
;668:void Use_Shooter( gentity_t *ent, gentity_t *other, gentity_t *activator ) {
line 674
;669:	vec3_t		dir;
;670:	float		deg;
;671:	vec3_t		up, right;
;672:
;673:	// see if we have a target
;674:	if ( ent->enemy ) {
ADDRFP4 0
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $217
line 675
;675:		VectorSubtract( ent->enemy->r.currentOrigin, ent->s.origin, dir );
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 44
ADDRLP4 40
INDIRP4
CNSTI4 728
ADDP4
ASGNP4
ADDRLP4 0
ADDRLP4 44
INDIRP4
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 40
INDIRP4
CNSTI4 92
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 0+4
ADDRLP4 44
INDIRP4
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 40
INDIRP4
CNSTI4 96
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 48
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0+8
ADDRLP4 48
INDIRP4
CNSTI4 728
ADDP4
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
ADDRLP4 48
INDIRP4
CNSTI4 100
ADDP4
INDIRF4
SUBF4
ASGNF4
line 676
;676:		VectorNormalize( dir );
ADDRLP4 0
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 677
;677:	} else {
ADDRGP4 $218
JUMPV
LABELV $217
line 678
;678:		VectorCopy( ent->movedir, dir );
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 612
ADDP4
INDIRB
ASGNB 12
line 679
;679:	}
LABELV $218
line 682
;680:
;681:	// randomize a bit
;682:	PerpendicularVector( up, dir );
ADDRLP4 16
ARGP4
ADDRLP4 0
ARGP4
ADDRGP4 PerpendicularVector
CALLV
pop
line 683
;683:	CrossProduct( up, dir, right );
ADDRLP4 16
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 28
ARGP4
ADDRGP4 CrossProduct
CALLV
pop
line 685
;684:
;685:	deg = crandom() * ent->random;
ADDRLP4 40
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 12
CNSTF4 1073741824
ADDRLP4 40
INDIRI4
CNSTI4 32767
BANDI4
CVIF4 4
CNSTF4 1191181824
DIVF4
CNSTF4 1056964608
SUBF4
MULF4
ADDRFP4 0
INDIRP4
CNSTI4 760
ADDP4
INDIRF4
MULF4
ASGNF4
line 686
;686:	VectorMA( dir, deg, up, dir );
ADDRLP4 0
ADDRLP4 0
INDIRF4
ADDRLP4 16
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 0+4
ADDRLP4 0+4
INDIRF4
ADDRLP4 16+4
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 0+8
ADDRLP4 0+8
INDIRF4
ADDRLP4 16+8
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
ADDF4
ASGNF4
line 688
;687:
;688:	deg = crandom() * ent->random;
ADDRLP4 48
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 12
CNSTF4 1073741824
ADDRLP4 48
INDIRI4
CNSTI4 32767
BANDI4
CVIF4 4
CNSTF4 1191181824
DIVF4
CNSTF4 1056964608
SUBF4
MULF4
ADDRFP4 0
INDIRP4
CNSTI4 760
ADDP4
INDIRF4
MULF4
ASGNF4
line 689
;689:	VectorMA( dir, deg, right, dir );
ADDRLP4 0
ADDRLP4 0
INDIRF4
ADDRLP4 28
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 0+4
ADDRLP4 0+4
INDIRF4
ADDRLP4 28+4
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
ADDF4
ASGNF4
ADDRLP4 0+8
ADDRLP4 0+8
INDIRF4
ADDRLP4 28+8
INDIRF4
ADDRLP4 12
INDIRF4
MULF4
ADDF4
ASGNF4
line 691
;690:
;691:	VectorNormalize( dir );
ADDRLP4 0
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 693
;692:
;693:	switch ( ent->s.weapon ) {
ADDRLP4 56
ADDRFP4 0
INDIRP4
CNSTI4 276
ADDP4
INDIRI4
ASGNI4
ADDRLP4 56
INDIRI4
CNSTI4 4
EQI4 $236
ADDRGP4 $233
JUMPV
LABELV $236
line 695
;694:	case WP_BLASTER:
;695:		WP_FireBlasterMissile( ent, ent->s.origin, dir, qfalse );
ADDRLP4 60
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 60
INDIRP4
ARGP4
ADDRLP4 60
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 0
ARGP4
CNSTI4 0
ARGI4
ADDRGP4 WP_FireBlasterMissile
CALLV
pop
line 696
;696:		break;
LABELV $233
LABELV $234
line 699
;697:	}
;698:
;699:	G_AddEvent( ent, EV_FIRE_WEAPON, 0 );
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 24
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 G_AddEvent
CALLV
pop
line 700
;700:}
LABELV $216
endproc Use_Shooter 64 16
proc InitShooter_Finish 8 4
line 703
;701:
;702:
;703:static void InitShooter_Finish( gentity_t *ent ) {
line 704
;704:	ent->enemy = G_PickTarget( ent->target );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 G_PickTarget
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 728
ADDP4
ADDRLP4 4
INDIRP4
ASGNP4
line 705
;705:	ent->think = 0;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
CNSTP4 0
ASGNP4
line 706
;706:	ent->nextthink = 0;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
CNSTI4 0
ASGNI4
line 707
;707:}
LABELV $237
endproc InitShooter_Finish 8 4
export InitShooter
proc InitShooter 16 8
line 709
;708:
;709:void InitShooter( gentity_t *ent, int weapon ) {
line 710
;710:	ent->use = Use_Shooter;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 Use_Shooter
ASGNP4
line 711
;711:	ent->s.weapon = weapon;
ADDRFP4 0
INDIRP4
CNSTI4 276
ADDP4
ADDRFP4 4
INDIRI4
ASGNI4
line 713
;712:
;713:	RegisterItem( BG_FindItemForWeapon( weapon ) );
ADDRFP4 4
INDIRI4
ARGI4
ADDRLP4 0
ADDRGP4 BG_FindItemForWeapon
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 RegisterItem
CALLV
pop
line 715
;714:
;715:	G_SetMovedir( ent->s.angles, ent->movedir );
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CNSTI4 116
ADDP4
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 612
ADDP4
ARGP4
ADDRGP4 G_SetMovedir
CALLV
pop
line 717
;716:
;717:	if ( !ent->random ) {
ADDRFP4 0
INDIRP4
CNSTI4 760
ADDP4
INDIRF4
CNSTF4 0
NEF4 $239
line 718
;718:		ent->random = 1.0;
ADDRFP4 0
INDIRP4
CNSTI4 760
ADDP4
CNSTF4 1065353216
ASGNF4
line 719
;719:	}
LABELV $239
line 720
;720:	ent->random = sin( M_PI * ent->random / 180 );
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 760
ADDP4
ASGNP4
CNSTF4 1078530011
ADDRLP4 8
INDIRP4
INDIRF4
MULF4
CNSTF4 1127481344
DIVF4
ARGF4
ADDRLP4 12
ADDRGP4 sin
CALLF4
ASGNF4
ADDRLP4 8
INDIRP4
ADDRLP4 12
INDIRF4
ASGNF4
line 722
;721:	// target might be a moving object, so we can't set movedir for it
;722:	if ( ent->target ) {
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $241
line 723
;723:		ent->think = InitShooter_Finish;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 InitShooter_Finish
ASGNP4
line 724
;724:		ent->nextthink = level.time + 500;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 500
ADDI4
ASGNI4
line 725
;725:	}
LABELV $241
line 726
;726:	trap_LinkEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 727
;727:}
LABELV $238
endproc InitShooter 16 8
export SP_shooter_blaster
proc SP_shooter_blaster 0 8
line 733
;728:
;729:/*QUAKED shooter_blaster (1 0 0) (-16 -16 -16) (16 16 16)
;730:Fires at either the target or the current direction.
;731:"random" is the number of degrees of deviance from the taget. (1.0 default)
;732:*/
;733:void SP_shooter_blaster( gentity_t *ent ) {
line 734
;734:	InitShooter( ent, WP_BLASTER);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 4
ARGI4
ADDRGP4 InitShooter
CALLV
pop
line 735
;735:}
LABELV $244
endproc SP_shooter_blaster 0 8
export check_recharge
proc check_recharge 8 0
line 738
;736:
;737:void check_recharge(gentity_t *ent)
;738:{
line 739
;739:	if (ent->fly_sound_debounce_time < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 668
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $246
line 740
;740:	{
line 741
;741:		ent->s.loopSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
CNSTI4 0
ASGNI4
line 742
;742:	}
LABELV $246
line 744
;743:
;744:	if (ent->count < ent->boltpoint4)
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 780
ADDP4
INDIRI4
GEI4 $249
line 745
;745:	{
line 746
;746:		ent->count++;
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
ASGNP4
ADDRLP4 4
INDIRP4
ADDRLP4 4
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 747
;747:	}
LABELV $249
line 749
;748:
;749:	ent->nextthink = level.time + ent->bolt_Head;
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 4
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
ADDI4
ASGNI4
line 750
;750:}
LABELV $245
endproc check_recharge 8 0
export EnergyShieldStationSettings
proc EnergyShieldStationSettings 0 12
line 758
;751:
;752:/*
;753:================
;754:EnergyShieldStationSettings
;755:================
;756:*/
;757:void EnergyShieldStationSettings(gentity_t *ent)
;758:{
line 759
;759:	G_SpawnInt( "count", "0", &ent->count );
ADDRGP4 $253
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 761
;760:
;761:	if (!ent->count)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 0
NEI4 $254
line 762
;762:	{
line 763
;763:		ent->count = 50; 
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
CNSTI4 50
ASGNI4
line 764
;764:	}
LABELV $254
line 766
;765:
;766:	G_SpawnInt("chargerate", "0", &ent->bolt_Head);
ADDRGP4 $256
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 768
;767:
;768:	if (!ent->bolt_Head)
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
CNSTI4 0
NEI4 $257
line 769
;769:	{
line 770
;770:		ent->bolt_Head = STATION_RECHARGE_TIME;
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
CNSTI4 3000
ASGNI4
line 771
;771:	}
LABELV $257
line 772
;772:}
LABELV $252
endproc EnergyShieldStationSettings 0 12
export shield_power_converter_use
proc shield_power_converter_use 32 12
line 780
;773:
;774:/*
;775:================
;776:shield_power_converter_use
;777:================
;778:*/
;779:void shield_power_converter_use( gentity_t *self, gentity_t *other, gentity_t *activator)
;780:{
line 782
;781:	int dif,add;
;782:	int stop = 1;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 784
;783:
;784:	if (!activator || !activator->client)
ADDRLP4 12
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 16
CNSTU4 0
ASGNU4
ADDRLP4 12
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $262
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
NEU4 $260
LABELV $262
line 785
;785:	{
line 786
;786:		return;
ADDRGP4 $259
JUMPV
LABELV $260
line 789
;787:	}
;788:
;789:	if (self->setTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $263
line 790
;790:	{
line 791
;791:		if (!self->s.loopSound)
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
INDIRI4
CNSTI4 0
NEI4 $266
line 792
;792:		{
line 793
;793:			self->s.loopSound = G_SoundIndex("sound/interface/shieldcon_run.wav");
ADDRGP4 $268
ARGP4
ADDRLP4 20
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
ADDRLP4 20
INDIRI4
ASGNI4
line 794
;794:		}
LABELV $266
line 795
;795:		self->setTime = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 797
;796:
;797:		dif = activator->client->ps.stats[STAT_MAX_HEALTH] - activator->client->ps.stats[STAT_ARMOR];
ADDRLP4 20
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 20
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ADDRLP4 20
INDIRP4
CNSTI4 236
ADDP4
INDIRI4
SUBI4
ASGNI4
line 799
;798:
;799:		if (dif > 0)					// Already at full armor?
ADDRLP4 4
INDIRI4
CNSTI4 0
LEI4 $270
line 800
;800:		{
line 801
;801:			if (dif >MAX_AMMO_GIVE)
ADDRLP4 4
INDIRI4
CNSTI4 2
LEI4 $272
line 802
;802:			{
line 803
;803:				add = MAX_AMMO_GIVE;
ADDRLP4 8
CNSTI4 2
ASGNI4
line 804
;804:			}
ADDRGP4 $273
JUMPV
LABELV $272
line 806
;805:			else
;806:			{
line 807
;807:				add = dif;
ADDRLP4 8
ADDRLP4 4
INDIRI4
ASGNI4
line 808
;808:			}
LABELV $273
line 810
;809:
;810:			if (self->count<add)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
GEI4 $274
line 811
;811:			{
line 812
;812:				add = self->count;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 813
;813:			}
LABELV $274
line 815
;814:
;815:			self->count -= add;
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
ADDRLP4 8
INDIRI4
SUBI4
ASGNI4
line 816
;816:			if (self->count <= 0)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 0
GTI4 $276
line 817
;817:			{
line 818
;818:				self->setTime = 0;
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
CNSTI4 0
ASGNI4
line 819
;819:			}
LABELV $276
line 820
;820:			stop = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 822
;821:
;822:			self->fly_sound_debounce_time = level.time + 50;
ADDRFP4 0
INDIRP4
CNSTI4 668
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 50
ADDI4
ASGNI4
line 824
;823:
;824:			activator->client->ps.stats[STAT_ARMOR] += add;
ADDRLP4 28
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 236
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
ADDRLP4 8
INDIRI4
ADDI4
ASGNI4
line 825
;825:		}
LABELV $270
line 826
;826:	}
LABELV $263
line 828
;827:
;828:	if (stop || self->count <= 0)
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 0
INDIRI4
ADDRLP4 20
INDIRI4
NEI4 $281
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
GTI4 $279
LABELV $281
line 829
;829:	{
line 830
;830:		if (self->s.loopSound && self->setTime < level.time)
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CNSTI4 200
ADDP4
INDIRI4
CNSTI4 0
EQI4 $282
ADDRLP4 24
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $282
line 831
;831:		{
line 832
;832:			G_Sound(self, CHAN_AUTO, G_SoundIndex("sound/interface/shieldcon_done.mp3"));
ADDRGP4 $285
ARGP4
ADDRLP4 28
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 28
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 833
;833:		}
LABELV $282
line 834
;834:		self->s.loopSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
CNSTI4 0
ASGNI4
line 835
;835:		if (self->setTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $286
line 836
;836:		{
line 837
;837:			self->setTime = level.time + self->bolt_Head+100;
ADDRLP4 28
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI4 628
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 28
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
ADDI4
CNSTI4 100
ADDI4
ASGNI4
line 838
;838:		}
LABELV $286
line 839
;839:	}
LABELV $279
line 840
;840:}
LABELV $259
endproc shield_power_converter_use 32 12
export SP_misc_shield_floor_unit
proc SP_misc_shield_floor_unit 1136 28
line 845
;841:
;842://QED comment is in bg_misc
;843://------------------------------------------------------------
;844:void SP_misc_shield_floor_unit( gentity_t *ent )
;845:{
line 849
;846:	vec3_t dest;
;847:	trace_t tr;
;848:
;849:	if (g_gametype.integer != GT_CTF &&
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 7
EQI4 $291
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 8
EQI4 $291
line 851
;850:		g_gametype.integer != GT_CTY)
;851:	{
line 852
;852:		G_FreeEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 853
;853:		return;
ADDRGP4 $290
JUMPV
LABELV $291
line 856
;854:	}
;855:
;856:	VectorSet( ent->r.mins, -16, -16, 0 );
ADDRFP4 0
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 0
ASGNF4
line 857
;857:	VectorSet( ent->r.maxs, 16, 16, 40 );
ADDRFP4 0
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1109393408
ASGNF4
line 859
;858:
;859:	ent->s.origin[2] += 0.1;
ADDRLP4 1092
ADDRFP4 0
INDIRP4
CNSTI4 100
ADDP4
ASGNP4
ADDRLP4 1092
INDIRP4
ADDRLP4 1092
INDIRP4
INDIRF4
CNSTF4 1036831949
ADDF4
ASGNF4
line 860
;860:	ent->r.maxs[2] -= 0.1;
ADDRLP4 1096
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
ASGNP4
ADDRLP4 1096
INDIRP4
ADDRLP4 1096
INDIRP4
INDIRF4
CNSTF4 1036831949
SUBF4
ASGNF4
line 862
;861:
;862:	VectorSet( dest, ent->s.origin[0], ent->s.origin[1], ent->s.origin[2] - 4096 );
ADDRLP4 1100
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 1100
INDIRP4
CNSTI4 92
ADDP4
INDIRF4
ASGNF4
ADDRLP4 0+4
ADDRLP4 1100
INDIRP4
CNSTI4 96
ADDP4
INDIRF4
ASGNF4
ADDRLP4 0+8
ADDRFP4 0
INDIRP4
CNSTI4 100
ADDP4
INDIRF4
CNSTF4 1166016512
SUBF4
ASGNF4
line 863
;863:	trap_Trace( &tr, ent->s.origin, ent->r.mins, ent->r.maxs, dest, ent->s.number, MASK_SOLID );
ADDRLP4 12
ARGP4
ADDRLP4 1104
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1104
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 1104
INDIRP4
CNSTI4 316
ADDP4
ARGP4
ADDRLP4 1104
INDIRP4
CNSTI4 328
ADDP4
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 1104
INDIRP4
INDIRI4
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 864
;864:	if ( tr.startsolid )
ADDRLP4 12+4
INDIRI4
CNSTI4 0
EQI4 $297
line 865
;865:	{
line 866
;866:		G_Printf ("SP_misc_shield_floor_unit: misc_shield_floor_unit startsolid at %s\n", vtos(ent->s.origin));
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 1108
ADDRGP4 vtos
CALLP4
ASGNP4
ADDRGP4 $300
ARGP4
ADDRLP4 1108
INDIRP4
ARGP4
ADDRGP4 G_Printf
CALLV
pop
line 867
;867:		G_FreeEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 868
;868:		return;
ADDRGP4 $290
JUMPV
LABELV $297
line 872
;869:	}
;870:
;871:	//add the 0.1 back after the trace
;872:	ent->r.maxs[2] += 0.1;
ADDRLP4 1108
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
ASGNP4
ADDRLP4 1108
INDIRP4
ADDRLP4 1108
INDIRP4
INDIRF4
CNSTF4 1036831949
ADDF4
ASGNF4
line 875
;873:
;874:	// allow to ride movers
;875:	ent->s.groundEntityNum = tr.entityNum;
ADDRFP4 0
INDIRP4
CNSTI4 192
ADDP4
ADDRLP4 12+52
INDIRI4
ASGNI4
line 877
;876:
;877:	G_SetOrigin( ent, tr.endpos );
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 12+12
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 879
;878:
;879:	if (!ent->health)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
NEI4 $303
line 880
;880:	{
line 881
;881:		ent->health = 60;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 60
ASGNI4
line 882
;882:	}
LABELV $303
line 884
;883:
;884:	if (!ent->model || !ent->model[0])
ADDRLP4 1112
ADDRFP4 0
INDIRP4
CNSTI4 476
ADDP4
INDIRP4
ASGNP4
ADDRLP4 1112
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $307
ADDRLP4 1112
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $305
LABELV $307
line 885
;885:	{
line 886
;886:		ent->model = "/models/items/a_shield_converter.md3";
ADDRFP4 0
INDIRP4
CNSTI4 476
ADDP4
ADDRGP4 $308
ASGNP4
line 887
;887:	}
LABELV $305
line 889
;888:
;889:	ent->s.modelindex = G_ModelIndex( ent->model );
ADDRLP4 1116
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1116
INDIRP4
CNSTI4 476
ADDP4
INDIRP4
ARGP4
ADDRLP4 1120
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 1116
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 1120
INDIRI4
ASGNI4
line 891
;890:
;891:	ent->s.eFlags = 0;
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
CNSTI4 0
ASGNI4
line 892
;892:	ent->r.svFlags |= SVF_PLAYER_USABLE;
ADDRLP4 1124
ADDRFP4 0
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 1124
INDIRP4
ADDRLP4 1124
INDIRP4
INDIRI4
CNSTI4 16
BORI4
ASGNI4
line 893
;893:	ent->r.contents = CONTENTS_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 1
ASGNI4
line 894
;894:	ent->clipmask = MASK_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 508
ADDP4
CNSTI4 1
ASGNI4
line 896
;895:
;896:	EnergyShieldStationSettings(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 EnergyShieldStationSettings
CALLV
pop
line 898
;897:
;898:	ent->boltpoint4 = ent->count; //initial value
ADDRLP4 1128
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1128
INDIRP4
CNSTI4 780
ADDP4
ADDRLP4 1128
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 899
;899:	ent->think = check_recharge;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 check_recharge
ASGNP4
line 900
;900:	ent->nextthink = level.time + STATION_RECHARGE_TIME;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 902
;901:
;902:	ent->use = shield_power_converter_use;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 shield_power_converter_use
ASGNP4
line 904
;903:
;904:	VectorCopy( ent->s.angles, ent->s.apos.trBase );
ADDRLP4 1132
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1132
INDIRP4
CNSTI4 60
ADDP4
ADDRLP4 1132
INDIRP4
CNSTI4 116
ADDP4
INDIRB
ASGNB 12
line 905
;905:	trap_LinkEntity (ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 907
;906:
;907:	G_SoundIndex("sound/interface/shieldcon_run.wav");
ADDRGP4 $268
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 908
;908:	G_SoundIndex("sound/interface/shieldcon_done.mp3");
ADDRGP4 $285
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 909
;909:	G_SoundIndex("sound/interface/shieldcon_empty.mp3");
ADDRGP4 $310
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 910
;910:}
LABELV $290
endproc SP_misc_shield_floor_unit 1136 28
export SP_misc_model_shield_power_converter
proc SP_misc_model_shield_power_converter 28 8
line 921
;911:
;912:
;913:/*QUAKED misc_model_shield_power_converter (1 0 0) (-16 -16 -16) (16 16 16)
;914:#MODELNAME="models/items/psd_big.md3"
;915:Gives shield energy when used.
;916:
;917:"count" - the amount of ammo given when used (default 100)
;918:*/
;919://------------------------------------------------------------
;920:void SP_misc_model_shield_power_converter( gentity_t *ent )
;921:{
line 922
;922:	if (!ent->health)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
NEI4 $312
line 923
;923:	{
line 924
;924:		ent->health = 60;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 60
ASGNI4
line 925
;925:	}
LABELV $312
line 927
;926:
;927:	VectorSet (ent->r.mins, -16, -16, -16);
ADDRFP4 0
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3246391296
ASGNF4
line 928
;928:	VectorSet (ent->r.maxs, 16, 16, 16);
ADDRFP4 0
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1098907648
ASGNF4
line 930
;929:
;930:	ent->s.modelindex = G_ModelIndex( ent->model );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 476
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 932
;931:
;932:	ent->s.eFlags = 0;
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
CNSTI4 0
ASGNI4
line 933
;933:	ent->r.svFlags |= SVF_PLAYER_USABLE;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 16
BORI4
ASGNI4
line 934
;934:	ent->r.contents = CONTENTS_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 1
ASGNI4
line 935
;935:	ent->clipmask = MASK_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 508
ADDP4
CNSTI4 1
ASGNI4
line 937
;936:
;937:	EnergyShieldStationSettings(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 EnergyShieldStationSettings
CALLV
pop
line 939
;938:
;939:	ent->boltpoint4 = ent->count; //initial value
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 780
ADDP4
ADDRLP4 12
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 940
;940:	ent->think = check_recharge;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 check_recharge
ASGNP4
line 941
;941:	ent->nextthink = level.time + STATION_RECHARGE_TIME;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 943
;942:
;943:	ent->use = shield_power_converter_use;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 shield_power_converter_use
ASGNP4
line 945
;944:
;945:	G_SetOrigin( ent, ent->s.origin );
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 16
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 946
;946:	VectorCopy( ent->s.angles, ent->s.apos.trBase );
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 60
ADDP4
ADDRLP4 20
INDIRP4
CNSTI4 116
ADDP4
INDIRB
ASGNB 12
line 947
;947:	trap_LinkEntity (ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 949
;948:
;949:	G_SoundIndex("sound/movers/objects/useshieldstation.wav");
ADDRGP4 $315
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 951
;950:
;951:	ent->s.modelindex2 = G_ModelIndex("/models/items/psd_big.md3");	// Precache model
ADDRGP4 $316
ARGP4
ADDRLP4 24
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 216
ADDP4
ADDRLP4 24
INDIRI4
ASGNI4
line 952
;952:}
LABELV $311
endproc SP_misc_model_shield_power_converter 28 8
export EnergyAmmoStationSettings
proc EnergyAmmoStationSettings 0 12
line 961
;953:
;954:
;955:/*
;956:================
;957:EnergyAmmoShieldStationSettings
;958:================
;959:*/
;960:void EnergyAmmoStationSettings(gentity_t *ent)
;961:{
line 962
;962:	G_SpawnInt( "count", "0", &ent->count );
ADDRGP4 $253
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 964
;963:
;964:	if (!ent->count)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 0
NEI4 $318
line 965
;965:	{
line 966
;966:		ent->count = 100; 
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
CNSTI4 100
ASGNI4
line 967
;967:	}
LABELV $318
line 968
;968:}
LABELV $317
endproc EnergyAmmoStationSettings 0 12
export ammo_power_converter_use
proc ammo_power_converter_use 52 4
line 976
;969:
;970:/*
;971:================
;972:ammo_power_converter_use
;973:================
;974:*/
;975:void ammo_power_converter_use( gentity_t *self, gentity_t *other, gentity_t *activator)
;976:{
line 980
;977:	int			add,highest;
;978:	qboolean	overcharge;
;979:	int			difBlaster,difPowerCell,difMetalBolts;
;980:	int			stop = 1;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 982
;981:
;982:	if (!activator || !activator->client)
ADDRLP4 28
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 32
CNSTU4 0
ASGNU4
ADDRLP4 28
INDIRP4
CVPU4 4
ADDRLP4 32
INDIRU4
EQU4 $323
ADDRLP4 28
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 32
INDIRU4
NEU4 $321
LABELV $323
line 983
;983:	{
line 984
;984:		return;
ADDRGP4 $320
JUMPV
LABELV $321
line 987
;985:	}
;986:
;987:	if (self->setTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $324
line 988
;988:	{
line 989
;989:		overcharge = qfalse;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 991
;990:
;991:		if (!self->s.loopSound)
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
INDIRI4
CNSTI4 0
NEI4 $327
line 992
;992:		{
line 993
;993:			self->s.loopSound = G_SoundIndex("sound/player/pickupshield.wav");
ADDRGP4 $329
ARGP4
ADDRLP4 36
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
ADDRLP4 36
INDIRI4
ASGNI4
line 994
;994:		}
LABELV $327
line 996
;995:
;996:		self->setTime = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 998
;997:
;998:		if (self->count)	// Has it got any power left?
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 0
EQI4 $331
line 999
;999:		{
line 1000
;1000:			if (self->count > MAX_AMMO_GIVE)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 2
LEI4 $333
line 1001
;1001:			{
line 1002
;1002:				add = MAX_AMMO_GIVE;
ADDRLP4 4
CNSTI4 2
ASGNI4
line 1003
;1003:			}
ADDRGP4 $334
JUMPV
LABELV $333
line 1004
;1004:			else if (self->count<0)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 0
GEI4 $335
line 1005
;1005:			{
line 1006
;1006:				add = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1007
;1007:			}
ADDRGP4 $336
JUMPV
LABELV $335
line 1009
;1008:			else
;1009:			{
line 1010
;1010:				add = self->count;
ADDRLP4 4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 1011
;1011:			}
LABELV $336
LABELV $334
line 1013
;1012:
;1013:			activator->client->ps.ammo[AMMO_BLASTER] += add;
ADDRLP4 36
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 416
ADDP4
ASGNP4
ADDRLP4 36
INDIRP4
ADDRLP4 36
INDIRP4
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 1014
;1014:			activator->client->ps.ammo[AMMO_POWERCELL] += add;
ADDRLP4 40
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 420
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 1015
;1015:			activator->client->ps.ammo[AMMO_METAL_BOLTS] += add;
ADDRLP4 44
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 424
ADDP4
ASGNP4
ADDRLP4 44
INDIRP4
ADDRLP4 44
INDIRP4
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 1017
;1016:
;1017:			self->count -= add;
ADDRLP4 48
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
ASGNP4
ADDRLP4 48
INDIRP4
ADDRLP4 48
INDIRP4
INDIRI4
ADDRLP4 4
INDIRI4
SUBI4
ASGNI4
line 1018
;1018:			stop = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1020
;1019:
;1020:			self->fly_sound_debounce_time = level.time + 50;
ADDRFP4 0
INDIRP4
CNSTI4 668
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 50
ADDI4
ASGNI4
line 1022
;1021:
;1022:			difBlaster = activator->client->ps.ammo[AMMO_BLASTER] - ammoData[AMMO_BLASTER].max;
ADDRLP4 12
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 416
ADDP4
INDIRI4
ADDRGP4 ammoData+8
INDIRI4
SUBI4
ASGNI4
line 1023
;1023:			difPowerCell = activator->client->ps.ammo[AMMO_POWERCELL] - ammoData[AMMO_POWERCELL].max;
ADDRLP4 16
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
ADDRGP4 ammoData+12
INDIRI4
SUBI4
ASGNI4
line 1024
;1024:			difMetalBolts = activator->client->ps.ammo[AMMO_METAL_BOLTS] - ammoData[AMMO_METAL_BOLTS].max;
ADDRLP4 20
ADDRFP4 8
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 424
ADDP4
INDIRI4
ADDRGP4 ammoData+16
INDIRI4
SUBI4
ASGNI4
line 1027
;1025:
;1026:			// Find the highest one
;1027:			highest = difBlaster;
ADDRLP4 8
ADDRLP4 12
INDIRI4
ASGNI4
line 1028
;1028:			if (difPowerCell>difBlaster)
ADDRLP4 16
INDIRI4
ADDRLP4 12
INDIRI4
LEI4 $341
line 1029
;1029:			{
line 1030
;1030:				highest = difPowerCell;
ADDRLP4 8
ADDRLP4 16
INDIRI4
ASGNI4
line 1031
;1031:			}
LABELV $341
line 1033
;1032:
;1033:			if (difMetalBolts > highest)
ADDRLP4 20
INDIRI4
ADDRLP4 8
INDIRI4
LEI4 $343
line 1034
;1034:			{
line 1035
;1035:				highest = difMetalBolts;
ADDRLP4 8
ADDRLP4 20
INDIRI4
ASGNI4
line 1036
;1036:			}
LABELV $343
line 1037
;1037:		}
LABELV $331
line 1038
;1038:	}
LABELV $324
line 1040
;1039:
;1040:	if (stop)
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $345
line 1041
;1041:	{
line 1042
;1042:		self->s.loopSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
CNSTI4 0
ASGNI4
line 1043
;1043:	}
LABELV $345
line 1044
;1044:}
LABELV $320
endproc ammo_power_converter_use 52 4
export SP_misc_model_ammo_power_converter
proc SP_misc_model_ammo_power_converter 24 8
line 1055
;1045:
;1046:
;1047:/*QUAKED misc_model_ammo_power_converter (1 0 0) (-16 -16 -16) (16 16 16)
;1048:#MODELNAME="models/items/power_converter.md3"
;1049:Gives ammo energy when used.
;1050:
;1051:"count" - the amount of ammo given when used (default 100)
;1052:*/
;1053://------------------------------------------------------------
;1054:void SP_misc_model_ammo_power_converter( gentity_t *ent )
;1055:{
line 1056
;1056:	if (!ent->health)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
NEI4 $348
line 1057
;1057:	{
line 1058
;1058:		ent->health = 60;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 60
ASGNI4
line 1059
;1059:	}
LABELV $348
line 1061
;1060:
;1061:	VectorSet (ent->r.mins, -16, -16, -16);
ADDRFP4 0
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3246391296
ASGNF4
line 1062
;1062:	VectorSet (ent->r.maxs, 16, 16, 16);
ADDRFP4 0
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1098907648
ASGNF4
line 1064
;1063:
;1064:	ent->s.modelindex = G_ModelIndex( ent->model );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 476
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 1066
;1065:
;1066:	ent->s.eFlags = 0;
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
CNSTI4 0
ASGNI4
line 1067
;1067:	ent->r.svFlags |= SVF_PLAYER_USABLE;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 16
BORI4
ASGNI4
line 1068
;1068:	ent->r.contents = CONTENTS_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 1
ASGNI4
line 1069
;1069:	ent->clipmask = MASK_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 508
ADDP4
CNSTI4 1
ASGNI4
line 1071
;1070:
;1071:	ent->use = ammo_power_converter_use;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 ammo_power_converter_use
ASGNP4
line 1073
;1072:
;1073:	EnergyAmmoStationSettings(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 EnergyAmmoStationSettings
CALLV
pop
line 1075
;1074:
;1075:	ent->boltpoint4 = ent->count; //initial value
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 780
ADDP4
ADDRLP4 12
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 1076
;1076:	ent->think = check_recharge;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 check_recharge
ASGNP4
line 1077
;1077:	ent->nextthink = level.time + STATION_RECHARGE_TIME;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 1079
;1078:
;1079:	G_SetOrigin( ent, ent->s.origin );
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 16
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 1080
;1080:	VectorCopy( ent->s.angles, ent->s.apos.trBase );
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 60
ADDP4
ADDRLP4 20
INDIRP4
CNSTI4 116
ADDP4
INDIRB
ASGNB 12
line 1081
;1081:	trap_LinkEntity (ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 1083
;1082:
;1083:	G_SoundIndex("sound/movers/objects/useshieldstation.wav");
ADDRGP4 $315
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1084
;1084:}
LABELV $347
endproc SP_misc_model_ammo_power_converter 24 8
export EnergyHealthStationSettings
proc EnergyHealthStationSettings 0 12
line 1092
;1085:
;1086:/*
;1087:================
;1088:EnergyHealthStationSettings
;1089:================
;1090:*/
;1091:void EnergyHealthStationSettings(gentity_t *ent)
;1092:{
line 1093
;1093:	G_SpawnInt( "count", "0", &ent->count );
ADDRGP4 $253
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 1095
;1094:
;1095:	if (!ent->count)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
CNSTI4 0
NEI4 $352
line 1096
;1096:	{
line 1097
;1097:		ent->count = 100; 
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
CNSTI4 100
ASGNI4
line 1098
;1098:	}
LABELV $352
line 1099
;1099:}
LABELV $351
endproc EnergyHealthStationSettings 0 12
export health_power_converter_use
proc health_power_converter_use 32 4
line 1107
;1100:
;1101:/*
;1102:================
;1103:health_power_converter_use
;1104:================
;1105:*/
;1106:void health_power_converter_use( gentity_t *self, gentity_t *other, gentity_t *activator)
;1107:{
line 1109
;1108:	int dif,add;
;1109:	int stop = 1;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 1111
;1110:
;1111:	if (!activator || !activator->client)
ADDRLP4 12
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 16
CNSTU4 0
ASGNU4
ADDRLP4 12
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
EQU4 $357
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 16
INDIRU4
NEU4 $355
LABELV $357
line 1112
;1112:	{
line 1113
;1113:		return;
ADDRGP4 $354
JUMPV
LABELV $355
line 1116
;1114:	}
;1115:
;1116:	if (self->setTime < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $358
line 1117
;1117:	{
line 1118
;1118:		if (!self->s.loopSound)
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
INDIRI4
CNSTI4 0
NEI4 $361
line 1119
;1119:		{
line 1120
;1120:			self->s.loopSound = G_SoundIndex("sound/player/pickuphealth.wav");
ADDRGP4 $363
ARGP4
ADDRLP4 20
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
ADDRLP4 20
INDIRI4
ASGNI4
line 1121
;1121:		}
LABELV $361
line 1122
;1122:		self->setTime = level.time + 100;
ADDRFP4 0
INDIRP4
CNSTI4 628
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 1124
;1123:
;1124:		dif = activator->client->ps.stats[STAT_MAX_HEALTH] - activator->health;
ADDRLP4 20
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 4
ADDRLP4 20
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 248
ADDP4
INDIRI4
ADDRLP4 20
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
SUBI4
ASGNI4
line 1126
;1125:
;1126:		if (dif > 0)					// Already at full armor?
ADDRLP4 4
INDIRI4
CNSTI4 0
LEI4 $365
line 1127
;1127:		{
line 1128
;1128:			if (dif >MAX_AMMO_GIVE)
ADDRLP4 4
INDIRI4
CNSTI4 2
LEI4 $367
line 1129
;1129:			{
line 1130
;1130:				add = MAX_AMMO_GIVE;
ADDRLP4 8
CNSTI4 2
ASGNI4
line 1131
;1131:			}
ADDRGP4 $368
JUMPV
LABELV $367
line 1133
;1132:			else
;1133:			{
line 1134
;1134:				add = dif;
ADDRLP4 8
ADDRLP4 4
INDIRI4
ASGNI4
line 1135
;1135:			}
LABELV $368
line 1137
;1136:
;1137:			if (self->count<add)
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
GEI4 $369
line 1138
;1138:			{
line 1139
;1139:				add = self->count;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 1140
;1140:			}
LABELV $369
line 1142
;1141:
;1142:			self->count -= add;
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 712
ADDP4
ASGNP4
ADDRLP4 24
INDIRP4
ADDRLP4 24
INDIRP4
INDIRI4
ADDRLP4 8
INDIRI4
SUBI4
ASGNI4
line 1143
;1143:			stop = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 1145
;1144:
;1145:			self->fly_sound_debounce_time = level.time + 50;
ADDRFP4 0
INDIRP4
CNSTI4 668
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 50
ADDI4
ASGNI4
line 1147
;1146:
;1147:			activator->health += add;
ADDRLP4 28
ADDRFP4 8
INDIRP4
CNSTI4 676
ADDP4
ASGNP4
ADDRLP4 28
INDIRP4
ADDRLP4 28
INDIRP4
INDIRI4
ADDRLP4 8
INDIRI4
ADDI4
ASGNI4
line 1148
;1148:		}
LABELV $365
line 1149
;1149:	}
LABELV $358
line 1151
;1150:
;1151:	if (stop)
ADDRLP4 0
INDIRI4
CNSTI4 0
EQI4 $372
line 1152
;1152:	{
line 1153
;1153:		self->s.loopSound = 0;
ADDRFP4 0
INDIRP4
CNSTI4 200
ADDP4
CNSTI4 0
ASGNI4
line 1154
;1154:	}
LABELV $372
line 1155
;1155:}
LABELV $354
endproc health_power_converter_use 32 4
export SP_misc_model_health_power_converter
proc SP_misc_model_health_power_converter 24 8
line 1166
;1156:
;1157:
;1158:/*QUAKED misc_model_health_power_converter (1 0 0) (-16 -16 -16) (16 16 16)
;1159:#MODELNAME="models/items/power_converter.md3"
;1160:Gives ammo energy when used.
;1161:
;1162:"count" - the amount of ammo given when used (default 100)
;1163:*/
;1164://------------------------------------------------------------
;1165:void SP_misc_model_health_power_converter( gentity_t *ent )
;1166:{
line 1167
;1167:	if (!ent->health)
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 0
NEI4 $375
line 1168
;1168:	{
line 1169
;1169:		ent->health = 60;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 60
ASGNI4
line 1170
;1170:	}
LABELV $375
line 1172
;1171:
;1172:	VectorSet (ent->r.mins, -16, -16, -16);
ADDRFP4 0
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3246391296
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3246391296
ASGNF4
line 1173
;1173:	VectorSet (ent->r.maxs, 16, 16, 16);
ADDRFP4 0
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1098907648
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1098907648
ASGNF4
line 1175
;1174:
;1175:	ent->s.modelindex = G_ModelIndex( ent->model );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 476
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 1177
;1176:
;1177:	ent->s.eFlags = 0;
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
CNSTI4 0
ASGNI4
line 1178
;1178:	ent->r.svFlags |= SVF_PLAYER_USABLE;
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 16
BORI4
ASGNI4
line 1179
;1179:	ent->r.contents = CONTENTS_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 1
ASGNI4
line 1180
;1180:	ent->clipmask = MASK_SOLID;
ADDRFP4 0
INDIRP4
CNSTI4 508
ADDP4
CNSTI4 1
ASGNI4
line 1182
;1181:
;1182:	ent->use = health_power_converter_use;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 health_power_converter_use
ASGNP4
line 1184
;1183:
;1184:	EnergyHealthStationSettings(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 EnergyHealthStationSettings
CALLV
pop
line 1186
;1185:
;1186:	ent->boltpoint4 = ent->count; //initial value
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 780
ADDP4
ADDRLP4 12
INDIRP4
CNSTI4 712
ADDP4
INDIRI4
ASGNI4
line 1187
;1187:	ent->think = check_recharge;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 check_recharge
ASGNP4
line 1188
;1188:	ent->nextthink = level.time + STATION_RECHARGE_TIME;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 3000
ADDI4
ASGNI4
line 1190
;1189:
;1190:	G_SetOrigin( ent, ent->s.origin );
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 16
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 1191
;1191:	VectorCopy( ent->s.angles, ent->s.apos.trBase );
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 60
ADDP4
ADDRLP4 20
INDIRP4
CNSTI4 116
ADDP4
INDIRB
ASGNB 12
line 1192
;1192:	trap_LinkEntity (ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 1194
;1193:
;1194:	G_SoundIndex("sound/movers/objects/useshieldstation.wav");
ADDRGP4 $315
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1195
;1195:}
LABELV $374
endproc SP_misc_model_health_power_converter 24 8
export DmgBoxHit
proc DmgBoxHit 0 0
line 1198
;1196:
;1197:void DmgBoxHit( gentity_t *self, gentity_t *other, trace_t *trace )
;1198:{
line 1199
;1199:	return;
LABELV $378
endproc DmgBoxHit 0 0
export DmgBoxUpdateSelf
proc DmgBoxUpdateSelf 24 4
line 1203
;1200:}
;1201:
;1202:void DmgBoxUpdateSelf(gentity_t *self)
;1203:{
line 1204
;1204:	gentity_t *owner = &g_entities[self->r.ownerNum];
ADDRLP4 0
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 396
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ASGNP4
line 1206
;1205:
;1206:	if (!owner || !owner->client || !owner->inuse)
ADDRLP4 8
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $383
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $383
ADDRLP4 0
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
NEI4 $380
LABELV $383
line 1207
;1207:	{
line 1208
;1208:		goto killMe;
ADDRGP4 $384
JUMPV
LABELV $380
line 1211
;1209:	}
;1210:
;1211:	if (self->damageRedirect == DAMAGEREDIRECT_HEAD &&
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 816
ADDP4
INDIRI4
CNSTI4 1
NEI4 $385
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1652
ADDP4
INDIRI4
ADDRLP4 12
INDIRP4
INDIRI4
EQI4 $385
line 1213
;1212:		owner->client->damageBoxHandle_Head != self->s.number)
;1213:	{
line 1214
;1214:		goto killMe;
ADDRGP4 $384
JUMPV
LABELV $385
line 1217
;1215:	}
;1216:
;1217:	if (self->damageRedirect == DAMAGEREDIRECT_RLEG &&
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
CNSTI4 816
ADDP4
INDIRI4
CNSTI4 2
NEI4 $387
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1656
ADDP4
INDIRI4
ADDRLP4 16
INDIRP4
INDIRI4
EQI4 $387
line 1219
;1218:		owner->client->damageBoxHandle_RLeg != self->s.number)
;1219:	{
line 1220
;1220:		goto killMe;
ADDRGP4 $384
JUMPV
LABELV $387
line 1223
;1221:	}
;1222:
;1223:	if (self->damageRedirect == DAMAGEREDIRECT_LLEG &&
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 816
ADDP4
INDIRI4
CNSTI4 3
NEI4 $389
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1660
ADDP4
INDIRI4
ADDRLP4 20
INDIRP4
INDIRI4
EQI4 $389
line 1225
;1224:		owner->client->damageBoxHandle_LLeg != self->s.number)
;1225:	{
line 1226
;1226:		goto killMe;
ADDRGP4 $384
JUMPV
LABELV $389
line 1229
;1227:	}
;1228:
;1229:	if (owner->health < 1)
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $391
line 1230
;1230:	{
line 1231
;1231:		goto killMe;
ADDRGP4 $384
JUMPV
LABELV $391
line 1236
;1232:	}
;1233:
;1234:	//G_TestLine(self->r.currentOrigin, owner->client->ps.origin, 0x0000ff, 100);
;1235:
;1236:	trap_LinkEntity(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 1238
;1237:
;1238:	self->nextthink = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1239
;1239:	return;
ADDRGP4 $379
JUMPV
LABELV $384
line 1242
;1240:
;1241:killMe:
;1242:	self->think = G_FreeEntity;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 G_FreeEntity
ASGNP4
line 1243
;1243:	self->nextthink = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 1244
;1244:}
LABELV $379
endproc DmgBoxUpdateSelf 24 4
export DmgBoxAbsorb_Die
proc DmgBoxAbsorb_Die 0 0
line 1247
;1245:
;1246:void DmgBoxAbsorb_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod )
;1247:{
line 1248
;1248:	self->health = 1;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 1
ASGNI4
line 1249
;1249:}
LABELV $395
endproc DmgBoxAbsorb_Die 0 0
export DmgBoxAbsorb_Pain
proc DmgBoxAbsorb_Pain 0 0
line 1252
;1250:
;1251:void DmgBoxAbsorb_Pain(gentity_t *self, gentity_t *attacker, int damage)
;1252:{
line 1253
;1253:	self->health = 1;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 1
ASGNI4
line 1254
;1254:}
LABELV $396
endproc DmgBoxAbsorb_Pain 0 0
export CreateNewDamageBox
proc CreateNewDamageBox 16 0
line 1257
;1255:
;1256:gentity_t *CreateNewDamageBox( gentity_t *ent )
;1257:{
line 1262
;1258:	gentity_t *dmgBox;
;1259:
;1260:	//We do not want the client to have any real knowledge of the entity whatsoever. It will only
;1261:	//ever be used on the server.
;1262:	dmgBox = G_Spawn();
ADDRLP4 4
ADDRGP4 G_Spawn
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 1263
;1263:	dmgBox->classname = "dmg_box";
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
ADDRGP4 $398
ASGNP4
line 1265
;1264:			
;1265:	dmgBox->r.svFlags = SVF_USE_CURRENT_ORIGIN;
ADDRLP4 0
INDIRP4
CNSTI4 304
ADDP4
CNSTI4 128
ASGNI4
line 1266
;1266:	dmgBox->r.ownerNum = ent->s.number;
ADDRLP4 0
INDIRP4
CNSTI4 396
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 1268
;1267:
;1268:	dmgBox->clipmask = 0;
ADDRLP4 0
INDIRP4
CNSTI4 508
ADDP4
CNSTI4 0
ASGNI4
line 1269
;1269:	dmgBox->r.contents = MASK_PLAYERSOLID;
ADDRLP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 273
ASGNI4
line 1271
;1270:
;1271:	dmgBox->mass = 5000;
ADDRLP4 0
INDIRP4
CNSTI4 624
ADDP4
CNSTF4 1167867904
ASGNF4
line 1273
;1272:
;1273:	dmgBox->s.eFlags |= EF_NODRAW;
ADDRLP4 8
ADDRLP4 0
INDIRP4
CNSTI4 8
ADDP4
ASGNP4
ADDRLP4 8
INDIRP4
ADDRLP4 8
INDIRP4
INDIRI4
CNSTI4 128
BORI4
ASGNI4
line 1274
;1274:	dmgBox->r.svFlags |= SVF_NOCLIENT;
ADDRLP4 12
ADDRLP4 0
INDIRP4
CNSTI4 304
ADDP4
ASGNP4
ADDRLP4 12
INDIRP4
ADDRLP4 12
INDIRP4
INDIRI4
CNSTI4 1
BORI4
ASGNI4
line 1276
;1275:
;1276:	dmgBox->touch = DmgBoxHit;
ADDRLP4 0
INDIRP4
CNSTI4 648
ADDP4
ADDRGP4 DmgBoxHit
ASGNP4
line 1278
;1277:
;1278:	dmgBox->takedamage = qtrue;
ADDRLP4 0
INDIRP4
CNSTI4 680
ADDP4
CNSTI4 1
ASGNI4
line 1280
;1279:
;1280:	dmgBox->health = 1;
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 1
ASGNI4
line 1282
;1281:
;1282:	dmgBox->pain = DmgBoxAbsorb_Pain;
ADDRLP4 0
INDIRP4
CNSTI4 656
ADDP4
ADDRGP4 DmgBoxAbsorb_Pain
ASGNP4
line 1283
;1283:	dmgBox->die = DmgBoxAbsorb_Die;
ADDRLP4 0
INDIRP4
CNSTI4 660
ADDP4
ADDRGP4 DmgBoxAbsorb_Die
ASGNP4
line 1285
;1284:
;1285:	dmgBox->think = DmgBoxUpdateSelf;
ADDRLP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 DmgBoxUpdateSelf
ASGNP4
line 1286
;1286:	dmgBox->nextthink = level.time + 50;
ADDRLP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 50
ADDI4
ASGNI4
line 1288
;1287:
;1288:	return dmgBox;
ADDRLP4 0
INDIRP4
RETP4
LABELV $397
endproc CreateNewDamageBox 16 0
export ATST_ManageDamageBoxes
proc ATST_ManageDamageBoxes 92 16
line 1292
;1289:}
;1290:
;1291:void ATST_ManageDamageBoxes(gentity_t *ent)
;1292:{
line 1296
;1293:	vec3_t headOrg, lLegOrg, rLegOrg;
;1294:	vec3_t fwd, right, up, flatAngle;
;1295:
;1296:	if (!ent->client->damageBoxHandle_Head)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1652
ADDP4
INDIRI4
CNSTI4 0
NEI4 $401
line 1297
;1297:	{
line 1298
;1298:		gentity_t *dmgBox = CreateNewDamageBox(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 88
ADDRGP4 CreateNewDamageBox
CALLP4
ASGNP4
ADDRLP4 84
ADDRLP4 88
INDIRP4
ASGNP4
line 1300
;1299:
;1300:		if (dmgBox)
ADDRLP4 84
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $403
line 1301
;1301:		{
line 1302
;1302:			VectorSet( dmgBox->r.mins, ATST_MINS0, ATST_MINS1, ATST_MINS2 );
ADDRLP4 84
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3256877056
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3256877056
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3250585600
ASGNF4
line 1303
;1303:			VectorSet( dmgBox->r.maxs, ATST_MAXS0, ATST_MAXS1, ATST_HEADSIZE );
ADDRLP4 84
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1109393408
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1109393408
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1119092736
ASGNF4
line 1305
;1304:
;1305:			ent->client->damageBoxHandle_Head = dmgBox->s.number;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1652
ADDP4
ADDRLP4 84
INDIRP4
INDIRI4
ASGNI4
line 1306
;1306:			dmgBox->damageRedirect = DAMAGEREDIRECT_HEAD;
ADDRLP4 84
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 1
ASGNI4
line 1307
;1307:			dmgBox->damageRedirectTo = ent->s.number;
ADDRLP4 84
INDIRP4
CNSTI4 820
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 1308
;1308:		}
LABELV $403
line 1309
;1309:	}
LABELV $401
line 1310
;1310:	if (!ent->client->damageBoxHandle_RLeg)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1656
ADDP4
INDIRI4
CNSTI4 0
NEI4 $405
line 1311
;1311:	{
line 1312
;1312:		gentity_t *dmgBox = CreateNewDamageBox(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 88
ADDRGP4 CreateNewDamageBox
CALLP4
ASGNP4
ADDRLP4 84
ADDRLP4 88
INDIRP4
ASGNP4
line 1314
;1313:
;1314:		if (dmgBox)
ADDRLP4 84
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $407
line 1315
;1315:		{
line 1316
;1316:			VectorSet( dmgBox->r.mins, ATST_MINS0/4, ATST_MINS1/4, ATST_MINS2 );
ADDRLP4 84
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3240099840
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3240099840
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3250585600
ASGNF4
line 1317
;1317:			VectorSet( dmgBox->r.maxs, ATST_MAXS0/4, ATST_MAXS1/4, ATST_MAXS2-ATST_HEADSIZE );
ADDRLP4 84
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1092616192
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1092616192
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1126039552
ASGNF4
line 1319
;1318:
;1319:			ent->client->damageBoxHandle_RLeg = dmgBox->s.number;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1656
ADDP4
ADDRLP4 84
INDIRP4
INDIRI4
ASGNI4
line 1320
;1320:			dmgBox->damageRedirect = DAMAGEREDIRECT_RLEG;
ADDRLP4 84
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 2
ASGNI4
line 1321
;1321:			dmgBox->damageRedirectTo = ent->s.number;
ADDRLP4 84
INDIRP4
CNSTI4 820
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 1322
;1322:		}
LABELV $407
line 1323
;1323:	}
LABELV $405
line 1324
;1324:	if (!ent->client->damageBoxHandle_LLeg)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1660
ADDP4
INDIRI4
CNSTI4 0
NEI4 $409
line 1325
;1325:	{
line 1326
;1326:		gentity_t *dmgBox = CreateNewDamageBox(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 88
ADDRGP4 CreateNewDamageBox
CALLP4
ASGNP4
ADDRLP4 84
ADDRLP4 88
INDIRP4
ASGNP4
line 1328
;1327:
;1328:		if (dmgBox)
ADDRLP4 84
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $411
line 1329
;1329:		{
line 1330
;1330:			VectorSet( dmgBox->r.mins, ATST_MINS0/4, ATST_MINS1/4, ATST_MINS2 );
ADDRLP4 84
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3240099840
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3240099840
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3250585600
ASGNF4
line 1331
;1331:			VectorSet( dmgBox->r.maxs, ATST_MAXS0/4, ATST_MAXS1/4, ATST_MAXS2-ATST_HEADSIZE );
ADDRLP4 84
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1092616192
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1092616192
ASGNF4
ADDRLP4 84
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1126039552
ASGNF4
line 1333
;1332:
;1333:			ent->client->damageBoxHandle_LLeg = dmgBox->s.number;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1660
ADDP4
ADDRLP4 84
INDIRP4
INDIRI4
ASGNI4
line 1334
;1334:			dmgBox->damageRedirect = DAMAGEREDIRECT_LLEG;
ADDRLP4 84
INDIRP4
CNSTI4 816
ADDP4
CNSTI4 3
ASGNI4
line 1335
;1335:			dmgBox->damageRedirectTo = ent->s.number;
ADDRLP4 84
INDIRP4
CNSTI4 820
ADDP4
ADDRFP4 0
INDIRP4
INDIRI4
ASGNI4
line 1336
;1336:		}
LABELV $411
line 1337
;1337:	}
LABELV $409
line 1339
;1338:
;1339:	if (!ent->client->damageBoxHandle_Head ||
ADDRLP4 84
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
ASGNP4
ADDRLP4 88
CNSTI4 0
ASGNI4
ADDRLP4 84
INDIRP4
CNSTI4 1652
ADDP4
INDIRI4
ADDRLP4 88
INDIRI4
EQI4 $416
ADDRLP4 84
INDIRP4
CNSTI4 1660
ADDP4
INDIRI4
ADDRLP4 88
INDIRI4
EQI4 $416
ADDRLP4 84
INDIRP4
CNSTI4 1656
ADDP4
INDIRI4
ADDRLP4 88
INDIRI4
NEI4 $413
LABELV $416
line 1342
;1340:		!ent->client->damageBoxHandle_LLeg ||
;1341:		!ent->client->damageBoxHandle_RLeg)
;1342:	{
line 1343
;1343:		return;
ADDRGP4 $400
JUMPV
LABELV $413
line 1346
;1344:	}
;1345:
;1346:	VectorCopy(ent->client->ps.origin, headOrg);
ADDRLP4 48
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 1347
;1347:	headOrg[2] += (ATST_MAXS2-ATST_HEADSIZE);
ADDRLP4 48+8
ADDRLP4 48+8
INDIRF4
CNSTF4 1126039552
ADDF4
ASGNF4
line 1349
;1348:
;1349:	VectorCopy(ent->client->ps.viewangles, flatAngle);
ADDRLP4 36
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
INDIRB
ASGNB 12
line 1350
;1350:	flatAngle[PITCH] = 0;
ADDRLP4 36
CNSTF4 0
ASGNF4
line 1351
;1351:	flatAngle[ROLL] = 0;
ADDRLP4 36+8
CNSTF4 0
ASGNF4
line 1353
;1352:
;1353:	AngleVectors(flatAngle, fwd, right, up);
ADDRLP4 36
ARGP4
ADDRLP4 60
ARGP4
ADDRLP4 0
ARGP4
ADDRLP4 72
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 1355
;1354:
;1355:	VectorCopy(ent->client->ps.origin, lLegOrg);
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 1356
;1356:	VectorCopy(ent->client->ps.origin, rLegOrg);
ADDRLP4 24
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 1358
;1357:
;1358:	lLegOrg[0] -= right[0]*32;
ADDRLP4 12
ADDRLP4 12
INDIRF4
CNSTF4 1107296256
ADDRLP4 0
INDIRF4
MULF4
SUBF4
ASGNF4
line 1359
;1359:	lLegOrg[1] -= right[1]*32;
ADDRLP4 12+4
ADDRLP4 12+4
INDIRF4
CNSTF4 1107296256
ADDRLP4 0+4
INDIRF4
MULF4
SUBF4
ASGNF4
line 1360
;1360:	lLegOrg[2] -= right[2]*32;
ADDRLP4 12+8
ADDRLP4 12+8
INDIRF4
CNSTF4 1107296256
ADDRLP4 0+8
INDIRF4
MULF4
SUBF4
ASGNF4
line 1362
;1361:
;1362:	rLegOrg[0] += right[0]*32;
ADDRLP4 24
ADDRLP4 24
INDIRF4
CNSTF4 1107296256
ADDRLP4 0
INDIRF4
MULF4
ADDF4
ASGNF4
line 1363
;1363:	rLegOrg[1] += right[1]*32;
ADDRLP4 24+4
ADDRLP4 24+4
INDIRF4
CNSTF4 1107296256
ADDRLP4 0+4
INDIRF4
MULF4
ADDF4
ASGNF4
line 1364
;1364:	rLegOrg[2] += right[2]*32;
ADDRLP4 24+8
ADDRLP4 24+8
INDIRF4
CNSTF4 1107296256
ADDRLP4 0+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 1366
;1365:
;1366:	G_SetOrigin(&g_entities[ent->client->damageBoxHandle_Head], headOrg);
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1652
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 48
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 1367
;1367:	G_SetOrigin(&g_entities[ent->client->damageBoxHandle_LLeg], lLegOrg);
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1660
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 12
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 1368
;1368:	G_SetOrigin(&g_entities[ent->client->damageBoxHandle_RLeg], rLegOrg);
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1656
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 24
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 1369
;1369:}
LABELV $400
endproc ATST_ManageDamageBoxes 92 16
export G_PlayerBecomeATST
proc G_PlayerBecomeATST 8 0
line 1372
;1370:
;1371:int G_PlayerBecomeATST(gentity_t *ent)
;1372:{
line 1373
;1373:	if (!ent || !ent->client)
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRU4
EQU4 $430
ADDRLP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 4
INDIRU4
NEU4 $428
LABELV $430
line 1374
;1374:	{
line 1375
;1375:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $427
JUMPV
LABELV $428
line 1378
;1376:	}
;1377:
;1378:	if (ent->client->ps.weaponTime > 0)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
INDIRI4
CNSTI4 0
LEI4 $431
line 1379
;1379:	{
line 1380
;1380:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $427
JUMPV
LABELV $431
line 1383
;1381:	}
;1382:
;1383:	if (ent->client->ps.forceHandExtend != HANDEXTEND_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
INDIRI4
CNSTI4 0
EQI4 $433
line 1384
;1384:	{
line 1385
;1385:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $427
JUMPV
LABELV $433
line 1388
;1386:	}
;1387:
;1388:	if (ent->client->ps.zoomMode)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1332
ADDP4
INDIRI4
CNSTI4 0
EQI4 $435
line 1389
;1389:	{
line 1390
;1390:		return 0;
CNSTI4 0
RETI4
ADDRGP4 $427
JUMPV
LABELV $435
line 1393
;1391:	}
;1392:
;1393:	if (ent->client->ps.usingATST)
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1316
ADDP4
INDIRI4
CNSTI4 0
EQI4 $437
line 1394
;1394:	{
line 1395
;1395:		ent->client->ps.usingATST = qfalse;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1316
ADDP4
CNSTI4 0
ASGNI4
line 1396
;1396:		ent->client->ps.forceHandExtend = HANDEXTEND_WEAPONREADY;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1248
ADDP4
CNSTI4 6
ASGNI4
line 1397
;1397:	}
ADDRGP4 $438
JUMPV
LABELV $437
line 1399
;1398:	else
;1399:	{
line 1400
;1400:		ent->client->ps.usingATST = qtrue;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 1316
ADDP4
CNSTI4 1
ASGNI4
line 1401
;1401:	}
LABELV $438
line 1403
;1402:
;1403:	ent->client->ps.weaponTime = 1000;
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 44
ADDP4
CNSTI4 1000
ASGNI4
line 1405
;1404:
;1405:	return 1;
CNSTI4 1
RETI4
LABELV $427
endproc G_PlayerBecomeATST 8 0
export fx_runner_think
proc fx_runner_think 16 12
line 1425
;1406:}
;1407:
;1408:/*QUAKED fx_runner (0 0 1) (-8 -8 -8) (8 8 8) STARTOFF ONESHOT
;1409:	STARTOFF - effect starts off, toggles on/off when used
;1410:	ONESHOT - effect fires only when used
;1411:
;1412:    "angles"   - 3-float vector, angle the effect should play (unless fxTarget is supplied)
;1413:	"fxFile"   - name of the effect file to play
;1414:	"fxTarget" - aim the effect toward this object, otherwise defaults to up
;1415:	"target"   - uses its target when the fx gets triggered
;1416:	"delay"    - how often to call the effect, don't over-do this ( default 400 )
;1417:			     note that it has to send an event each time it plays, so don't kill bandwidth or I will cry
;1418:	"random"   - random amount of time to add to delay, ( default 0, 200 = 0ms to 200ms )
;1419:*/
;1420:#define FX_RUNNER_RESERVED 0x800000
;1421:#define FX_ENT_RADIUS 8 //32
;1422:
;1423://----------------------------------------------------------
;1424:void fx_runner_think( gentity_t *ent )
;1425:{
line 1427
;1426:	// call the effect with the desired position and orientation
;1427:	G_AddEvent( ent, EV_PLAY_EFFECT_ID, ent->bolt_Head );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
CNSTI4 64
ARGI4
ADDRLP4 0
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_AddEvent
CALLV
pop
line 1429
;1428:
;1429:	ent->nextthink = level.time + ent->delay + random() * ent->random;
ADDRLP4 4
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 8
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 8
INDIRP4
CNSTI4 764
ADDP4
INDIRI4
ADDI4
CVIF4 4
ADDRLP4 4
INDIRI4
CNSTI4 32767
BANDI4
CVIF4 4
CNSTF4 1191181824
DIVF4
ADDRFP4 0
INDIRP4
CNSTI4 760
ADDP4
INDIRF4
MULF4
ADDF4
CVFI4 4
ASGNI4
line 1431
;1430:
;1431:	if ( ent->target )
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $441
line 1432
;1432:	{
line 1434
;1433:		// let our target know that we have spawned an effect
;1434:		G_UseTargets( ent, ent );
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRGP4 G_UseTargets
CALLV
pop
line 1435
;1435:	}
LABELV $441
line 1436
;1436:}
LABELV $439
endproc fx_runner_think 16 12
export fx_runner_use
proc fx_runner_use 4 8
line 1440
;1437:
;1438://----------------------------------------------------------
;1439:void fx_runner_use( gentity_t *self, gentity_t *other, gentity_t *activator )
;1440:{
line 1441
;1441:	if ( self->spawnflags & 2 ) // ONESHOT
ADDRFP4 0
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
CNSTI4 2
BANDI4
CNSTI4 0
EQI4 $444
line 1442
;1442:	{
line 1445
;1443:		// call the effect with the desired position and orientation, as a safety thing,
;1444:		//	make sure we aren't thinking at all.
;1445:		fx_runner_think( self );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 fx_runner_think
CALLV
pop
line 1446
;1446:		self->nextthink = -1;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
CNSTI4 -1
ASGNI4
line 1448
;1447:
;1448:		if ( self->target )
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $445
line 1449
;1449:		{
line 1451
;1450:			// let our target know that we have spawned an effect
;1451:			G_UseTargets( self, self );
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_UseTargets
CALLV
pop
line 1452
;1452:		}
line 1453
;1453:	}
ADDRGP4 $445
JUMPV
LABELV $444
line 1455
;1454:	else
;1455:	{
line 1457
;1456:		// ensure we are working with the right think function
;1457:		self->think = fx_runner_think;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 fx_runner_think
ASGNP4
line 1460
;1458:
;1459:		// toggle our state
;1460:		if ( self->nextthink == -1 )
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
INDIRI4
CNSTI4 -1
NEI4 $448
line 1461
;1461:		{
line 1464
;1462:			// NOTE: we fire the effect immediately on use, the fx_runner_think func will set
;1463:			//	up the nextthink time.
;1464:			fx_runner_think( self );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 fx_runner_think
CALLV
pop
line 1465
;1465:		}
ADDRGP4 $449
JUMPV
LABELV $448
line 1467
;1466:		else
;1467:		{
line 1469
;1468:			// turn off for now
;1469:			self->nextthink = -1;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
CNSTI4 -1
ASGNI4
line 1470
;1470:		}
LABELV $449
line 1471
;1471:	}
LABELV $445
line 1472
;1472:}
LABELV $443
endproc fx_runner_use 4 8
export fx_runner_link
proc fx_runner_link 44 12
line 1476
;1473:
;1474://----------------------------------------------------------
;1475:void fx_runner_link( gentity_t *ent )
;1476:{
line 1479
;1477:	vec3_t	dir;
;1478:
;1479:	if ( ent->roffname && ent->roffname[0] )
ADDRLP4 12
ADDRFP4 0
INDIRP4
CNSTI4 428
ADDP4
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $451
ADDRLP4 12
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
EQI4 $451
line 1480
;1480:	{
line 1482
;1481:		// try to use the target to override the orientation
;1482:		gentity_t	*target = NULL;
ADDRLP4 16
CNSTP4 0
ASGNP4
line 1484
;1483:
;1484:		target = G_Find( target, FOFS(targetname), ent->roffname );
ADDRLP4 16
INDIRP4
ARGP4
CNSTI4 588
ARGI4
ADDRFP4 0
INDIRP4
CNSTI4 428
ADDP4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 G_Find
CALLP4
ASGNP4
ADDRLP4 16
ADDRLP4 20
INDIRP4
ASGNP4
line 1486
;1485:
;1486:		if ( !target )
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $453
line 1487
;1487:		{
line 1489
;1488:			// Bah, no good, dump a warning, but continue on and use the UP vector
;1489:			Com_Printf( "fx_runner_link: target specified but not found: %s\n", ent->roffname );
ADDRGP4 $455
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 428
ADDP4
INDIRP4
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 1490
;1490:			Com_Printf( "  -assuming UP orientation.\n" );
ADDRGP4 $456
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 1491
;1491:		}
ADDRGP4 $454
JUMPV
LABELV $453
line 1493
;1492:		else
;1493:		{
line 1495
;1494:			// Our target is valid so let's override the default UP vector
;1495:			VectorSubtract( target->s.origin, ent->s.origin, dir );
ADDRLP4 28
CNSTI4 92
ASGNI4
ADDRLP4 32
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 16
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRF4
ADDRLP4 32
INDIRP4
ADDRLP4 28
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 36
CNSTI4 96
ASGNI4
ADDRLP4 0+4
ADDRLP4 16
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRF4
ADDRLP4 32
INDIRP4
ADDRLP4 36
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 40
CNSTI4 100
ASGNI4
ADDRLP4 0+8
ADDRLP4 16
INDIRP4
ADDRLP4 40
INDIRI4
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
ADDRLP4 40
INDIRI4
ADDP4
INDIRF4
SUBF4
ASGNF4
line 1496
;1496:			VectorNormalize( dir );
ADDRLP4 0
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 1497
;1497:			vectoangles( dir, ent->s.angles );
ADDRLP4 0
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 116
ADDP4
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 1498
;1498:		}
LABELV $454
line 1499
;1499:	}
LABELV $451
line 1502
;1500:
;1501:	// don't really do anything with this right now other than do a check to warn the designers if the target is bogus
;1502:	if ( ent->target )
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $459
line 1503
;1503:	{
line 1504
;1504:		gentity_t	*target = NULL;
ADDRLP4 16
CNSTP4 0
ASGNP4
line 1506
;1505:
;1506:		target = G_Find( target, FOFS(targetname), ent->target );
ADDRLP4 16
INDIRP4
ARGP4
CNSTI4 588
ARGI4
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 G_Find
CALLP4
ASGNP4
ADDRLP4 16
ADDRLP4 20
INDIRP4
ASGNP4
line 1508
;1507:
;1508:		if ( !target )
ADDRLP4 16
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $461
line 1509
;1509:		{
line 1511
;1510:			// Target is bogus, but we can still continue
;1511:			Com_Printf( "fx_runner_link: target was specified but is not valid: %s\n", ent->target );
ADDRGP4 $463
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 584
ADDP4
INDIRP4
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 1512
;1512:		}
LABELV $461
line 1513
;1513:	}
LABELV $459
line 1515
;1514:
;1515:	G_SetAngles( ent, ent->s.angles );
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRLP4 16
INDIRP4
CNSTI4 116
ADDP4
ARGP4
ADDRGP4 G_SetAngles
CALLV
pop
line 1517
;1516:
;1517:	if ( ent->spawnflags & 1 || ent->spawnflags & 2 ) // STARTOFF || ONESHOT
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 420
ADDP4
INDIRI4
ASGNI4
ADDRLP4 24
CNSTI4 0
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 1
BANDI4
ADDRLP4 24
INDIRI4
NEI4 $466
ADDRLP4 20
INDIRI4
CNSTI4 2
BANDI4
ADDRLP4 24
INDIRI4
EQI4 $464
LABELV $466
line 1518
;1518:	{
line 1520
;1519:		// We won't even consider thinking until we are used
;1520:		ent->nextthink = -1;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
CNSTI4 -1
ASGNI4
line 1521
;1521:	}
ADDRGP4 $465
JUMPV
LABELV $464
line 1523
;1522:	else
;1523:	{
line 1525
;1524:		// Let's get to work right now!
;1525:		ent->think = fx_runner_think;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 fx_runner_think
ASGNP4
line 1526
;1526:		ent->nextthink = level.time + 100; // wait a small bit, then start working
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 100
ADDI4
ASGNI4
line 1527
;1527:	}
LABELV $465
line 1528
;1528:}
LABELV $450
endproc fx_runner_link 44 12
export SP_fx_runner
proc SP_fx_runner 36 12
line 1532
;1529:
;1530://----------------------------------------------------------
;1531:void SP_fx_runner( gentity_t *ent )
;1532:{
line 1536
;1533:	char		*fxFile;
;1534:
;1535:	// Get our defaults
;1536:	G_SpawnInt( "delay", "400", &ent->delay );
ADDRGP4 $469
ARGP4
ADDRGP4 $470
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 764
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 1537
;1537:	G_SpawnFloat( "random", "0", &ent->random );
ADDRGP4 $471
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 760
ADDP4
ARGP4
ADDRGP4 G_SpawnFloat
CALLI4
pop
line 1539
;1538:
;1539:	if (!ent->s.angles[0] && !ent->s.angles[1] && !ent->s.angles[2])
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 8
CNSTF4 0
ASGNF4
ADDRLP4 4
INDIRP4
CNSTI4 116
ADDP4
INDIRF4
ADDRLP4 8
INDIRF4
NEF4 $472
ADDRLP4 4
INDIRP4
CNSTI4 120
ADDP4
INDIRF4
ADDRLP4 8
INDIRF4
NEF4 $472
ADDRLP4 4
INDIRP4
CNSTI4 124
ADDP4
INDIRF4
ADDRLP4 8
INDIRF4
NEF4 $472
line 1540
;1540:	{
line 1542
;1541:		// didn't have angles, so give us the default of up
;1542:		VectorSet( ent->s.angles, -90, 0, 0 );
ADDRFP4 0
INDIRP4
CNSTI4 116
ADDP4
CNSTF4 3266576384
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 120
ADDP4
CNSTF4 0
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 124
ADDP4
CNSTF4 0
ASGNF4
line 1543
;1543:	}
LABELV $472
line 1546
;1544:
;1545:	// make us useable if we can be targeted
;1546:	if ( ent->targetname )
ADDRFP4 0
INDIRP4
CNSTI4 588
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $474
line 1547
;1547:	{
line 1548
;1548:		ent->use = fx_runner_use;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 fx_runner_use
ASGNP4
line 1549
;1549:	}
LABELV $474
line 1551
;1550:
;1551:	G_SpawnString( "fxFile", "", &fxFile );
ADDRGP4 $476
ARGP4
ADDRGP4 $477
ARGP4
ADDRLP4 0
ARGP4
ADDRGP4 G_SpawnString
CALLI4
pop
line 1553
;1552:
;1553:	G_SpawnString( "fxTarget", "", &ent->roffname );
ADDRGP4 $478
ARGP4
ADDRGP4 $477
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 428
ADDP4
ARGP4
ADDRGP4 G_SpawnString
CALLI4
pop
line 1555
;1554:
;1555:	if ( !fxFile || !fxFile[0] )
ADDRLP4 12
ADDRLP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $481
ADDRLP4 12
INDIRP4
INDIRI1
CVII4 1
CNSTI4 0
NEI4 $479
LABELV $481
line 1556
;1556:	{
line 1557
;1557:		Com_Printf( S_COLOR_RED"ERROR: fx_runner %s at %s has no fxFile specified\n", ent->targetname, vtos(ent->s.origin) );
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 16
ADDRGP4 vtos
CALLP4
ASGNP4
ADDRGP4 $482
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 588
ADDP4
INDIRP4
ARGP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRGP4 Com_Printf
CALLV
pop
line 1558
;1558:		G_FreeEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 1559
;1559:		return;
ADDRGP4 $468
JUMPV
LABELV $479
line 1564
;1560:	}
;1561:
;1562:	// Try and associate an effect file, unfortunately we won't know if this worked or not 
;1563:	//	until the CGAME trys to register it...
;1564:	ent->bolt_Head = G_EffectIndex( fxFile );
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 G_EffectIndex
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
ADDRLP4 16
INDIRI4
ASGNI4
line 1568
;1565:	//It is dirty, yes. But no one likes adding things to the entity structure.
;1566:
;1567:	// Give us a bit of time to spawn in the other entities, since we may have to target one of 'em
;1568:	ent->think = fx_runner_link; 
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 fx_runner_link
ASGNP4
line 1569
;1569:	ent->nextthink = level.time + 300;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 300
ADDI4
ASGNI4
line 1572
;1570:
;1571:	// Save our position and link us up!
;1572:	G_SetOrigin( ent, ent->s.origin );
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRLP4 20
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 1574
;1573:
;1574:	VectorSet( ent->r.maxs, FX_ENT_RADIUS, FX_ENT_RADIUS, FX_ENT_RADIUS );
ADDRFP4 0
INDIRP4
CNSTI4 328
ADDP4
CNSTF4 1090519040
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 332
ADDP4
CNSTF4 1090519040
ASGNF4
ADDRFP4 0
INDIRP4
CNSTI4 336
ADDP4
CNSTF4 1090519040
ASGNF4
line 1575
;1575:	VectorScale( ent->r.maxs, -1, ent->r.mins );
ADDRLP4 24
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 24
INDIRP4
CNSTI4 316
ADDP4
CNSTF4 3212836864
ADDRLP4 24
INDIRP4
CNSTI4 328
ADDP4
INDIRF4
MULF4
ASGNF4
ADDRLP4 28
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 28
INDIRP4
CNSTI4 320
ADDP4
CNSTF4 3212836864
ADDRLP4 28
INDIRP4
CNSTI4 332
ADDP4
INDIRF4
MULF4
ASGNF4
ADDRLP4 32
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 32
INDIRP4
CNSTI4 324
ADDP4
CNSTF4 3212836864
ADDRLP4 32
INDIRP4
CNSTI4 336
ADDP4
INDIRF4
MULF4
ASGNF4
line 1577
;1576:
;1577:	trap_LinkEntity( ent );
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 1578
;1578:}
LABELV $468
endproc SP_fx_runner 36 12
data
export gAnimEntTypes
align 4
LABELV gAnimEntTypes
byte 4 0
export animEntRoot
align 4
LABELV animEntRoot
byte 4 0
export ExampleAnimEntCustomData
code
proc ExampleAnimEntCustomData 8 0
line 1637
;1579:
;1580://rww - here starts the main example g2animent stuff
;1581:#define ANIMENT_TYPE_STORMTROOPER			0
;1582:#define ANIMENT_TYPE_RODIAN					1
;1583:#define ANIMENT_TYPE_JAN					2
;1584:#define ANIMENT_TYPE_CUSTOM					3
;1585:#define	MAX_ANIMENTS						4
;1586:
;1587:#define TROOPER_PAIN_SOUNDS 4
;1588:#define TROOPER_DEATH_SOUNDS 3
;1589:#define TROOPER_ALERT_SOUNDS 5
;1590:int gTrooperSound_Pain[TROOPER_PAIN_SOUNDS];
;1591:int gTrooperSound_Death[TROOPER_DEATH_SOUNDS];
;1592:int gTrooperSound_Alert[TROOPER_ALERT_SOUNDS];
;1593:
;1594:#define RODIAN_PAIN_SOUNDS 4
;1595:#define RODIAN_DEATH_SOUNDS 3
;1596:#define RODIAN_ALERT_SOUNDS 5
;1597:int gRodianSound_Pain[RODIAN_PAIN_SOUNDS];
;1598:int gRodianSound_Death[RODIAN_DEATH_SOUNDS];
;1599:int gRodianSound_Alert[RODIAN_ALERT_SOUNDS];
;1600:
;1601:#define JAN_PAIN_SOUNDS 4
;1602:#define JAN_DEATH_SOUNDS 3
;1603:#define JAN_ALERT_SOUNDS 5
;1604:int gJanSound_Pain[JAN_PAIN_SOUNDS];
;1605:int gJanSound_Death[JAN_DEATH_SOUNDS];
;1606:int gJanSound_Alert[JAN_ALERT_SOUNDS];
;1607:
;1608:int G_PickDeathAnim( gentity_t *self, vec3_t point, int damage, int mod, int hitLoc );
;1609:void AnimEntFireWeapon( gentity_t *ent, qboolean altFire );
;1610:int GetNearestVisibleWP(vec3_t org, int ignore);
;1611:int InFieldOfVision(vec3_t viewangles, float fov, vec3_t angles);
;1612:extern float gBotEdit;
;1613:
;1614:#define ANIMENT_ALIGNED_UNKNOWN		0
;1615:#define ANIMENT_ALIGNED_BAD			1
;1616:#define ANIMENT_ALIGNED_GOOD		2
;1617:
;1618:#define ANIMENT_CUSTOMSOUND_PAIN	0
;1619:#define ANIMENT_CUSTOMSOUND_DEATH	1
;1620:#define ANIMENT_CUSTOMSOUND_ALERT	2
;1621:
;1622:int gAnimEntTypes = 0;
;1623:
;1624:typedef struct animentCustomInfo_s
;1625:{
;1626:	int							aeAlignment;
;1627:	int							aeIndex;
;1628:	int							aeWeapon;
;1629:	char						*modelPath;
;1630:	char						*soundPath;
;1631:	void						*next;
;1632:} animentCustomInfo_t;
;1633:
;1634:animentCustomInfo_t *animEntRoot = NULL;
;1635:
;1636:animentCustomInfo_t *ExampleAnimEntCustomData(gentity_t *self)
;1637:{
line 1638
;1638:	animentCustomInfo_t *iter = animEntRoot;
ADDRLP4 0
ADDRGP4 animEntRoot
INDIRP4
ASGNP4
line 1639
;1639:	int safetyCheck = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $486
JUMPV
LABELV $485
line 1642
;1640:
;1641:	while (iter && safetyCheck < 30000)
;1642:	{
line 1643
;1643:		if (iter->aeIndex == self->waterlevel)
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 748
ADDP4
INDIRI4
NEI4 $488
line 1644
;1644:		{
line 1645
;1645:			return iter;
ADDRLP4 0
INDIRP4
RETP4
ADDRGP4 $484
JUMPV
LABELV $488
line 1648
;1646:		}
;1647:
;1648:		iter = iter->next;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 20
ADDP4
INDIRP4
ASGNP4
line 1649
;1649:		safetyCheck++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1650
;1650:	}
LABELV $486
line 1641
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $490
ADDRLP4 4
INDIRI4
CNSTI4 30000
LTI4 $485
LABELV $490
line 1652
;1651:
;1652:	return NULL;
CNSTP4 0
RETP4
LABELV $484
endproc ExampleAnimEntCustomData 8 0
export ExampleAnimEntCustomDataExists
proc ExampleAnimEntCustomDataExists 20 8
line 1657
;1653:}
;1654:
;1655:animentCustomInfo_t *ExampleAnimEntCustomDataExists(gentity_t *self, int alignment, int weapon, char *modelname,
;1656:												   char *soundpath)
;1657:{
line 1658
;1658:	animentCustomInfo_t *iter = animEntRoot;
ADDRLP4 0
ADDRGP4 animEntRoot
INDIRP4
ASGNP4
line 1659
;1659:	int safetyCheck = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $493
JUMPV
LABELV $492
line 1662
;1660:
;1661:	while (iter && safetyCheck < 30000)
;1662:	{
line 1663
;1663:		if (iter->aeAlignment == alignment &&
ADDRLP4 0
INDIRP4
INDIRI4
ADDRFP4 4
INDIRI4
NEI4 $495
ADDRLP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
ADDRFP4 8
INDIRI4
NEI4 $495
ADDRLP4 0
INDIRP4
CNSTI4 12
ADDP4
INDIRP4
ARGP4
ADDRFP4 12
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $495
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRFP4 16
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 Q_stricmp
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
NEI4 $495
line 1667
;1664:			iter->aeWeapon == weapon &&
;1665:			!Q_stricmp(iter->modelPath, modelname) &&
;1666:			!Q_stricmp(iter->soundPath, soundpath))
;1667:		{
line 1668
;1668:			return iter;
ADDRLP4 0
INDIRP4
RETP4
ADDRGP4 $491
JUMPV
LABELV $495
line 1671
;1669:		}
;1670:
;1671:		iter = iter->next;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 20
ADDP4
INDIRP4
ASGNP4
line 1672
;1672:		safetyCheck++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1673
;1673:	}
LABELV $493
line 1661
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $497
ADDRLP4 4
INDIRI4
CNSTI4 30000
LTI4 $492
LABELV $497
line 1675
;1674:
;1675:	return NULL;
CNSTP4 0
RETP4
LABELV $491
endproc ExampleAnimEntCustomDataExists 20 8
export ExampleAnimEntCustomDataEntry
proc ExampleAnimEntCustomDataEntry 56 20
line 1679
;1676:}
;1677:
;1678:void ExampleAnimEntCustomDataEntry(gentity_t *self, int alignment, int weapon, char *modelname, char *soundpath)
;1679:{
line 1680
;1680:	animentCustomInfo_t *find = ExampleAnimEntCustomDataExists(self, alignment, weapon, modelname, soundpath);
ADDRFP4 0
INDIRP4
ARGP4
ADDRFP4 4
INDIRI4
ARGI4
ADDRFP4 8
INDIRI4
ARGI4
ADDRFP4 12
INDIRP4
ARGP4
ADDRFP4 16
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 ExampleAnimEntCustomDataExists
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 12
INDIRP4
ASGNP4
line 1681
;1681:	animentCustomInfo_t *lastValid = NULL;
ADDRLP4 8
CNSTP4 0
ASGNP4
line 1682
;1682:	int safetyCheck = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 1684
;1683:
;1684:	if (find)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $499
line 1685
;1685:	{ //data for this guy already exists. Set our waterlevel (aeIndex) to use this.
line 1686
;1686:		self->waterlevel = find->aeIndex;
ADDRFP4 0
INDIRP4
CNSTI4 748
ADDP4
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
ASGNI4
line 1687
;1687:		return;
ADDRGP4 $498
JUMPV
LABELV $499
line 1690
;1688:	}
;1689:
;1690:	find = animEntRoot;
ADDRLP4 0
ADDRGP4 animEntRoot
INDIRP4
ASGNP4
ADDRGP4 $502
JUMPV
LABELV $501
line 1693
;1691:
;1692:	while (find && safetyCheck < 30000)
;1693:	{ //find the next null pointer
line 1694
;1694:		lastValid = find;
ADDRLP4 8
ADDRLP4 0
INDIRP4
ASGNP4
line 1695
;1695:		find = find->next;
ADDRLP4 0
ADDRLP4 0
INDIRP4
CNSTI4 20
ADDP4
INDIRP4
ASGNP4
line 1696
;1696:		safetyCheck++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1697
;1697:	}
LABELV $502
line 1692
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $504
ADDRLP4 4
INDIRI4
CNSTI4 30000
LTI4 $501
LABELV $504
line 1699
;1698:
;1699:	if (!find)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $505
line 1700
;1700:	{
line 1701
;1701:		find = BG_Alloc(sizeof(animentCustomInfo_t));
CNSTI4 24
ARGI4
ADDRLP4 16
ADDRGP4 BG_Alloc
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 16
INDIRP4
ASGNP4
line 1703
;1702:
;1703:		if (!find)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $507
line 1704
;1704:		{ //careful not to exceed the BG_Alloc limit!
line 1705
;1705:			return;
ADDRGP4 $498
JUMPV
LABELV $507
line 1708
;1706:		}
;1707:
;1708:		find->aeAlignment = alignment;
ADDRLP4 0
INDIRP4
ADDRFP4 4
INDIRI4
ASGNI4
line 1709
;1709:		self->waterlevel = gAnimEntTypes;
ADDRFP4 0
INDIRP4
CNSTI4 748
ADDP4
ADDRGP4 gAnimEntTypes
INDIRI4
ASGNI4
line 1710
;1710:		find->aeIndex = self->waterlevel;
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
ADDRFP4 0
INDIRP4
CNSTI4 748
ADDP4
INDIRI4
ASGNI4
line 1711
;1711:		find->aeWeapon = weapon;
ADDRLP4 0
INDIRP4
CNSTI4 8
ADDP4
ADDRFP4 8
INDIRI4
ASGNI4
line 1712
;1712:		find->next = NULL;
ADDRLP4 0
INDIRP4
CNSTI4 20
ADDP4
CNSTP4 0
ASGNP4
line 1714
;1713:
;1714:		find->modelPath = BG_Alloc(strlen(modelname)+1);
ADDRFP4 12
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 1
ADDI4
ARGI4
ADDRLP4 24
ADDRGP4 BG_Alloc
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 12
ADDP4
ADDRLP4 24
INDIRP4
ASGNP4
line 1715
;1715:		find->soundPath = BG_Alloc(strlen(soundpath)+1);
ADDRFP4 16
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 1
ADDI4
ARGI4
ADDRLP4 32
ADDRGP4 BG_Alloc
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
ADDRLP4 32
INDIRP4
ASGNP4
line 1717
;1716:
;1717:		if (!find->modelPath || !find->soundPath)
ADDRLP4 40
CNSTU4 0
ASGNU4
ADDRLP4 0
INDIRP4
CNSTI4 12
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 40
INDIRU4
EQU4 $511
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 40
INDIRU4
NEU4 $509
LABELV $511
line 1718
;1718:		{
line 1719
;1719:			find->aeIndex = -1;
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 -1
ASGNI4
line 1720
;1720:			return;
ADDRGP4 $498
JUMPV
LABELV $509
line 1723
;1721:		}
;1722:
;1723:		strcpy(find->modelPath, modelname);
ADDRLP4 0
INDIRP4
CNSTI4 12
ADDP4
INDIRP4
ARGP4
ADDRFP4 12
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 1724
;1724:		strcpy(find->soundPath, soundpath);
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRFP4 16
INDIRP4
ARGP4
ADDRGP4 strcpy
CALLP4
pop
line 1726
;1725:
;1726:		find->modelPath[strlen(modelname)] = 0;
ADDRFP4 12
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 44
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 12
ADDP4
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1727
;1727:		find->soundPath[strlen(modelname)] = 0;
ADDRFP4 12
INDIRP4
ARGP4
ADDRLP4 48
ADDRGP4 strlen
CALLI4
ASGNI4
ADDRLP4 48
INDIRI4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ADDP4
CNSTI1 0
ASGNI1
line 1729
;1728:
;1729:		if (lastValid)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $512
line 1730
;1730:		{
line 1731
;1731:			lastValid->next = find;
ADDRLP4 8
INDIRP4
CNSTI4 20
ADDP4
ADDRLP4 0
INDIRP4
ASGNP4
line 1732
;1732:		}
LABELV $512
line 1734
;1733:
;1734:		if (!animEntRoot)
ADDRGP4 animEntRoot
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $514
line 1735
;1735:		{
line 1736
;1736:			animEntRoot = find;
ADDRGP4 animEntRoot
ADDRLP4 0
INDIRP4
ASGNP4
line 1737
;1737:		}
LABELV $514
line 1739
;1738:
;1739:		gAnimEntTypes++;
ADDRLP4 52
ADDRGP4 gAnimEntTypes
ASGNP4
ADDRLP4 52
INDIRP4
ADDRLP4 52
INDIRP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1740
;1740:	}
LABELV $505
line 1741
;1741:}
LABELV $498
endproc ExampleAnimEntCustomDataEntry 56 20
export AnimEntCustomSoundPrecache
proc AnimEntCustomSoundPrecache 48 8
line 1744
;1742:
;1743:void AnimEntCustomSoundPrecache(animentCustomInfo_t *aeInfo)
;1744:{
line 1745
;1745:	if (!aeInfo)
ADDRFP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $517
line 1746
;1746:	{
line 1747
;1747:		return;
ADDRGP4 $516
JUMPV
LABELV $517
line 1750
;1748:	}
;1749:
;1750:	G_SoundIndex(va("%s/pain25", aeInfo->soundPath));
ADDRGP4 $519
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 0
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1751
;1751:	G_SoundIndex(va("%s/pain50", aeInfo->soundPath));
ADDRGP4 $520
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1752
;1752:	G_SoundIndex(va("%s/pain75", aeInfo->soundPath));
ADDRGP4 $521
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 8
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1753
;1753:	G_SoundIndex(va("%s/pain100", aeInfo->soundPath));
ADDRGP4 $522
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1755
;1754:
;1755:	G_SoundIndex(va("%s/death1", aeInfo->soundPath));
ADDRGP4 $523
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 16
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1756
;1756:	G_SoundIndex(va("%s/death2", aeInfo->soundPath));
ADDRGP4 $524
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1757
;1757:	G_SoundIndex(va("%s/death3", aeInfo->soundPath));
ADDRGP4 $525
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 24
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 24
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1759
;1758:
;1759:	G_SoundIndex(va("%s/detected1", aeInfo->soundPath));
ADDRGP4 $526
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 28
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1760
;1760:	G_SoundIndex(va("%s/detected2", aeInfo->soundPath));
ADDRGP4 $527
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 32
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 32
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1761
;1761:	G_SoundIndex(va("%s/detected3", aeInfo->soundPath));
ADDRGP4 $528
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 36
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 36
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1762
;1762:	G_SoundIndex(va("%s/detected4", aeInfo->soundPath));
ADDRGP4 $529
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 40
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 40
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1763
;1763:	G_SoundIndex(va("%s/detected5", aeInfo->soundPath));
ADDRGP4 $530
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 44
INDIRP4
ARGP4
ADDRGP4 G_SoundIndex
CALLI4
pop
line 1764
;1764:}
LABELV $516
endproc AnimEntCustomSoundPrecache 48 8
export ExampleAnimEntCustomSound
proc ExampleAnimEntCustomSound 116 12
line 1767
;1765:
;1766:void ExampleAnimEntCustomSound(gentity_t *self, int soundType)
;1767:{
line 1768
;1768:	animentCustomInfo_t *aeInfo = ExampleAnimEntCustomData(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 72
ADDRGP4 ExampleAnimEntCustomData
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 72
INDIRP4
ASGNP4
line 1770
;1769:	int customSounds[16];
;1770:	int numSounds = 0;
ADDRLP4 68
CNSTI4 0
ASGNI4
line 1772
;1771:
;1772:	if (!aeInfo)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $532
line 1773
;1773:	{
line 1774
;1774:		return;
ADDRGP4 $531
JUMPV
LABELV $532
line 1777
;1775:	}
;1776:
;1777:	if (soundType == ANIMENT_CUSTOMSOUND_PAIN)
ADDRFP4 4
INDIRI4
CNSTI4 0
NEI4 $534
line 1778
;1778:	{
line 1779
;1779:		customSounds[0] = G_SoundIndex(va("%s/pain25", aeInfo->soundPath));
ADDRGP4 $519
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 76
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 76
INDIRP4
ARGP4
ADDRLP4 80
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 80
INDIRI4
ASGNI4
line 1780
;1780:		customSounds[1] = G_SoundIndex(va("%s/pain50", aeInfo->soundPath));
ADDRGP4 $520
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 84
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRLP4 88
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+4
ADDRLP4 88
INDIRI4
ASGNI4
line 1781
;1781:		customSounds[2] = G_SoundIndex(va("%s/pain75", aeInfo->soundPath));
ADDRGP4 $521
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 92
INDIRP4
ARGP4
ADDRLP4 96
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+8
ADDRLP4 96
INDIRI4
ASGNI4
line 1782
;1782:		customSounds[3] = G_SoundIndex(va("%s/pain100", aeInfo->soundPath));
ADDRGP4 $522
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 100
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 100
INDIRP4
ARGP4
ADDRLP4 104
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+12
ADDRLP4 104
INDIRI4
ASGNI4
line 1783
;1783:		numSounds = 4;
ADDRLP4 68
CNSTI4 4
ASGNI4
line 1784
;1784:	}
ADDRGP4 $535
JUMPV
LABELV $534
line 1785
;1785:	else if (soundType == ANIMENT_CUSTOMSOUND_DEATH)
ADDRFP4 4
INDIRI4
CNSTI4 1
NEI4 $539
line 1786
;1786:	{
line 1787
;1787:		customSounds[0] = G_SoundIndex(va("%s/death1", aeInfo->soundPath));
ADDRGP4 $523
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 76
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 76
INDIRP4
ARGP4
ADDRLP4 80
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 80
INDIRI4
ASGNI4
line 1788
;1788:		customSounds[1] = G_SoundIndex(va("%s/death2", aeInfo->soundPath));
ADDRGP4 $524
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 84
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRLP4 88
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+4
ADDRLP4 88
INDIRI4
ASGNI4
line 1789
;1789:		customSounds[2] = G_SoundIndex(va("%s/death3", aeInfo->soundPath));
ADDRGP4 $525
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 92
INDIRP4
ARGP4
ADDRLP4 96
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+8
ADDRLP4 96
INDIRI4
ASGNI4
line 1790
;1790:		numSounds = 3;
ADDRLP4 68
CNSTI4 3
ASGNI4
line 1791
;1791:	}
ADDRGP4 $540
JUMPV
LABELV $539
line 1792
;1792:	else if (soundType == ANIMENT_CUSTOMSOUND_ALERT)
ADDRFP4 4
INDIRI4
CNSTI4 2
NEI4 $543
line 1793
;1793:	{
line 1794
;1794:		customSounds[0] = G_SoundIndex(va("%s/detected1", aeInfo->soundPath));
ADDRGP4 $526
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 76
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 76
INDIRP4
ARGP4
ADDRLP4 80
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4
ADDRLP4 80
INDIRI4
ASGNI4
line 1795
;1795:		customSounds[1] = G_SoundIndex(va("%s/detected2", aeInfo->soundPath));
ADDRGP4 $527
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 84
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 84
INDIRP4
ARGP4
ADDRLP4 88
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+4
ADDRLP4 88
INDIRI4
ASGNI4
line 1796
;1796:		customSounds[2] = G_SoundIndex(va("%s/detected3", aeInfo->soundPath));
ADDRGP4 $528
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 92
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 92
INDIRP4
ARGP4
ADDRLP4 96
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+8
ADDRLP4 96
INDIRI4
ASGNI4
line 1797
;1797:		customSounds[3] = G_SoundIndex(va("%s/detected4", aeInfo->soundPath));
ADDRGP4 $529
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 100
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 100
INDIRP4
ARGP4
ADDRLP4 104
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+12
ADDRLP4 104
INDIRI4
ASGNI4
line 1798
;1798:		customSounds[4] = G_SoundIndex(va("%s/detected5", aeInfo->soundPath));
ADDRGP4 $530
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRLP4 108
ADDRGP4 va
CALLP4
ASGNP4
ADDRLP4 108
INDIRP4
ARGP4
ADDRLP4 112
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRLP4 4+16
ADDRLP4 112
INDIRI4
ASGNI4
line 1799
;1799:		numSounds = 5;
ADDRLP4 68
CNSTI4 5
ASGNI4
line 1800
;1800:	}
LABELV $543
LABELV $540
LABELV $535
line 1802
;1801:
;1802:	if (!numSounds)
ADDRLP4 68
INDIRI4
CNSTI4 0
NEI4 $549
line 1803
;1803:	{
line 1804
;1804:		return;
ADDRGP4 $531
JUMPV
LABELV $549
line 1807
;1805:	}
;1806:
;1807:	G_Sound(self, CHAN_AUTO, customSounds[Q_irand(0, numSounds-1)]);
CNSTI4 0
ARGI4
ADDRLP4 68
INDIRI4
CNSTI4 1
SUBI4
ARGI4
ADDRLP4 76
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 76
INDIRI4
CNSTI4 2
LSHI4
ADDRLP4 4
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1808
;1808:}
LABELV $531
endproc ExampleAnimEntCustomSound 116 12
export ExampleAnimEntAlignment
proc ExampleAnimEntAlignment 8 4
line 1811
;1809:
;1810:int ExampleAnimEntAlignment(gentity_t *self)
;1811:{
line 1812
;1812:	if (self->watertype == ANIMENT_TYPE_STORMTROOPER)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 0
NEI4 $552
line 1813
;1813:	{
line 1814
;1814:		return ANIMENT_ALIGNED_BAD;
CNSTI4 1
RETI4
ADDRGP4 $551
JUMPV
LABELV $552
line 1817
;1815:	}
;1816:	
;1817:	if (self->watertype == ANIMENT_TYPE_RODIAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $554
line 1818
;1818:	{
line 1819
;1819:		return ANIMENT_ALIGNED_BAD;
CNSTI4 1
RETI4
ADDRGP4 $551
JUMPV
LABELV $554
line 1822
;1820:	}
;1821:
;1822:	if (self->watertype == ANIMENT_TYPE_JAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 2
NEI4 $556
line 1823
;1823:	{
line 1824
;1824:		return ANIMENT_ALIGNED_GOOD;
CNSTI4 2
RETI4
ADDRGP4 $551
JUMPV
LABELV $556
line 1827
;1825:	}
;1826:	
;1827:	if (self->watertype == ANIMENT_TYPE_CUSTOM)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $558
line 1828
;1828:	{
line 1829
;1829:		animentCustomInfo_t *aeInfo = ExampleAnimEntCustomData(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 ExampleAnimEntCustomData
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 4
INDIRP4
ASGNP4
line 1831
;1830:
;1831:		if (aeInfo)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $560
line 1832
;1832:		{
line 1833
;1833:			return aeInfo->aeAlignment;
ADDRLP4 0
INDIRP4
INDIRI4
RETI4
ADDRGP4 $551
JUMPV
LABELV $560
line 1835
;1834:		}
;1835:	}
LABELV $558
line 1837
;1836:
;1837:	return ANIMENT_ALIGNED_UNKNOWN;
CNSTI4 0
RETI4
LABELV $551
endproc ExampleAnimEntAlignment 8 4
export ExampleAnimEntAlertOthers
proc ExampleAnimEntAlertOthers 32 8
line 1841
;1838:}
;1839:
;1840:void ExampleAnimEntAlertOthers(gentity_t *self)
;1841:{
line 1843
;1842:	//alert all the other animents in the area
;1843:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $564
JUMPV
LABELV $563
line 1846
;1844:
;1845:	while (i < MAX_GENTITIES)
;1846:	{
line 1847
;1847:		if (g_entities[i].inuse &&
ADDRLP4 4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
EQI4 $566
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $566
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
LEI4 $566
line 1850
;1848:			g_entities[i].s.eType == ET_GRAPPLE &&
;1849:			g_entities[i].health > 0)
;1850:		{
line 1851
;1851:			if (g_entities[i].bolt_Motion == ENTITYNUM_NONE && trap_InPVS(self->r.currentOrigin, g_entities[i].r.currentOrigin) &&
ADDRLP4 12
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 12
INDIRI4
ADDRGP4 g_entities+808
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $571
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
ARGP4
ADDRLP4 12
INDIRI4
ADDRGP4 g_entities+296+72
ADDP4
ARGP4
ADDRLP4 16
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 16
INDIRI4
CNSTI4 0
EQI4 $571
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 24
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 20
INDIRI4
ADDRLP4 24
INDIRI4
NEI4 $571
line 1853
;1852:				ExampleAnimEntAlignment(self) == ExampleAnimEntAlignment(&g_entities[i]))
;1853:			{
line 1854
;1854:				g_entities[i].bolt_Motion = self->bolt_Motion;
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+808
ADDP4
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
line 1855
;1855:				g_entities[i].speed = level.time + 4000; //4 seconds til we forget about the enemy
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+608
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 4000
ADDI4
CVIF4 4
ASGNF4
line 1856
;1856:				g_entities[i].bolt_RArm = level.time + Q_irand(500, 1000);
CNSTI4 500
ARGI4
CNSTI4 1000
ARGI4
ADDRLP4 28
ADDRGP4 Q_irand
CALLI4
ASGNI4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+792
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 28
INDIRI4
ADDI4
ASGNI4
line 1857
;1857:			}
LABELV $571
line 1858
;1858:		}
LABELV $566
line 1860
;1859:
;1860:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 1861
;1861:	}
LABELV $564
line 1845
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $563
line 1862
;1862:}
LABELV $562
endproc ExampleAnimEntAlertOthers 32 8
export ExampleAnimEnt_Die
proc ExampleAnimEnt_Die 52 20
line 1865
;1863:
;1864:void ExampleAnimEnt_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int mod )
;1865:{
line 1866
;1866:	self->s.torsoAnim = G_PickDeathAnim(self, self->pos1, damage, mod, HL_NONE);
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
CNSTI4 548
ADDP4
ARGP4
ADDRFP4 12
INDIRI4
ARGI4
ADDRFP4 16
INDIRI4
ARGI4
CNSTI4 0
ARGI4
ADDRLP4 4
ADDRGP4 G_PickDeathAnim
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 284
ADDP4
ADDRLP4 4
INDIRI4
ASGNI4
line 1868
;1867:
;1868:	if (self->s.torsoAnim < 0 || self->s.torsoAnim >= MAX_TOTALANIMATIONS)
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
INDIRI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
LTI4 $584
ADDRLP4 8
INDIRI4
CNSTI4 1211
LTI4 $582
LABELV $584
line 1869
;1869:	{ //?! (bad)
line 1870
;1870:		self->s.torsoAnim = BOTH_DEATH1;
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
CNSTI4 1
ASGNI4
line 1871
;1871:	}
LABELV $582
line 1873
;1872:
;1873:	self->s.legsAnim = self->s.torsoAnim;
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 280
ADDP4
ADDRLP4 12
INDIRP4
CNSTI4 284
ADDP4
INDIRI4
ASGNI4
line 1874
;1874:	self->health = 1;
ADDRFP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 1
ASGNI4
line 1875
;1875:	self->s.eFlags |= EF_DEAD;
ADDRLP4 16
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
ASGNP4
ADDRLP4 16
INDIRP4
ADDRLP4 16
INDIRP4
INDIRI4
CNSTI4 1
BORI4
ASGNI4
line 1876
;1876:	self->takedamage = qfalse;
ADDRFP4 0
INDIRP4
CNSTI4 680
ADDP4
CNSTI4 0
ASGNI4
line 1877
;1877:	self->r.contents = 0;
ADDRFP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 0
ASGNI4
line 1879
;1878:
;1879:	if (self->watertype == ANIMENT_TYPE_STORMTROOPER)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 0
NEI4 $585
line 1880
;1880:	{
line 1881
;1881:		G_Sound(self, CHAN_AUTO, gTrooperSound_Death[Q_irand(0, TROOPER_DEATH_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gTrooperSound_Death
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1882
;1882:	}
ADDRGP4 $586
JUMPV
LABELV $585
line 1883
;1883:	else if (self->watertype == ANIMENT_TYPE_RODIAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $587
line 1884
;1884:	{
line 1885
;1885:		G_Sound(self, CHAN_AUTO, gRodianSound_Death[Q_irand(0, RODIAN_DEATH_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gRodianSound_Death
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1886
;1886:	}
ADDRGP4 $588
JUMPV
LABELV $587
line 1887
;1887:	else if (self->watertype == ANIMENT_TYPE_JAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 2
NEI4 $589
line 1888
;1888:	{
line 1889
;1889:		G_Sound(self, CHAN_AUTO, gJanSound_Death[Q_irand(0, JAN_DEATH_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 2
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gJanSound_Death
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1890
;1890:	}
ADDRGP4 $590
JUMPV
LABELV $589
line 1891
;1891:	else if (self->watertype == ANIMENT_TYPE_CUSTOM)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $591
line 1892
;1892:	{
line 1893
;1893:		ExampleAnimEntCustomSound(self, ANIMENT_CUSTOMSOUND_DEATH);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRGP4 ExampleAnimEntCustomSound
CALLV
pop
line 1894
;1894:	}
LABELV $591
LABELV $590
LABELV $588
LABELV $586
line 1896
;1895:
;1896:	if (mod == MOD_SABER)
ADDRFP4 16
INDIRI4
CNSTI4 3
NEI4 $593
line 1897
;1897:	{ //Set the velocity up a bit to make the limb fly up more than it otherwise would.
line 1899
;1898:		vec3_t preDelta;
;1899:		VectorCopy(self->s.pos.trDelta, preDelta);
ADDRLP4 20
ADDRFP4 0
INDIRP4
CNSTI4 36
ADDP4
INDIRB
ASGNB 12
line 1901
;1900:
;1901:		if (Q_irand(1, 10) < 5)
CNSTI4 1
ARGI4
CNSTI4 10
ARGI4
ADDRLP4 32
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 32
INDIRI4
CNSTI4 5
GEI4 $595
line 1902
;1902:		{
line 1903
;1903:			self->s.pos.trDelta[0] += Q_irand(10, 40);
CNSTI4 10
ARGI4
CNSTI4 40
ARGI4
ADDRLP4 36
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 36
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRF4
ADDRLP4 36
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 1904
;1904:		}
ADDRGP4 $596
JUMPV
LABELV $595
line 1906
;1905:		else
;1906:		{
line 1907
;1907:			self->s.pos.trDelta[0] -= Q_irand(10, 40);
CNSTI4 10
ARGI4
CNSTI4 40
ARGI4
ADDRLP4 36
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 36
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRF4
ADDRLP4 36
INDIRI4
CVIF4 4
SUBF4
ASGNF4
line 1908
;1908:		}
LABELV $596
line 1909
;1909:		if (Q_irand(1, 10) < 5)
CNSTI4 1
ARGI4
CNSTI4 10
ARGI4
ADDRLP4 36
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 36
INDIRI4
CNSTI4 5
GEI4 $597
line 1910
;1910:		{
line 1911
;1911:			self->s.pos.trDelta[1] += Q_irand(10, 40);
CNSTI4 10
ARGI4
ADDRLP4 40
CNSTI4 40
ASGNI4
ADDRLP4 40
INDIRI4
ARGI4
ADDRLP4 44
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 48
ADDRFP4 0
INDIRP4
ADDRLP4 40
INDIRI4
ADDP4
ASGNP4
ADDRLP4 48
INDIRP4
ADDRLP4 48
INDIRP4
INDIRF4
ADDRLP4 44
INDIRI4
CVIF4 4
ADDF4
ASGNF4
line 1912
;1912:		}
ADDRGP4 $598
JUMPV
LABELV $597
line 1914
;1913:		else
;1914:		{
line 1915
;1915:			self->s.pos.trDelta[1] -= Q_irand(10, 40);
CNSTI4 10
ARGI4
ADDRLP4 40
CNSTI4 40
ASGNI4
ADDRLP4 40
INDIRI4
ARGI4
ADDRLP4 44
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 48
ADDRFP4 0
INDIRP4
ADDRLP4 40
INDIRI4
ADDP4
ASGNP4
ADDRLP4 48
INDIRP4
ADDRLP4 48
INDIRP4
INDIRF4
ADDRLP4 44
INDIRI4
CVIF4 4
SUBF4
ASGNF4
line 1916
;1916:		}
LABELV $598
line 1917
;1917:		self->s.pos.trDelta[2] += 100;
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 44
ADDP4
ASGNP4
ADDRLP4 40
INDIRP4
ADDRLP4 40
INDIRP4
INDIRF4
CNSTF4 1120403456
ADDF4
ASGNF4
line 1918
;1918:		G_CheckForDismemberment(self, self->pos1, damage, self->s.torsoAnim);
ADDRLP4 44
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 44
INDIRP4
ARGP4
ADDRLP4 44
INDIRP4
CNSTI4 548
ADDP4
ARGP4
ADDRFP4 12
INDIRI4
ARGI4
ADDRLP4 44
INDIRP4
CNSTI4 284
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_CheckForDismemberment
CALLV
pop
line 1920
;1919:		
;1920:		VectorCopy(preDelta, self->s.pos.trDelta);
ADDRFP4 0
INDIRP4
CNSTI4 36
ADDP4
ADDRLP4 20
INDIRB
ASGNB 12
line 1921
;1921:	}
LABELV $593
line 1923
;1922:
;1923:	if (self->bolt_Motion == ENTITYNUM_NONE &&
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $599
ADDRLP4 20
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $601
ADDRLP4 20
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $599
LABELV $601
line 1925
;1924:		(attacker->client || attacker->s.eType == ET_GRAPPLE))
;1925:	{
line 1926
;1926:		self->bolt_Motion = attacker->s.number;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
ADDRFP4 8
INDIRP4
INDIRI4
ASGNI4
line 1927
;1927:	}
LABELV $599
line 1929
;1928:
;1929:	if (self->bolt_Motion != ENTITYNUM_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
CNSTI4 1023
EQI4 $602
line 1930
;1930:	{
line 1931
;1931:		ExampleAnimEntAlertOthers(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ExampleAnimEntAlertOthers
CALLV
pop
line 1932
;1932:	}
LABELV $602
line 1934
;1933:
;1934:	trap_LinkEntity(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 1936
;1935:
;1936:	self->bolt_Head = level.time + 5000;
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 5000
ADDI4
ASGNI4
line 1937
;1937:}
LABELV $581
endproc ExampleAnimEnt_Die 52 20
export ExampleAnimEnt_Pain
proc ExampleAnimEnt_Pain 36 12
line 1940
;1938:
;1939:void ExampleAnimEnt_Pain(gentity_t *self, gentity_t *attacker, int damage)
;1940:{
line 1941
;1941:	int painAnim = (BOTH_PAIN1 + Q_irand(0, 3));
CNSTI4 0
ARGI4
CNSTI4 3
ARGI4
ADDRLP4 8
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 8
INDIRI4
CNSTI4 97
ADDI4
ASGNI4
line 1942
;1942:	int animLen = (bgGlobalAnimations[painAnim].numFrames * fabs(bgGlobalAnimations[painAnim].frameLerp))-50;
ADDRLP4 12
CNSTI4 28
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 12
INDIRI4
ADDRGP4 bgGlobalAnimations+12
ADDP4
INDIRI4
CVIF4 4
ARGF4
ADDRLP4 16
ADDRGP4 fabs
CALLF4
ASGNF4
ADDRLP4 4
ADDRLP4 12
INDIRI4
ADDRGP4 bgGlobalAnimations+4
ADDP4
INDIRI4
CVIF4 4
ADDRLP4 16
INDIRF4
MULF4
CNSTF4 1112014848
SUBF4
CVFI4 4
ASGNI4
ADDRGP4 $609
JUMPV
LABELV $608
line 1945
;1943:
;1944:	while (painAnim == self->s.torsoAnim)
;1945:	{
line 1946
;1946:		painAnim = (BOTH_PAIN1 + Q_irand(0, 3));
CNSTI4 0
ARGI4
CNSTI4 3
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 20
INDIRI4
CNSTI4 97
ADDI4
ASGNI4
line 1947
;1947:	}
LABELV $609
line 1944
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
INDIRI4
EQI4 $608
line 1949
;1948:
;1949:	self->s.torsoAnim = painAnim;
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 1950
;1950:	self->s.legsAnim = painAnim;
ADDRFP4 0
INDIRP4
CNSTI4 280
ADDP4
ADDRLP4 0
INDIRI4
ASGNI4
line 1951
;1951:	self->bolt_LArm = level.time + animLen;
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 1953
;1952:
;1953:	if (self->watertype == ANIMENT_TYPE_STORMTROOPER)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 0
NEI4 $612
line 1954
;1954:	{
line 1955
;1955:		G_Sound(self, CHAN_AUTO, gTrooperSound_Pain[Q_irand(0, TROOPER_PAIN_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 3
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gTrooperSound_Pain
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1956
;1956:	}
ADDRGP4 $613
JUMPV
LABELV $612
line 1957
;1957:	else if (self->watertype == ANIMENT_TYPE_RODIAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $614
line 1958
;1958:	{
line 1959
;1959:		G_Sound(self, CHAN_AUTO, gRodianSound_Pain[Q_irand(0, RODIAN_PAIN_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 3
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gRodianSound_Pain
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1960
;1960:	}
ADDRGP4 $615
JUMPV
LABELV $614
line 1961
;1961:	else if (self->watertype == ANIMENT_TYPE_JAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 2
NEI4 $616
line 1962
;1962:	{
line 1963
;1963:		G_Sound(self, CHAN_AUTO, gJanSound_Pain[Q_irand(0, JAN_PAIN_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 3
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gJanSound_Pain
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 1964
;1964:	}
ADDRGP4 $617
JUMPV
LABELV $616
line 1965
;1965:	else if (self->watertype == ANIMENT_TYPE_CUSTOM)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $618
line 1966
;1966:	{
line 1967
;1967:		ExampleAnimEntCustomSound(self, ANIMENT_CUSTOMSOUND_PAIN);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRGP4 ExampleAnimEntCustomSound
CALLV
pop
line 1968
;1968:	}
LABELV $618
LABELV $617
LABELV $615
LABELV $613
line 1970
;1969:
;1970:	if (attacker && (attacker->client || attacker->s.eType == ET_GRAPPLE) && self->bolt_Motion == ENTITYNUM_NONE)
ADDRLP4 20
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 24
CNSTU4 0
ASGNU4
ADDRLP4 20
INDIRP4
CVPU4 4
ADDRLP4 24
INDIRU4
EQU4 $620
ADDRLP4 20
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 24
INDIRU4
NEU4 $622
ADDRLP4 20
INDIRP4
CNSTI4 4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $620
LABELV $622
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $620
line 1971
;1971:	{
line 1972
;1972:		if (attacker->s.number >= MAX_CLIENTS || (ExampleAnimEntAlignment(self) != ANIMENT_ALIGNED_GOOD && !(attacker->r.svFlags & SVF_BOT)))
ADDRFP4 4
INDIRP4
INDIRI4
CNSTI4 32
GEI4 $625
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 28
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 28
INDIRI4
CNSTI4 2
EQI4 $623
ADDRFP4 4
INDIRP4
CNSTI4 304
ADDP4
INDIRI4
CNSTI4 8
BANDI4
CNSTI4 0
NEI4 $623
LABELV $625
line 1973
;1973:		{
line 1974
;1974:			self->bolt_Motion = attacker->s.number;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
ADDRFP4 4
INDIRP4
INDIRI4
ASGNI4
line 1975
;1975:			self->speed = level.time + 4000; //4 seconds til we forget about the enemy
ADDRFP4 0
INDIRP4
CNSTI4 608
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 4000
ADDI4
CVIF4 4
ASGNF4
line 1976
;1976:			ExampleAnimEntAlertOthers(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ExampleAnimEntAlertOthers
CALLV
pop
line 1977
;1977:			self->bolt_RArm = level.time + Q_irand(500, 1000);
CNSTI4 500
ARGI4
CNSTI4 1000
ARGI4
ADDRLP4 32
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 792
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 32
INDIRI4
ADDI4
ASGNI4
line 1978
;1978:		}
LABELV $623
line 1979
;1979:	}
LABELV $620
line 1980
;1980:}
LABELV $605
endproc ExampleAnimEnt_Pain 36 12
export ExampleAnimEntTouch
proc ExampleAnimEntTouch 0 0
line 1983
;1981:
;1982:void ExampleAnimEntTouch(gentity_t *self, gentity_t *other, trace_t *trace)
;1983:{
line 1985
;1984:
;1985:}
LABELV $628
endproc ExampleAnimEntTouch 0 0
export ExampleAnimEntMove
proc ExampleAnimEntMove 1232 28
line 1990
;1986:
;1987://We can use this method of movement without horrible choppiness, because
;1988://we are smoothing out the lerpOrigin on the client when rendering this eType.
;1989:int ExampleAnimEntMove(gentity_t *self, vec3_t moveTo, float stepSize)
;1990:{
line 1995
;1991:	trace_t tr;
;1992:	vec3_t stepTo;
;1993:	vec3_t stepSub;
;1994:	vec3_t stepGoal;
;1995:	int didMove = 0;
ADDRLP4 1116
CNSTI4 0
ASGNI4
line 1997
;1996:
;1997:	if (self->s.groundEntityNum == ENTITYNUM_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 192
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $630
line 1998
;1998:	{
line 1999
;1999:		return 2;
CNSTI4 2
RETI4
ADDRGP4 $629
JUMPV
LABELV $630
line 2002
;2000:	}
;2001:
;2002:	VectorCopy(moveTo, stepTo);
ADDRLP4 1104
ADDRFP4 4
INDIRP4
INDIRB
ASGNB 12
line 2003
;2003:	stepTo[2] = self->r.currentOrigin[2];
ADDRLP4 1104+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
ASGNF4
line 2005
;2004:
;2005:	VectorSubtract(stepTo, self->r.currentOrigin, stepSub);
ADDRLP4 1120
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1080
ADDRLP4 1104
INDIRF4
ADDRLP4 1120
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1080+4
ADDRLP4 1104+4
INDIRF4
ADDRLP4 1120
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1080+8
ADDRLP4 1104+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2007
;2006:
;2007:	if (VectorLength(stepSub) < 32)
ADDRLP4 1080
ARGP4
ADDRLP4 1124
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1124
INDIRF4
CNSTF4 1107296256
GEF4 $637
line 2008
;2008:	{
line 2009
;2009:		return 2;
CNSTI4 2
RETI4
ADDRGP4 $629
JUMPV
LABELV $637
line 2012
;2010:	}
;2011:
;2012:	VectorNormalize(stepSub);
ADDRLP4 1080
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 2014
;2013:
;2014:	stepGoal[0] = self->r.currentOrigin[0] + stepSub[0]*stepSize;
ADDRLP4 1092
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 1080
INDIRF4
ADDRFP4 8
INDIRF4
MULF4
ADDF4
ASGNF4
line 2015
;2015:	stepGoal[1] = self->r.currentOrigin[1] + stepSub[1]*stepSize;
ADDRLP4 1092+4
ADDRFP4 0
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 1080+4
INDIRF4
ADDRFP4 8
INDIRF4
MULF4
ADDF4
ASGNF4
line 2016
;2016:	stepGoal[2] = self->r.currentOrigin[2] + stepSub[2]*stepSize;
ADDRLP4 1092+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
ADDRLP4 1080+8
INDIRF4
ADDRFP4 8
INDIRF4
MULF4
ADDF4
ASGNF4
line 2018
;2017:
;2018:	trap_Trace(&tr, self->r.currentOrigin, self->r.mins, self->r.maxs, stepGoal, self->s.number, self->clipmask);
ADDRLP4 0
ARGP4
ADDRLP4 1128
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1128
INDIRP4
CNSTI4 368
ADDP4
ARGP4
ADDRLP4 1128
INDIRP4
CNSTI4 316
ADDP4
ARGP4
ADDRLP4 1128
INDIRP4
CNSTI4 328
ADDP4
ARGP4
ADDRLP4 1092
ARGP4
ADDRLP4 1128
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1128
INDIRP4
CNSTI4 508
ADDP4
INDIRI4
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2020
;2019:
;2020:	if (!tr.startsolid && !tr.allsolid && tr.fraction)
ADDRLP4 1132
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1132
INDIRI4
NEI4 $643
ADDRLP4 0
INDIRI4
ADDRLP4 1132
INDIRI4
NEI4 $643
ADDRLP4 0+8
INDIRF4
CNSTF4 0
EQF4 $643
line 2021
;2021:	{
line 2023
;2022:		vec3_t vecSub;
;2023:		VectorSubtract(self->r.currentOrigin, tr.endpos, vecSub);
ADDRLP4 1148
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1136
ADDRLP4 1148
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 0+12
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1136+4
ADDRLP4 1148
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 0+12+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1136+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
ADDRLP4 0+12+8
INDIRF4
SUBF4
ASGNF4
line 2025
;2024:
;2025:		if (VectorLength(vecSub) > (stepSize/2))
ADDRLP4 1136
ARGP4
ADDRLP4 1152
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1152
INDIRF4
ADDRFP4 8
INDIRF4
CNSTF4 1073741824
DIVF4
LEF4 $654
line 2026
;2026:		{
line 2027
;2027:			self->r.currentOrigin[0] = tr.endpos[0];
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
ADDRLP4 0+12
INDIRF4
ASGNF4
line 2028
;2028:			self->r.currentOrigin[1] = tr.endpos[1];
ADDRFP4 0
INDIRP4
CNSTI4 372
ADDP4
ADDRLP4 0+12+4
INDIRF4
ASGNF4
line 2029
;2029:			self->s.pos.trBase[0] = tr.endpos[0];
ADDRFP4 0
INDIRP4
CNSTI4 24
ADDP4
ADDRLP4 0+12
INDIRF4
ASGNF4
line 2030
;2030:			self->s.pos.trBase[1] = tr.endpos[1];
ADDRFP4 0
INDIRP4
CNSTI4 28
ADDP4
ADDRLP4 0+12+4
INDIRF4
ASGNF4
line 2031
;2031:			self->s.origin[0] = tr.endpos[0];
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ADDRLP4 0+12
INDIRF4
ASGNF4
line 2032
;2032:			self->s.origin[1] = tr.endpos[1];
ADDRFP4 0
INDIRP4
CNSTI4 96
ADDP4
ADDRLP4 0+12+4
INDIRF4
ASGNF4
line 2033
;2033:			trap_LinkEntity(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 2034
;2034:			didMove = 1;
ADDRLP4 1116
CNSTI4 1
ASGNI4
line 2035
;2035:		}
LABELV $654
line 2036
;2036:	}
LABELV $643
line 2038
;2037:	
;2038:	if (didMove != 1)
ADDRLP4 1116
INDIRI4
CNSTI4 1
EQI4 $665
line 2039
;2039:	{ //stair check
line 2045
;2040:		vec3_t trFrom;
;2041:		vec3_t trTo;
;2042:		vec3_t trDir;
;2043:		vec3_t vecMeasure;
;2044:
;2045:		VectorCopy(tr.endpos, trFrom);
ADDRLP4 1160
ADDRLP4 0+12
INDIRB
ASGNB 12
line 2046
;2046:		trFrom[2] += 16;
ADDRLP4 1160+8
ADDRLP4 1160+8
INDIRF4
CNSTF4 1098907648
ADDF4
ASGNF4
line 2048
;2047:
;2048:		VectorSubtract(/*tr.endpos*/stepGoal, self->r.currentOrigin, trDir);
ADDRLP4 1184
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1148
ADDRLP4 1092
INDIRF4
ADDRLP4 1184
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1148+4
ADDRLP4 1092+4
INDIRF4
ADDRLP4 1184
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1148+8
ADDRLP4 1092+8
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2049
;2049:		VectorNormalize(trDir);
ADDRLP4 1148
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 2050
;2050:		trTo[0] = tr.endpos[0] + trDir[0]*2;
ADDRLP4 1136
ADDRLP4 0+12
INDIRF4
CNSTF4 1073741824
ADDRLP4 1148
INDIRF4
MULF4
ADDF4
ASGNF4
line 2051
;2051:		trTo[1] = tr.endpos[1] + trDir[1]*2;
ADDRLP4 1136+4
ADDRLP4 0+12+4
INDIRF4
CNSTF4 1073741824
ADDRLP4 1148+4
INDIRF4
MULF4
ADDF4
ASGNF4
line 2052
;2052:		trTo[2] = tr.endpos[2] + trDir[2]*2;
ADDRLP4 1136+8
ADDRLP4 0+12+8
INDIRF4
CNSTF4 1073741824
ADDRLP4 1148+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 2053
;2053:		trTo[2] += 16;
ADDRLP4 1136+8
ADDRLP4 1136+8
INDIRF4
CNSTF4 1098907648
ADDF4
ASGNF4
line 2055
;2054:
;2055:		VectorSubtract(trFrom, trTo, vecMeasure);
ADDRLP4 1172
ADDRLP4 1160
INDIRF4
ADDRLP4 1136
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1172+4
ADDRLP4 1160+4
INDIRF4
ADDRLP4 1136+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 1172+8
ADDRLP4 1160+8
INDIRF4
ADDRLP4 1136+8
INDIRF4
SUBF4
ASGNF4
line 2057
;2056:
;2057:		if (VectorLength(vecMeasure) > 1)
ADDRLP4 1172
ARGP4
ADDRLP4 1188
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 1188
INDIRF4
CNSTF4 1065353216
LEF4 $689
line 2058
;2058:		{
line 2059
;2059:			trap_Trace(&tr, trFrom, self->r.mins, self->r.maxs, trTo, self->s.number, self->clipmask);
ADDRLP4 0
ARGP4
ADDRLP4 1160
ARGP4
ADDRLP4 1192
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1192
INDIRP4
CNSTI4 316
ADDP4
ARGP4
ADDRLP4 1192
INDIRP4
CNSTI4 328
ADDP4
ARGP4
ADDRLP4 1136
ARGP4
ADDRLP4 1192
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1192
INDIRP4
CNSTI4 508
ADDP4
INDIRI4
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2061
;2060:
;2061:			if (!tr.startsolid && !tr.allsolid && tr.fraction == 1)
ADDRLP4 1196
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1196
INDIRI4
NEI4 $691
ADDRLP4 0
INDIRI4
ADDRLP4 1196
INDIRI4
NEI4 $691
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
NEF4 $691
line 2062
;2062:			{ //clear trace here, probably up a step
line 2065
;2063:				vec3_t trDown;
;2064:				vec3_t trUp;
;2065:				VectorCopy(tr.endpos, trUp);
ADDRLP4 1212
ADDRLP4 0+12
INDIRB
ASGNB 12
line 2066
;2066:				VectorCopy(tr.endpos, trDown);
ADDRLP4 1200
ADDRLP4 0+12
INDIRB
ASGNB 12
line 2067
;2067:				trDown[2] -= 16;
ADDRLP4 1200+8
ADDRLP4 1200+8
INDIRF4
CNSTF4 1098907648
SUBF4
ASGNF4
line 2069
;2068:
;2069:				trap_Trace(&tr, trFrom, self->r.mins, self->r.maxs, trTo, self->s.number, self->clipmask);
ADDRLP4 0
ARGP4
ADDRLP4 1160
ARGP4
ADDRLP4 1224
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1224
INDIRP4
CNSTI4 316
ADDP4
ARGP4
ADDRLP4 1224
INDIRP4
CNSTI4 328
ADDP4
ARGP4
ADDRLP4 1136
ARGP4
ADDRLP4 1224
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1224
INDIRP4
CNSTI4 508
ADDP4
INDIRI4
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2071
;2070:
;2071:				if (!tr.startsolid && !tr.allsolid)
ADDRLP4 1228
CNSTI4 0
ASGNI4
ADDRLP4 0+4
INDIRI4
ADDRLP4 1228
INDIRI4
NEI4 $698
ADDRLP4 0
INDIRI4
ADDRLP4 1228
INDIRI4
NEI4 $698
line 2072
;2072:				{ //plop us down on the step after moving up
line 2073
;2073:					VectorCopy(tr.endpos, self->r.currentOrigin);
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
ADDRLP4 0+12
INDIRB
ASGNB 12
line 2074
;2074:					VectorCopy(tr.endpos, self->s.pos.trBase);
ADDRFP4 0
INDIRP4
CNSTI4 24
ADDP4
ADDRLP4 0+12
INDIRB
ASGNB 12
line 2075
;2075:					VectorCopy(tr.endpos, self->s.origin);
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ADDRLP4 0+12
INDIRB
ASGNB 12
line 2076
;2076:					trap_LinkEntity(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 2077
;2077:					didMove = 1;
ADDRLP4 1116
CNSTI4 1
ASGNI4
line 2078
;2078:				}
LABELV $698
line 2079
;2079:			}
LABELV $691
line 2080
;2080:		}
LABELV $689
line 2081
;2081:	}
LABELV $665
line 2083
;2082:
;2083:	return didMove;
ADDRLP4 1116
INDIRI4
RETI4
LABELV $629
endproc ExampleAnimEntMove 1232 28
export ExampleAnimEntYaw
proc ExampleAnimEntYaw 28 8
line 2087
;2084:}
;2085:
;2086:float ExampleAnimEntYaw(gentity_t *self, float idealYaw, float yawSpeed)
;2087:{
line 2088
;2088:	float curYaw = 0;
ADDRLP4 0
CNSTF4 0
ASGNF4
line 2089
;2089:	float diffYaw = 0;
ADDRLP4 4
CNSTF4 0
ASGNF4
line 2091
;2090:
;2091:	curYaw = AngleNormalize360(self->s.apos.trBase[YAW]);
ADDRFP4 0
INDIRP4
CNSTI4 64
ADDP4
INDIRF4
ARGF4
ADDRLP4 8
ADDRGP4 AngleNormalize360
CALLF4
ASGNF4
ADDRLP4 0
ADDRLP4 8
INDIRF4
ASGNF4
line 2093
;2092:
;2093:	diffYaw = AngleSubtract( curYaw, idealYaw );
ADDRLP4 0
INDIRF4
ARGF4
ADDRFP4 4
INDIRF4
ARGF4
ADDRLP4 12
ADDRGP4 AngleSubtract
CALLF4
ASGNF4
ADDRLP4 4
ADDRLP4 12
INDIRF4
ASGNF4
line 2095
;2094:
;2095:	if ( fabs(diffYaw) > 0.25f )
ADDRLP4 4
INDIRF4
ARGF4
ADDRLP4 16
ADDRGP4 fabs
CALLF4
ASGNF4
ADDRLP4 16
INDIRF4
CNSTF4 1048576000
LEF4 $705
line 2096
;2096:	{
line 2097
;2097:		if ( fabs(diffYaw) > yawSpeed )
ADDRLP4 4
INDIRF4
ARGF4
ADDRLP4 20
ADDRGP4 fabs
CALLF4
ASGNF4
ADDRLP4 20
INDIRF4
ADDRFP4 8
INDIRF4
LEF4 $707
line 2098
;2098:		{
line 2100
;2099:			// cap max speed
;2100:			curYaw += (diffYaw > 0.0f) ? -yawSpeed : yawSpeed;
ADDRLP4 4
INDIRF4
CNSTF4 0
LEF4 $710
ADDRLP4 24
ADDRFP4 8
INDIRF4
NEGF4
ASGNF4
ADDRGP4 $711
JUMPV
LABELV $710
ADDRLP4 24
ADDRFP4 8
INDIRF4
ASGNF4
LABELV $711
ADDRLP4 0
ADDRLP4 0
INDIRF4
ADDRLP4 24
INDIRF4
ADDF4
ASGNF4
line 2101
;2101:		}
ADDRGP4 $708
JUMPV
LABELV $707
line 2103
;2102:		else
;2103:		{
line 2105
;2104:			// small enough
;2105:			curYaw -= diffYaw;
ADDRLP4 0
ADDRLP4 0
INDIRF4
ADDRLP4 4
INDIRF4
SUBF4
ASGNF4
line 2106
;2106:		}
LABELV $708
line 2107
;2107:	}
LABELV $705
line 2109
;2108:
;2109:	return curYaw;
ADDRLP4 0
INDIRF4
RETF4
LABELV $704
endproc ExampleAnimEntYaw 28 8
export ExampleAnimEntLook
proc ExampleAnimEntLook 28 12
line 2113
;2110:}
;2111:
;2112:void ExampleAnimEntLook(gentity_t *self, vec3_t lookTo)
;2113:{
line 2116
;2114:	vec3_t lookSub;
;2115:
;2116:	VectorSubtract(lookTo, self->r.currentOrigin, lookSub);
ADDRLP4 12
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 16
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
ADDRLP4 12
INDIRP4
INDIRF4
ADDRLP4 16
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 0+4
ADDRLP4 12
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
ADDRLP4 16
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 0+8
ADDRFP4 4
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2117
;2117:	VectorNormalize(lookSub);
ADDRLP4 0
ARGP4
ADDRGP4 VectorNormalize
CALLF4
pop
line 2118
;2118:	vectoangles(lookSub, lookSub);
ADDRLP4 0
ARGP4
ADDRLP4 0
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 2120
;2119:
;2120:	if (lookSub[PITCH] < -180)
ADDRLP4 0
INDIRF4
CNSTF4 3274964992
GEF4 $715
line 2121
;2121:	{
line 2122
;2122:		lookSub[PITCH] -= 90;
ADDRLP4 0
ADDRLP4 0
INDIRF4
CNSTF4 1119092736
SUBF4
ASGNF4
line 2123
;2123:	}
LABELV $715
line 2126
;2124:
;2125:	//VectorCopy(lookSub, self->s.apos.trBase);
;2126:	self->s.apos.trBase[PITCH] = lookSub[PITCH];
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
ADDRLP4 0
INDIRF4
ASGNF4
line 2127
;2127:	self->s.apos.trBase[ROLL] = 0;
ADDRFP4 0
INDIRP4
CNSTI4 68
ADDP4
CNSTF4 0
ASGNF4
line 2128
;2128:	self->s.apos.trBase[YAW] = ExampleAnimEntYaw(self, lookSub[YAW], 20);
ADDRLP4 20
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 20
INDIRP4
ARGP4
ADDRLP4 0+4
INDIRF4
ARGF4
CNSTF4 1101004800
ARGF4
ADDRLP4 24
ADDRGP4 ExampleAnimEntYaw
CALLF4
ASGNF4
ADDRLP4 20
INDIRP4
CNSTI4 64
ADDP4
ADDRLP4 24
INDIRF4
ASGNF4
line 2129
;2129:}
LABELV $712
endproc ExampleAnimEntLook 28 12
export ExampleAnimEntClearLOS
proc ExampleAnimEntClearLOS 1112 28
line 2132
;2130:
;2131:qboolean ExampleAnimEntClearLOS(gentity_t *self, vec3_t point)
;2132:{
line 2135
;2133:	trace_t tr;
;2134:
;2135:	trap_Trace(&tr, self->r.currentOrigin, 0, 0, point, self->s.number, self->clipmask);
ADDRLP4 0
ARGP4
ADDRLP4 1080
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1080
INDIRP4
CNSTI4 368
ADDP4
ARGP4
ADDRLP4 1084
CNSTP4 0
ASGNP4
ADDRLP4 1084
INDIRP4
ARGP4
ADDRLP4 1084
INDIRP4
ARGP4
ADDRFP4 4
INDIRP4
ARGP4
ADDRLP4 1080
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1080
INDIRP4
CNSTI4 508
ADDP4
INDIRI4
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2137
;2136:
;2137:	if (ExampleAnimEntAlignment(self) == ANIMENT_ALIGNED_GOOD)
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1088
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 1088
INDIRI4
CNSTI4 2
NEI4 $719
line 2138
;2138:	{
line 2139
;2139:		if (tr.fraction == 1 ||
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
EQF4 $729
ADDRLP4 1092
CNSTI4 828
ASGNI4
ADDRLP4 1092
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $730
ADDRLP4 1092
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 1096
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 1096
INDIRI4
CNSTI4 2
NEI4 $729
LABELV $730
ADDRLP4 1100
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1100
INDIRI4
CNSTI4 32
GEI4 $721
ADDRLP4 0+52
INDIRI4
ADDRLP4 1100
INDIRI4
NEI4 $721
LABELV $729
line 2142
;2140:			(g_entities[tr.entityNum].s.eType == ET_GRAPPLE && ExampleAnimEntAlignment(&g_entities[tr.entityNum]) != ANIMENT_ALIGNED_GOOD) ||
;2141:			(self->bolt_Motion < MAX_CLIENTS && tr.entityNum == self->bolt_Motion))
;2142:		{ //clear LOS, or would be hitting a bad animent, so fire.
line 2143
;2143:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $718
JUMPV
LABELV $721
line 2145
;2144:		}
;2145:		else if (g_entities[tr.entityNum].inuse && g_entities[tr.entityNum].client && (g_entities[tr.entityNum].r.svFlags & SVF_BOT))
ADDRLP4 1104
CNSTI4 828
ASGNI4
ADDRLP4 1108
CNSTI4 0
ASGNI4
ADDRLP4 1104
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 1108
INDIRI4
EQI4 $720
ADDRLP4 1104
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $720
ADDRLP4 1104
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+296+8
ADDP4
INDIRI4
CNSTI4 8
BANDI4
ADDRLP4 1108
INDIRI4
EQI4 $720
line 2146
;2146:		{
line 2147
;2147:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $718
JUMPV
line 2149
;2148:		}
;2149:	}
LABELV $719
line 2151
;2150:	else
;2151:	{
line 2152
;2152:		if (tr.fraction == 1 ||
ADDRLP4 0+8
INDIRF4
CNSTF4 1065353216
EQF4 $748
ADDRLP4 0+52
INDIRI4
CNSTI4 32
LTI4 $748
ADDRLP4 1092
CNSTI4 828
ASGNI4
ADDRLP4 1092
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $740
ADDRLP4 1092
INDIRI4
ADDRLP4 0+52
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 1096
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 1096
INDIRI4
CNSTI4 1
EQI4 $740
LABELV $748
line 2155
;2153:			tr.entityNum < MAX_CLIENTS ||
;2154:			(g_entities[tr.entityNum].s.eType == ET_GRAPPLE && ExampleAnimEntAlignment(&g_entities[tr.entityNum]) != ANIMENT_ALIGNED_BAD))
;2155:		{ //clear LOS, or would be hitting a client (they're all bad!), so fire.
line 2156
;2156:			return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $718
JUMPV
LABELV $740
line 2158
;2157:		}
;2158:	}
LABELV $720
line 2160
;2159:
;2160:	return qfalse;
CNSTI4 0
RETI4
LABELV $718
endproc ExampleAnimEntClearLOS 1112 28
export ExampleAnimEntWeaponHandling
proc ExampleAnimEntWeaponHandling 8 12
line 2164
;2161:}
;2162:
;2163:void ExampleAnimEntWeaponHandling(gentity_t *self)
;2164:{
line 2165
;2165:	if (self->bolt_RArm > level.time)
ADDRFP4 0
INDIRP4
CNSTI4 792
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $750
line 2166
;2166:	{
line 2167
;2167:		return;
ADDRGP4 $749
JUMPV
LABELV $750
line 2170
;2168:	}
;2169:
;2170:	if (self->boltpoint4)
ADDRFP4 0
INDIRP4
CNSTI4 780
ADDP4
INDIRI4
CNSTI4 0
EQI4 $753
line 2171
;2171:	{
line 2172
;2172:		if (self->s.weapon == WP_DISRUPTOR)
ADDRFP4 0
INDIRP4
CNSTI4 276
ADDP4
INDIRI4
CNSTI4 5
NEI4 $755
line 2173
;2173:		{
line 2174
;2174:			AnimEntFireWeapon(self, qtrue);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 1
ARGI4
ADDRGP4 AnimEntFireWeapon
CALLV
pop
line 2175
;2175:			G_AddEvent(self, EV_FIRE_WEAPON, 1);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 24
ARGI4
CNSTI4 1
ARGI4
ADDRGP4 G_AddEvent
CALLV
pop
line 2176
;2176:			self->bolt_RArm = level.time + Q_irand(1500, 2500);
CNSTI4 1500
ARGI4
CNSTI4 2500
ARGI4
ADDRLP4 0
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 792
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 0
INDIRI4
ADDI4
ASGNI4
line 2177
;2177:		}
ADDRGP4 $756
JUMPV
LABELV $755
line 2179
;2178:		else
;2179:		{
line 2180
;2180:			AnimEntFireWeapon(self, qfalse);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRGP4 AnimEntFireWeapon
CALLV
pop
line 2181
;2181:			G_AddEvent(self, EV_FIRE_WEAPON, 0);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 24
ARGI4
CNSTI4 0
ARGI4
ADDRGP4 G_AddEvent
CALLV
pop
line 2183
;2182:
;2183:			if (self->s.weapon == WP_REPEATER)
ADDRFP4 0
INDIRP4
CNSTI4 276
ADDP4
INDIRI4
CNSTI4 7
NEI4 $758
line 2184
;2184:			{
line 2185
;2185:				self->bolt_RArm = level.time + Q_irand(1, 500);
CNSTI4 1
ARGI4
CNSTI4 500
ARGI4
ADDRLP4 0
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 792
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 0
INDIRI4
ADDI4
ASGNI4
line 2186
;2186:			}
ADDRGP4 $759
JUMPV
LABELV $758
line 2187
;2187:			else if (ExampleAnimEntAlignment(self) == ANIMENT_ALIGNED_GOOD)
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 0
INDIRI4
CNSTI4 2
NEI4 $761
line 2188
;2188:			{
line 2189
;2189:				self->bolt_RArm = level.time + Q_irand(200, 400);
CNSTI4 200
ARGI4
CNSTI4 400
ARGI4
ADDRLP4 4
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 792
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 2190
;2190:			}
ADDRGP4 $762
JUMPV
LABELV $761
line 2192
;2191:			else
;2192:			{
line 2193
;2193:				self->bolt_RArm = level.time + Q_irand(700, 1000);
CNSTI4 700
ARGI4
CNSTI4 1000
ARGI4
ADDRLP4 4
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 792
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 4
INDIRI4
ADDI4
ASGNI4
line 2194
;2194:			}
LABELV $762
LABELV $759
line 2195
;2195:		}
LABELV $756
line 2196
;2196:	}
LABELV $753
line 2197
;2197:}
LABELV $749
endproc ExampleAnimEntWeaponHandling 8 12
export ExampleAnimEntWayValidCheck
proc ExampleAnimEntWayValidCheck 1096 28
line 2200
;2198:
;2199:qboolean ExampleAnimEntWayValidCheck(gentity_t *self)
;2200:{
line 2204
;2201:	wpobject_t *currentWP;
;2202:	trace_t tr;
;2203:
;2204:	if (self->bolt_Waist < 0 ||
ADDRLP4 1084
ADDRFP4 0
INDIRP4
CNSTI4 804
ADDP4
INDIRI4
ASGNI4
ADDRLP4 1084
INDIRI4
CNSTI4 0
LTI4 $768
ADDRLP4 1084
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $766
LABELV $768
line 2206
;2205:		self->bolt_Waist >= gWPNum)
;2206:	{
line 2207
;2207:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $765
JUMPV
LABELV $766
line 2210
;2208:	}
;2209:
;2210:	if (self->boltpoint1 < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 768
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $769
line 2211
;2211:	{
line 2212
;2212:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $765
JUMPV
LABELV $769
line 2215
;2213:	}
;2214:
;2215:	if (self->boltpoint2 < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 772
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $772
line 2216
;2216:	{
line 2217
;2217:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $765
JUMPV
LABELV $772
line 2220
;2218:	}
;2219:
;2220:	currentWP = gWPArray[self->bolt_Waist];
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 804
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 2222
;2221:
;2222:	if (!currentWP)
ADDRLP4 0
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $775
line 2223
;2223:	{
line 2224
;2224:		return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $765
JUMPV
LABELV $775
line 2227
;2225:	}
;2226:
;2227:	trap_Trace(&tr, self->r.currentOrigin, 0, 0, currentWP->origin, self->s.number, self->clipmask);
ADDRLP4 4
ARGP4
ADDRLP4 1088
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1088
INDIRP4
CNSTI4 368
ADDP4
ARGP4
ADDRLP4 1092
CNSTP4 0
ASGNP4
ADDRLP4 1092
INDIRP4
ARGP4
ADDRLP4 1092
INDIRP4
ARGP4
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 1088
INDIRP4
INDIRI4
ARGI4
ADDRLP4 1088
INDIRP4
CNSTI4 508
ADDP4
INDIRI4
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 2229
;2228:
;2229:	if (tr.fraction == 1)
ADDRLP4 4+8
INDIRF4
CNSTF4 1065353216
NEF4 $777
line 2230
;2230:	{ //allow one second for time you cannot see the point. If we go beyond that, kill the connection.
line 2231
;2231:		self->boltpoint2 = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 772
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 2232
;2232:	}
LABELV $777
line 2234
;2233:
;2234:	return qtrue;
CNSTI4 1
RETI4
LABELV $765
endproc ExampleAnimEntWayValidCheck 1096 28
export ExampleAnimEntNavigation
proc ExampleAnimEntNavigation 48 8
line 2240
;2235:}
;2236:
;2237://Simple nav routine utilizing bot path data
;2238://bolt_Waist represents our current indexed waypoint
;2239:void ExampleAnimEntNavigation(gentity_t *self, vec3_t goalPos)
;2240:{
line 2241
;2241:	if (self->bolt_Waist == -1 ||
ADDRLP4 0
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 0
INDIRP4
CNSTI4 804
ADDP4
INDIRI4
CNSTI4 -1
EQI4 $784
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 4
ADDRGP4 ExampleAnimEntWayValidCheck
CALLI4
ASGNI4
ADDRLP4 4
INDIRI4
CNSTI4 0
NEI4 $782
LABELV $784
line 2243
;2242:		!ExampleAnimEntWayValidCheck(self))
;2243:	{
line 2244
;2244:		int wpIndex = GetNearestVisibleWP(self->r.currentOrigin, self->s.number);
ADDRLP4 12
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
CNSTI4 368
ADDP4
ARGP4
ADDRLP4 12
INDIRP4
INDIRI4
ARGI4
ADDRLP4 16
ADDRGP4 GetNearestVisibleWP
CALLI4
ASGNI4
ADDRLP4 8
ADDRLP4 16
INDIRI4
ASGNI4
line 2246
;2245:
;2246:		if (wpIndex >= 0 && wpIndex < gWPNum)
ADDRLP4 20
ADDRLP4 8
INDIRI4
ASGNI4
ADDRLP4 20
INDIRI4
CNSTI4 0
LTI4 $785
ADDRLP4 20
INDIRI4
ADDRGP4 gWPNum
INDIRI4
GEI4 $785
line 2247
;2247:		{
line 2248
;2248:			self->bolt_Waist = wpIndex;
ADDRFP4 0
INDIRP4
CNSTI4 804
ADDP4
ADDRLP4 8
INDIRI4
ASGNI4
line 2249
;2249:			self->boltpoint1 = level.time + 10000; //10 seconds to get to the point
ADDRFP4 0
INDIRP4
CNSTI4 768
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 10000
ADDI4
ASGNI4
line 2250
;2250:			self->boltpoint2 = level.time + 1000; //initialize the 1 second allowed visibility
ADDRFP4 0
INDIRP4
CNSTI4 772
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 2251
;2251:		}
ADDRGP4 $786
JUMPV
LABELV $785
line 2253
;2252:		else
;2253:		{
line 2254
;2254:			self->bolt_Waist = -1;
ADDRFP4 0
INDIRP4
CNSTI4 804
ADDP4
CNSTI4 -1
ASGNI4
line 2255
;2255:		}
LABELV $786
line 2256
;2256:	}
LABELV $782
line 2258
;2257:
;2258:	if (self->bolt_Waist != -1)
ADDRFP4 0
INDIRP4
CNSTI4 804
ADDP4
INDIRI4
CNSTI4 -1
EQI4 $789
line 2259
;2259:	{ //we have a point to go to
line 2260
;2260:		wpobject_t *currentWP = gWPArray[self->bolt_Waist];
ADDRLP4 8
ADDRFP4 0
INDIRP4
CNSTI4 804
ADDP4
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 2262
;2261:
;2262:		if (currentWP)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $790
line 2263
;2263:		{
line 2265
;2264:			vec3_t subLen;
;2265:			float vecLen = 0;
ADDRLP4 12
CNSTF4 0
ASGNF4
line 2267
;2266:
;2267:			VectorCopy(currentWP->origin, goalPos);
ADDRFP4 4
INDIRP4
ADDRLP4 8
INDIRP4
INDIRB
ASGNB 12
line 2268
;2268:			VectorSubtract(self->r.currentOrigin, currentWP->origin, subLen);
ADDRLP4 28
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 32
ADDRLP4 8
INDIRP4
ASGNP4
ADDRLP4 16
ADDRLP4 28
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 32
INDIRP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 16+4
ADDRLP4 28
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 32
INDIRP4
CNSTI4 4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 16+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
ADDRLP4 8
INDIRP4
CNSTI4 8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2269
;2269:			vecLen = VectorLength(subLen);
ADDRLP4 16
ARGP4
ADDRLP4 36
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 12
ADDRLP4 36
INDIRF4
ASGNF4
line 2271
;2270:
;2271:			if (vecLen <= 40)
ADDRLP4 12
INDIRF4
CNSTF4 1109393408
GTF4 $790
line 2272
;2272:			{
line 2273
;2273:				int desiredIndex = -20;
ADDRLP4 40
CNSTI4 -20
ASGNI4
line 2275
;2274:
;2275:				if (!self->boltpoint3)
ADDRFP4 0
INDIRP4
CNSTI4 776
ADDP4
INDIRI4
CNSTI4 0
NEI4 $797
line 2276
;2276:				{
line 2277
;2277:					desiredIndex = currentWP->index+1;
ADDRLP4 40
ADDRLP4 8
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2278
;2278:				}
ADDRGP4 $798
JUMPV
LABELV $797
line 2280
;2279:				else
;2280:				{
line 2281
;2281:					desiredIndex = currentWP->index-1;
ADDRLP4 40
ADDRLP4 8
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 2282
;2282:				}
LABELV $798
line 2284
;2283:
;2284:				if (desiredIndex != -20)
ADDRLP4 40
INDIRI4
CNSTI4 -20
EQI4 $799
line 2285
;2285:				{
line 2286
;2286:					if (desiredIndex < 0)
ADDRLP4 40
INDIRI4
CNSTI4 0
GEI4 $801
line 2287
;2287:					{
line 2288
;2288:						self->boltpoint3 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 776
ADDP4
CNSTI4 0
ASGNI4
line 2289
;2289:						desiredIndex = currentWP->index+1;
ADDRLP4 40
ADDRLP4 8
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2290
;2290:					}
LABELV $801
line 2291
;2291:					if (desiredIndex >= gWPNum)
ADDRLP4 40
INDIRI4
ADDRGP4 gWPNum
INDIRI4
LTI4 $803
line 2292
;2292:					{
line 2293
;2293:						self->boltpoint3 = 1;
ADDRFP4 0
INDIRP4
CNSTI4 776
ADDP4
CNSTI4 1
ASGNI4
line 2294
;2294:						desiredIndex = currentWP->index-1;
ADDRLP4 40
ADDRLP4 8
INDIRP4
CNSTI4 16
ADDP4
INDIRI4
CNSTI4 1
SUBI4
ASGNI4
line 2295
;2295:					}
LABELV $803
line 2296
;2296:				}
LABELV $799
line 2298
;2297:
;2298:				if (desiredIndex != -1 && desiredIndex >= 0 && desiredIndex < gWPNum)
ADDRLP4 44
ADDRLP4 40
INDIRI4
ASGNI4
ADDRLP4 44
INDIRI4
CNSTI4 -1
EQI4 $790
ADDRLP4 44
INDIRI4
CNSTI4 0
LTI4 $790
ADDRLP4 44
INDIRI4
ADDRGP4 gWPNum
INDIRI4
GEI4 $790
line 2299
;2299:				{
line 2300
;2300:					currentWP = gWPArray[desiredIndex];
ADDRLP4 8
ADDRLP4 40
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gWPArray
ADDP4
INDIRP4
ASGNP4
line 2302
;2301:
;2302:					if (currentWP)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $790
line 2303
;2303:					{
line 2304
;2304:						self->bolt_Waist = desiredIndex;
ADDRFP4 0
INDIRP4
CNSTI4 804
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 2305
;2305:						self->boltpoint1 = level.time + 10000; //every time we grab a new point, set the allowed travel-to time again
ADDRFP4 0
INDIRP4
CNSTI4 768
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 10000
ADDI4
ASGNI4
line 2306
;2306:						VectorCopy(currentWP->origin, goalPos);
ADDRFP4 4
INDIRP4
ADDRLP4 8
INDIRP4
INDIRB
ASGNB 12
line 2307
;2307:					}
line 2308
;2308:				}
line 2309
;2309:			}
line 2310
;2310:		}
line 2311
;2311:	}
ADDRGP4 $790
JUMPV
LABELV $789
line 2313
;2312:	else
;2313:	{ //We have no place to go. Run toward the origin mindlessly.
line 2314
;2314:		VectorClear(goalPos);
ADDRLP4 8
ADDRFP4 4
INDIRP4
ASGNP4
ADDRLP4 12
CNSTF4 0
ASGNF4
ADDRLP4 8
INDIRP4
CNSTI4 8
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
ADDRLP4 8
INDIRP4
CNSTI4 4
ADDP4
ADDRLP4 12
INDIRF4
ASGNF4
ADDRLP4 8
INDIRP4
ADDRLP4 12
INDIRF4
ASGNF4
line 2315
;2315:	}
LABELV $790
line 2316
;2316:}
LABELV $781
endproc ExampleAnimEntNavigation 48 8
export ExampleAnimEntEnemyHandling
proc ExampleAnimEntEnemyHandling 92 12
line 2319
;2317:
;2318:void ExampleAnimEntEnemyHandling(gentity_t *self, float enDist)
;2319:{
line 2320
;2320:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 2321
;2321:	int bestIndex = -1;
ADDRLP4 8
CNSTI4 -1
ASGNI4
line 2322
;2322:	float minDist = enDist;
ADDRLP4 4
ADDRFP4 4
INDIRF4
ASGNF4
line 2324
;2323:
;2324:	if (ExampleAnimEntAlignment(self) == ANIMENT_ALIGNED_GOOD)
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 12
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 2
NEI4 $855
line 2325
;2325:	{
ADDRGP4 $814
JUMPV
LABELV $813
line 2327
;2326:		while (i < MAX_GENTITIES)
;2327:		{
line 2328
;2328:			if (g_entities[i].inuse && (g_entities[i].s.eType == ET_GRAPPLE || (g_entities[i].client && (g_entities[i].r.svFlags & SVF_BOT))) && ExampleAnimEntAlignment(&g_entities[i]) != ANIMENT_ALIGNED_GOOD && g_entities[i].health > 0 && !(g_entities[i].s.eFlags & EF_DEAD))
ADDRLP4 16
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
EQI4 $816
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
EQI4 $825
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $816
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+296+8
ADDP4
INDIRI4
CNSTI4 8
BANDI4
ADDRLP4 20
INDIRI4
EQI4 $816
LABELV $825
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 24
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 24
INDIRI4
CNSTI4 2
EQI4 $816
ADDRLP4 28
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 32
CNSTI4 0
ASGNI4
ADDRLP4 28
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 32
INDIRI4
LEI4 $816
ADDRLP4 28
INDIRI4
ADDRGP4 g_entities+8
ADDP4
INDIRI4
CNSTI4 1
BANDI4
ADDRLP4 32
INDIRI4
NEI4 $816
line 2329
;2329:			{
line 2333
;2330:				vec3_t checkLen;
;2331:				float fCheckLen;
;2332:
;2333:				VectorSubtract(self->r.currentOrigin, g_entities[i].r.currentOrigin, checkLen);
ADDRLP4 52
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 56
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 36
ADDRLP4 52
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 56
INDIRI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 36+4
ADDRLP4 52
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 56
INDIRI4
ADDRGP4 g_entities+296+72+4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 36+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2335
;2334:
;2335:				fCheckLen = VectorLength(checkLen);
ADDRLP4 36
ARGP4
ADDRLP4 60
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 48
ADDRLP4 60
INDIRF4
ASGNF4
line 2337
;2336:
;2337:				if (fCheckLen < (minDist - 128))
ADDRLP4 48
INDIRF4
ADDRLP4 4
INDIRF4
CNSTF4 1124073472
SUBF4
GEF4 $836
line 2338
;2338:				{
line 2340
;2339:					vec3_t enAngles;
;2340:					VectorSubtract(g_entities[i].r.currentOrigin, self->r.currentOrigin, enAngles);
ADDRLP4 76
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 80
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 64
ADDRLP4 76
INDIRI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRF4
ADDRLP4 80
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 64+4
ADDRLP4 76
INDIRI4
ADDRGP4 g_entities+296+72+4
ADDP4
INDIRF4
ADDRLP4 80
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 64+8
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+8
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2341
;2341:					vectoangles(enAngles, enAngles);
ADDRLP4 64
ARGP4
ADDRLP4 64
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 2342
;2342:					if ((InFieldOfVision(self->s.apos.trBase, 120, enAngles) || self->s.genericenemyindex > level.time) && ExampleAnimEntClearLOS(self, g_entities[i].r.currentOrigin))
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
ARGP4
CNSTF4 1123024896
ARGF4
ADDRLP4 64
ARGP4
ADDRLP4 84
ADDRGP4 InFieldOfVision
CALLI4
ASGNI4
ADDRLP4 84
INDIRI4
CNSTI4 0
NEI4 $853
ADDRFP4 0
INDIRP4
CNSTI4 172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $848
LABELV $853
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+72
ADDP4
ARGP4
ADDRLP4 88
ADDRGP4 ExampleAnimEntClearLOS
CALLI4
ASGNI4
ADDRLP4 88
INDIRI4
CNSTI4 0
EQI4 $848
line 2343
;2343:					{
line 2344
;2344:						minDist = fCheckLen;
ADDRLP4 4
ADDRLP4 48
INDIRF4
ASGNF4
line 2345
;2345:						bestIndex = i;
ADDRLP4 8
ADDRLP4 0
INDIRI4
ASGNI4
line 2346
;2346:					}
LABELV $848
line 2347
;2347:				}
LABELV $836
line 2348
;2348:			}
LABELV $816
line 2349
;2349:			i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2350
;2350:		}
LABELV $814
line 2326
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $813
line 2351
;2351:	}
ADDRGP4 $812
JUMPV
line 2353
;2352:	else
;2353:	{
LABELV $854
line 2355
;2354:		while (i < MAX_CLIENTS)
;2355:		{
line 2356
;2356:			if (g_entities[i].inuse && g_entities[i].client && !(g_entities[i].r.svFlags & SVF_BOT) && g_entities[i].health > 0 && !(g_entities[i].s.eFlags & EF_DEAD) && g_entities[i].client->sess.sessionTeam != TEAM_SPECTATOR)
ADDRLP4 16
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 20
CNSTI4 0
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
EQI4 $857
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $857
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+296+8
ADDP4
INDIRI4
CNSTI4 8
BANDI4
ADDRLP4 20
INDIRI4
NEI4 $857
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 20
INDIRI4
LEI4 $857
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+8
ADDP4
INDIRI4
CNSTI4 1
BANDI4
ADDRLP4 20
INDIRI4
NEI4 $857
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $857
line 2357
;2357:			{
line 2361
;2358:				vec3_t checkLen;
;2359:				float fCheckLen;
;2360:
;2361:				VectorSubtract(self->r.currentOrigin, g_entities[i].client->ps.origin, checkLen);
ADDRLP4 40
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 44
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 24
ADDRLP4 40
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 44
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 24+4
ADDRLP4 40
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 44
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 24+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2363
;2362:
;2363:				fCheckLen = VectorLength(checkLen);
ADDRLP4 24
ARGP4
ADDRLP4 48
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 36
ADDRLP4 48
INDIRF4
ASGNF4
line 2365
;2364:
;2365:				if (fCheckLen < (minDist - 128))
ADDRLP4 36
INDIRF4
ADDRLP4 4
INDIRF4
CNSTF4 1124073472
SUBF4
GEF4 $871
line 2366
;2366:				{
line 2368
;2367:					vec3_t enAngles;
;2368:					VectorSubtract(g_entities[i].client->ps.origin, self->r.currentOrigin, enAngles);
ADDRLP4 64
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 68
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 52
ADDRLP4 64
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
ADDRLP4 68
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 52+4
ADDRLP4 64
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
ADDRLP4 68
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 52+8
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2369
;2369:					vectoangles(enAngles, enAngles);
ADDRLP4 52
ARGP4
ADDRLP4 52
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 2370
;2370:					if ((InFieldOfVision(self->s.apos.trBase, 120, enAngles) || self->s.genericenemyindex > level.time) && ExampleAnimEntClearLOS(self, g_entities[i].client->ps.origin))
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
ARGP4
CNSTF4 1123024896
ARGF4
ADDRLP4 52
ARGP4
ADDRLP4 72
ADDRGP4 InFieldOfVision
CALLI4
ASGNI4
ADDRLP4 72
INDIRI4
CNSTI4 0
NEI4 $882
ADDRFP4 0
INDIRP4
CNSTI4 172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $878
LABELV $882
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 76
ADDRGP4 ExampleAnimEntClearLOS
CALLI4
ASGNI4
ADDRLP4 76
INDIRI4
CNSTI4 0
EQI4 $878
line 2371
;2371:					{
line 2372
;2372:						minDist = fCheckLen;
ADDRLP4 4
ADDRLP4 36
INDIRF4
ASGNF4
line 2373
;2373:						bestIndex = i;
ADDRLP4 8
ADDRLP4 0
INDIRI4
ASGNI4
line 2374
;2374:					}
LABELV $878
line 2375
;2375:				}
LABELV $871
line 2376
;2376:			}
LABELV $857
line 2377
;2377:			i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2378
;2378:		}
LABELV $855
line 2354
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $854
line 2380
;2379:
;2380:		if (bestIndex == -1)
ADDRLP4 8
INDIRI4
CNSTI4 -1
NEI4 $883
line 2381
;2381:		{
line 2382
;2382:			i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $886
JUMPV
LABELV $885
line 2385
;2383:
;2384:			while (i < MAX_GENTITIES)
;2385:			{
line 2386
;2386:				if (g_entities[i].inuse && g_entities[i].s.eType == ET_GRAPPLE && ExampleAnimEntAlignment(&g_entities[i]) != ANIMENT_ALIGNED_BAD && g_entities[i].health > 0 && !(g_entities[i].s.eFlags & EF_DEAD))
ADDRLP4 16
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $888
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $888
ADDRLP4 16
INDIRI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 20
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 24
CNSTI4 1
ASGNI4
ADDRLP4 20
INDIRI4
ADDRLP4 24
INDIRI4
EQI4 $888
ADDRLP4 28
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 32
CNSTI4 0
ASGNI4
ADDRLP4 28
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 32
INDIRI4
LEI4 $888
ADDRLP4 28
INDIRI4
ADDRGP4 g_entities+8
ADDP4
INDIRI4
ADDRLP4 24
INDIRI4
BANDI4
ADDRLP4 32
INDIRI4
NEI4 $888
line 2387
;2387:				{
line 2391
;2388:					vec3_t checkLen;
;2389:					float fCheckLen;
;2390:
;2391:					VectorSubtract(self->r.currentOrigin, g_entities[i].r.currentOrigin, checkLen);
ADDRLP4 52
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 56
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 36
ADDRLP4 52
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 56
INDIRI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 36+4
ADDRLP4 52
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 56
INDIRI4
ADDRGP4 g_entities+296+72+4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 36+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2393
;2392:
;2393:					fCheckLen = VectorLength(checkLen);
ADDRLP4 36
ARGP4
ADDRLP4 60
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 48
ADDRLP4 60
INDIRF4
ASGNF4
line 2395
;2394:
;2395:					if (fCheckLen < (minDist - 128))
ADDRLP4 48
INDIRF4
ADDRLP4 4
INDIRF4
CNSTF4 1124073472
SUBF4
GEF4 $904
line 2396
;2396:					{
line 2398
;2397:						vec3_t enAngles;
;2398:						VectorSubtract(g_entities[i].r.currentOrigin, self->r.currentOrigin, enAngles);
ADDRLP4 76
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 80
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 64
ADDRLP4 76
INDIRI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRF4
ADDRLP4 80
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 64+4
ADDRLP4 76
INDIRI4
ADDRGP4 g_entities+296+72+4
ADDP4
INDIRF4
ADDRLP4 80
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 64+8
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+8
ADDP4
INDIRF4
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2399
;2399:						vectoangles(enAngles, enAngles);
ADDRLP4 64
ARGP4
ADDRLP4 64
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 2400
;2400:						if ((InFieldOfVision(self->s.apos.trBase, 120, enAngles) || self->s.genericenemyindex > level.time) && ExampleAnimEntClearLOS(self, g_entities[i].r.currentOrigin))
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
ARGP4
CNSTF4 1123024896
ARGF4
ADDRLP4 64
ARGP4
ADDRLP4 84
ADDRGP4 InFieldOfVision
CALLI4
ASGNI4
ADDRLP4 84
INDIRI4
CNSTI4 0
NEI4 $921
ADDRFP4 0
INDIRP4
CNSTI4 172
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
LEI4 $916
LABELV $921
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+296+72
ADDP4
ARGP4
ADDRLP4 88
ADDRGP4 ExampleAnimEntClearLOS
CALLI4
ASGNI4
ADDRLP4 88
INDIRI4
CNSTI4 0
EQI4 $916
line 2401
;2401:						{
line 2402
;2402:							minDist = fCheckLen;
ADDRLP4 4
ADDRLP4 48
INDIRF4
ASGNF4
line 2403
;2403:							bestIndex = i;
ADDRLP4 8
ADDRLP4 0
INDIRI4
ASGNI4
line 2404
;2404:						}
LABELV $916
line 2405
;2405:					}
LABELV $904
line 2406
;2406:				}
LABELV $888
line 2407
;2407:				i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2408
;2408:			}
LABELV $886
line 2384
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $885
line 2409
;2409:		}
LABELV $883
line 2410
;2410:	}
LABELV $812
line 2412
;2411:
;2412:	if (bestIndex != -1)
ADDRLP4 8
INDIRI4
CNSTI4 -1
EQI4 $922
line 2413
;2413:	{
line 2414
;2414:		self->bolt_Motion = bestIndex;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
ADDRLP4 8
INDIRI4
ASGNI4
line 2415
;2415:		enDist = minDist;
ADDRFP4 4
ADDRLP4 4
INDIRF4
ASGNF4
line 2416
;2416:		self->speed = level.time + 4000; //4 seconds til we forget about the enemy
ADDRFP4 0
INDIRP4
CNSTI4 608
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 4000
ADDI4
CVIF4 4
ASGNF4
line 2417
;2417:		ExampleAnimEntAlertOthers(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ExampleAnimEntAlertOthers
CALLV
pop
line 2418
;2418:		self->bolt_RArm = level.time + Q_irand(500, 1000);
CNSTI4 500
ARGI4
CNSTI4 1000
ARGI4
ADDRLP4 16
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 792
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 16
INDIRI4
ADDI4
ASGNI4
line 2420
;2419:
;2420:		if (self->watertype == ANIMENT_TYPE_STORMTROOPER)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 0
NEI4 $926
line 2421
;2421:		{
line 2422
;2422:			G_Sound(self, CHAN_AUTO, gTrooperSound_Alert[Q_irand(0, TROOPER_ALERT_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 4
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gTrooperSound_Alert
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2423
;2423:		}
ADDRGP4 $927
JUMPV
LABELV $926
line 2424
;2424:		else if (self->watertype == ANIMENT_TYPE_RODIAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $928
line 2425
;2425:		{
line 2426
;2426:			G_Sound(self, CHAN_AUTO, gRodianSound_Alert[Q_irand(0, RODIAN_ALERT_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 4
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gRodianSound_Alert
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2427
;2427:		}
ADDRGP4 $929
JUMPV
LABELV $928
line 2428
;2428:		else if (self->watertype == ANIMENT_TYPE_JAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 2
NEI4 $930
line 2429
;2429:		{
line 2430
;2430:			G_Sound(self, CHAN_AUTO, gJanSound_Alert[Q_irand(0, JAN_ALERT_SOUNDS-1)]);
CNSTI4 0
ARGI4
CNSTI4 4
ARGI4
ADDRLP4 20
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 0
ARGI4
ADDRLP4 20
INDIRI4
CNSTI4 2
LSHI4
ADDRGP4 gJanSound_Alert
ADDP4
INDIRI4
ARGI4
ADDRGP4 G_Sound
CALLV
pop
line 2431
;2431:		}
ADDRGP4 $931
JUMPV
LABELV $930
line 2432
;2432:		else if (self->watertype == ANIMENT_TYPE_CUSTOM)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $932
line 2433
;2433:		{
line 2434
;2434:			ExampleAnimEntCustomSound(self, ANIMENT_CUSTOMSOUND_ALERT);
ADDRFP4 0
INDIRP4
ARGP4
CNSTI4 2
ARGI4
ADDRGP4 ExampleAnimEntCustomSound
CALLV
pop
line 2435
;2435:		}
LABELV $932
LABELV $931
LABELV $929
LABELV $927
line 2436
;2436:	}
LABELV $922
line 2437
;2437:}
LABELV $810
endproc ExampleAnimEntEnemyHandling 92 12
export ExampleAnimEntUpdateSelf
proc ExampleAnimEntUpdateSelf 176 16
line 2440
;2438:
;2439:void ExampleAnimEntUpdateSelf(gentity_t *self)
;2440:{
line 2443
;2441:	vec3_t preserveAngles;
;2442:
;2443:	if (gBotEdit || !gWPNum)
ADDRGP4 gBotEdit
INDIRF4
CNSTF4 0
NEF4 $937
ADDRGP4 gWPNum
INDIRI4
CNSTI4 0
NEI4 $935
LABELV $937
line 2444
;2444:	{
line 2445
;2445:		if (!(self->s.eFlags & EF_DEAD))
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
CNSTI4 1
BANDI4
CNSTI4 0
NEI4 $938
line 2446
;2446:		{
line 2447
;2447:			if (self->bolt_LArm < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $939
line 2448
;2448:			{
line 2449
;2449:				self->s.torsoAnim = BOTH_ATTACK3;
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
CNSTI4 120
ASGNI4
line 2450
;2450:				self->s.legsAnim = BOTH_STAND3;
ADDRFP4 0
INDIRP4
CNSTI4 280
ADDP4
CNSTI4 576
ASGNI4
line 2451
;2451:			}
line 2452
;2452:		}
ADDRGP4 $939
JUMPV
LABELV $938
line 2454
;2453:		else
;2454:		{
line 2455
;2455:			if (self->bolt_Head < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $943
line 2456
;2456:			{
line 2457
;2457:				self->think = G_FreeEntity;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 G_FreeEntity
ASGNP4
line 2458
;2458:				self->nextthink = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 2459
;2459:				return;
ADDRGP4 $934
JUMPV
LABELV $943
line 2461
;2460:			}
;2461:		}
LABELV $939
line 2463
;2462:
;2463:		VectorCopy(self->s.apos.trBase, preserveAngles);
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
INDIRB
ASGNB 12
line 2464
;2464:		G_RunObject(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunObject
CALLV
pop
line 2465
;2465:		VectorCopy(preserveAngles, self->s.apos.trBase);
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
ADDRLP4 0
INDIRB
ASGNB 12
line 2466
;2466:		return;
ADDRGP4 $934
JUMPV
LABELV $935
line 2469
;2467:	}
;2468:
;2469:	if (!(self->s.eFlags & EF_DEAD))
ADDRFP4 0
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
CNSTI4 1
BANDI4
CNSTI4 0
NEI4 $947
line 2470
;2470:	{
line 2471
;2471:		if (self->bolt_LArm < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $948
line 2472
;2472:		{
line 2474
;2473:			vec3_t goalPos;
;2474:			int didMove = 0;
ADDRLP4 12
CNSTI4 0
ASGNI4
line 2475
;2475:			float enDist = 999999999;
ADDRLP4 16
CNSTF4 1315859240
ASGNF4
line 2476
;2476:			float runSpeed = 18;
ADDRLP4 24
CNSTF4 1099956224
ASGNF4
line 2478
;2477:			vec3_t enemyOrigin;
;2478:			qboolean hasEnemyLOS = qfalse;
ADDRLP4 20
CNSTI4 0
ASGNI4
line 2479
;2479:			int originalEnemyIndex = self->bolt_Motion;
ADDRLP4 28
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
line 2481
;2480:
;2481:			if (self->bolt_Motion != ENTITYNUM_NONE &&
ADDRLP4 56
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 56
INDIRI4
CNSTI4 1023
EQI4 $952
ADDRLP4 60
CNSTI4 828
ADDRLP4 56
INDIRI4
MULI4
ASGNI4
ADDRLP4 60
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $952
ADDRLP4 60
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $952
line 2484
;2482:				g_entities[self->bolt_Motion].inuse &&
;2483:				g_entities[self->bolt_Motion].client)
;2484:			{
line 2485
;2485:				if (g_entities[self->bolt_Motion].client->sess.sessionTeam == TEAM_SPECTATOR)
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
NEI4 $956
line 2486
;2486:				{
line 2487
;2487:					self->bolt_Motion = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
CNSTI4 1023
ASGNI4
line 2488
;2488:				}
LABELV $956
line 2489
;2489:			}
LABELV $952
line 2491
;2490:
;2491:			if (self->bolt_Motion < MAX_CLIENTS &&
ADDRLP4 64
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 64
INDIRI4
CNSTI4 32
GEI4 $959
ADDRLP4 68
CNSTI4 828
ADDRLP4 64
INDIRI4
MULI4
ASGNI4
ADDRLP4 68
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $963
ADDRLP4 68
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $959
LABELV $963
line 2494
;2492:				(!g_entities[self->bolt_Motion].inuse ||
;2493:				!g_entities[self->bolt_Motion].client))
;2494:			{
line 2495
;2495:				self->bolt_Motion = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
CNSTI4 1023
ASGNI4
line 2496
;2496:			}
LABELV $959
line 2498
;2497:
;2498:			if (self->bolt_Motion != ENTITYNUM_NONE &&
ADDRLP4 72
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 72
INDIRI4
CNSTI4 1023
EQI4 $964
ADDRLP4 76
CNSTI4 828
ADDRLP4 72
INDIRI4
MULI4
ASGNI4
ADDRLP4 76
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $964
ADDRLP4 76
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $969
ADDRLP4 76
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $964
LABELV $969
line 2501
;2499:				g_entities[self->bolt_Motion].inuse &&
;2500:				(g_entities[self->bolt_Motion].client || g_entities[self->bolt_Motion].s.eType == ET_GRAPPLE))
;2501:			{
line 2502
;2502:				if (g_entities[self->bolt_Motion].health < 1 ||
ADDRLP4 80
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ASGNI4
ADDRLP4 84
CNSTI4 1
ASGNI4
ADDRLP4 80
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
LTI4 $974
ADDRLP4 80
INDIRI4
ADDRGP4 g_entities+8
ADDP4
INDIRI4
ADDRLP4 84
INDIRI4
BANDI4
CNSTI4 0
EQI4 $970
LABELV $974
line 2504
;2503:					(g_entities[self->bolt_Motion].s.eFlags & EF_DEAD))
;2504:				{
line 2505
;2505:					self->bolt_Motion = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
CNSTI4 1023
ASGNI4
line 2506
;2506:				}
LABELV $970
line 2507
;2507:			}
LABELV $964
line 2509
;2508:
;2509:			if (gWPNum > 0)
ADDRGP4 gWPNum
INDIRI4
CNSTI4 0
LEI4 $975
line 2510
;2510:			{
line 2511
;2511:				if (self->bolt_Motion != ENTITYNUM_NONE &&
ADDRLP4 80
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 80
INDIRI4
CNSTI4 1023
EQI4 $977
ADDRLP4 84
CNSTI4 828
ADDRLP4 80
INDIRI4
MULI4
ASGNI4
ADDRLP4 84
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $977
ADDRLP4 84
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $977
line 2514
;2512:					g_entities[self->bolt_Motion].inuse &&
;2513:					g_entities[self->bolt_Motion].client)
;2514:				{
line 2516
;2515:					vec3_t enSubVec;
;2516:					VectorSubtract(self->r.currentOrigin, g_entities[self->bolt_Motion].client->ps.origin, enSubVec);
ADDRLP4 100
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 104
CNSTI4 828
ASGNI4
ADDRLP4 108
ADDRLP4 100
INDIRP4
CNSTI4 808
ADDP4
ASGNP4
ADDRLP4 88
ADDRLP4 100
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 104
INDIRI4
ADDRLP4 108
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 88+4
ADDRLP4 100
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 104
INDIRI4
ADDRLP4 108
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 112
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 88+8
ADDRLP4 112
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
CNSTI4 828
ADDRLP4 112
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2518
;2517:	
;2518:					enDist = VectorLength(enSubVec);
ADDRLP4 88
ARGP4
ADDRLP4 116
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 16
ADDRLP4 116
INDIRF4
ASGNF4
line 2520
;2519:
;2520:					VectorCopy(g_entities[self->bolt_Motion].client->ps.origin, enemyOrigin);
ADDRLP4 44
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2522
;2521:
;2522:					if (g_entities[self->bolt_Motion].client->pers.cmd.upmove < 0)
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1410
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
GEI4 $987
line 2523
;2523:					{
line 2524
;2524:						enemyOrigin[2] -= 8;
ADDRLP4 44+8
ADDRLP4 44+8
INDIRF4
CNSTF4 1090519040
SUBF4
ASGNF4
line 2525
;2525:					}
ADDRGP4 $988
JUMPV
LABELV $987
line 2527
;2526:					else
;2527:					{
line 2528
;2528:						enemyOrigin[2] += 8;
ADDRLP4 44+8
ADDRLP4 44+8
INDIRF4
CNSTF4 1090519040
ADDF4
ASGNF4
line 2529
;2529:					}
LABELV $988
line 2531
;2530:
;2531:					hasEnemyLOS = ExampleAnimEntClearLOS(self, enemyOrigin);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 44
ARGP4
ADDRLP4 120
ADDRGP4 ExampleAnimEntClearLOS
CALLI4
ASGNI4
ADDRLP4 20
ADDRLP4 120
INDIRI4
ASGNI4
line 2532
;2532:				}
ADDRGP4 $978
JUMPV
LABELV $977
line 2533
;2533:				else if (self->bolt_Motion != ENTITYNUM_NONE &&
ADDRLP4 88
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 88
INDIRI4
CNSTI4 1023
EQI4 $992
ADDRLP4 92
CNSTI4 828
ADDRLP4 88
INDIRI4
MULI4
ASGNI4
ADDRLP4 92
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $992
ADDRLP4 92
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $992
line 2536
;2534:					g_entities[self->bolt_Motion].inuse &&
;2535:					g_entities[self->bolt_Motion].s.eType == ET_GRAPPLE)
;2536:				{
line 2538
;2537:					vec3_t enSubVec;
;2538:					VectorSubtract(self->r.currentOrigin, g_entities[self->bolt_Motion].r.currentOrigin, enSubVec);
ADDRLP4 108
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 112
CNSTI4 828
ASGNI4
ADDRLP4 116
ADDRLP4 108
INDIRP4
CNSTI4 808
ADDP4
ASGNP4
ADDRLP4 96
ADDRLP4 108
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 112
INDIRI4
ADDRLP4 116
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 96+4
ADDRLP4 108
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 112
INDIRI4
ADDRLP4 116
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 120
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 96+8
ADDRLP4 120
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
CNSTI4 828
ADDRLP4 120
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2540
;2539:	
;2540:					enDist = VectorLength(enSubVec);
ADDRLP4 96
ARGP4
ADDRLP4 124
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 16
ADDRLP4 124
INDIRF4
ASGNF4
line 2542
;2541:
;2542:					VectorCopy(g_entities[self->bolt_Motion].r.currentOrigin, enemyOrigin);
ADDRLP4 44
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRB
ASGNB 12
line 2544
;2543:
;2544:					hasEnemyLOS = ExampleAnimEntClearLOS(self, enemyOrigin);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 44
ARGP4
ADDRLP4 128
ADDRGP4 ExampleAnimEntClearLOS
CALLI4
ASGNI4
ADDRLP4 20
ADDRLP4 128
INDIRI4
ASGNI4
line 2545
;2545:				}
LABELV $992
LABELV $978
line 2547
;2546:
;2547:				if (hasEnemyLOS && enDist < 512 && self->splashRadius < level.time)
ADDRLP4 20
INDIRI4
CNSTI4 0
EQI4 $1008
ADDRLP4 16
INDIRF4
CNSTF4 1140850688
GEF4 $1008
ADDRFP4 0
INDIRP4
CNSTI4 700
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1008
line 2548
;2548:				{
line 2549
;2549:					if (rand()%10 <= 8)
ADDRLP4 96
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 96
INDIRI4
CNSTI4 10
MODI4
CNSTI4 8
GTI4 $1011
line 2550
;2550:					{
line 2551
;2551:						if (self->splashMethodOfDeath)
ADDRFP4 0
INDIRP4
CNSTI4 708
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1013
line 2552
;2552:						{
line 2553
;2553:							self->splashMethodOfDeath = 0;
ADDRFP4 0
INDIRP4
CNSTI4 708
ADDP4
CNSTI4 0
ASGNI4
line 2554
;2554:						}
ADDRGP4 $1014
JUMPV
LABELV $1013
line 2556
;2555:						else
;2556:						{
line 2557
;2557:							self->splashMethodOfDeath = 1;
ADDRFP4 0
INDIRP4
CNSTI4 708
ADDP4
CNSTI4 1
ASGNI4
line 2558
;2558:						}
LABELV $1014
line 2559
;2559:					}
LABELV $1011
line 2561
;2560:
;2561:					if (self->watertype == ANIMENT_TYPE_RODIAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1015
line 2562
;2562:					{ //these guys stand still more often because they are "snipers"
line 2563
;2563:						if (rand()%10 <= 7)
ADDRLP4 100
ADDRGP4 rand
CALLI4
ASGNI4
ADDRLP4 100
INDIRI4
CNSTI4 10
MODI4
CNSTI4 7
GTI4 $1017
line 2564
;2564:						{
line 2565
;2565:							self->splashMethodOfDeath = 1;
ADDRFP4 0
INDIRP4
CNSTI4 708
ADDP4
CNSTI4 1
ASGNI4
line 2566
;2566:						}
LABELV $1017
line 2567
;2567:					}
LABELV $1015
line 2569
;2568:
;2569:					self->splashRadius = level.time + Q_irand(2000, 5000);
CNSTI4 2000
ARGI4
CNSTI4 5000
ARGI4
ADDRLP4 100
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 700
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 100
INDIRI4
ADDI4
ASGNI4
line 2570
;2570:				}
LABELV $1008
line 2572
;2571:
;2572:				if (hasEnemyLOS && (enDist < 512 || self->watertype == ANIMENT_TYPE_RODIAN) && self->splashMethodOfDeath)
ADDRLP4 20
INDIRI4
CNSTI4 0
EQI4 $1020
ADDRLP4 16
INDIRF4
CNSTF4 1140850688
LTF4 $1022
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1020
LABELV $1022
ADDRFP4 0
INDIRP4
CNSTI4 708
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1020
line 2573
;2573:				{
line 2574
;2574:					VectorCopy(self->r.currentOrigin, goalPos);
ADDRLP4 32
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
INDIRB
ASGNB 12
line 2575
;2575:				}
ADDRGP4 $976
JUMPV
LABELV $1020
line 2577
;2576:				else
;2577:				{
line 2578
;2578:					ExampleAnimEntNavigation(self, goalPos);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 32
ARGP4
ADDRGP4 ExampleAnimEntNavigation
CALLV
pop
line 2579
;2579:				}
line 2580
;2580:			}
ADDRGP4 $976
JUMPV
LABELV $975
line 2582
;2581:			else
;2582:			{ //No path data? Eh. Just run toward the origin mindlessly.
line 2583
;2583:				VectorClear(goalPos);
ADDRLP4 80
CNSTF4 0
ASGNF4
ADDRLP4 32+8
ADDRLP4 80
INDIRF4
ASGNF4
ADDRLP4 32+4
ADDRLP4 80
INDIRF4
ASGNF4
ADDRLP4 32
ADDRLP4 80
INDIRF4
ASGNF4
line 2584
;2584:			}
LABELV $976
line 2586
;2585:
;2586:			if (self->bolt_Motion == ENTITYNUM_NONE)
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $1025
line 2587
;2587:			{
line 2588
;2588:				if (ExampleAnimEntAlignment(self) == ANIMENT_ALIGNED_GOOD)
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 80
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 80
INDIRI4
CNSTI4 2
NEI4 $1027
line 2589
;2589:				{
line 2590
;2590:					runSpeed = 18;
ADDRLP4 24
CNSTF4 1099956224
ASGNF4
line 2591
;2591:				}
ADDRGP4 $1028
JUMPV
LABELV $1027
line 2593
;2592:				else
;2593:				{
line 2594
;2594:					runSpeed = 6;
ADDRLP4 24
CNSTF4 1086324736
ASGNF4
line 2595
;2595:				}
LABELV $1028
line 2596
;2596:			}
LABELV $1025
line 2598
;2597:
;2598:			didMove = ExampleAnimEntMove(self, goalPos, runSpeed);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 32
ARGP4
ADDRLP4 24
INDIRF4
ARGF4
ADDRLP4 80
ADDRGP4 ExampleAnimEntMove
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 80
INDIRI4
ASGNI4
line 2600
;2599:
;2600:			if (self->bolt_Motion != ENTITYNUM_NONE &&
ADDRLP4 84
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 84
INDIRI4
CNSTI4 1023
EQI4 $1029
ADDRLP4 88
CNSTI4 828
ADDRLP4 84
INDIRI4
MULI4
ASGNI4
ADDRLP4 88
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1029
ADDRLP4 88
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1029
line 2603
;2601:				g_entities[self->bolt_Motion].inuse &&
;2602:				g_entities[self->bolt_Motion].client)
;2603:			{
line 2604
;2604:				if (self->speed < level.time || g_entities[self->bolt_Motion].health < 1)
ADDRLP4 92
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 92
INDIRP4
CNSTI4 608
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LTF4 $1037
CNSTI4 828
ADDRLP4 92
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1033
LABELV $1037
line 2605
;2605:				{
line 2606
;2606:					self->bolt_Motion = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
CNSTI4 1023
ASGNI4
line 2607
;2607:				}
ADDRGP4 $1030
JUMPV
LABELV $1033
line 2609
;2608:				else
;2609:				{
line 2610
;2610:					if (self->bolt_Motion != originalEnemyIndex)
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ADDRLP4 28
INDIRI4
EQI4 $1030
line 2611
;2611:					{
line 2613
;2612:						vec3_t enSubVec;
;2613:						VectorSubtract(self->r.currentOrigin, g_entities[self->bolt_Motion].client->ps.origin, enSubVec);
ADDRLP4 108
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 112
CNSTI4 828
ASGNI4
ADDRLP4 116
ADDRLP4 108
INDIRP4
CNSTI4 808
ADDP4
ASGNP4
ADDRLP4 96
ADDRLP4 108
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 112
INDIRI4
ADDRLP4 116
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 96+4
ADDRLP4 108
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 112
INDIRI4
ADDRLP4 116
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 120
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 96+8
ADDRLP4 120
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
CNSTI4 828
ADDRLP4 120
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2615
;2614:	
;2615:						enDist = VectorLength(enSubVec);
ADDRLP4 96
ARGP4
ADDRLP4 124
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 16
ADDRLP4 124
INDIRF4
ASGNF4
line 2616
;2616:					}
line 2617
;2617:				}
line 2618
;2618:			}
ADDRGP4 $1030
JUMPV
LABELV $1029
line 2619
;2619:			else if (self->bolt_Motion != ENTITYNUM_NONE &&
ADDRLP4 92
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 92
INDIRI4
CNSTI4 1023
EQI4 $1045
ADDRLP4 96
CNSTI4 828
ADDRLP4 92
INDIRI4
MULI4
ASGNI4
ADDRLP4 96
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1045
ADDRLP4 96
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $1045
line 2622
;2620:				g_entities[self->bolt_Motion].inuse &&
;2621:				g_entities[self->bolt_Motion].s.eType == ET_GRAPPLE)
;2622:			{
line 2623
;2623:				if (self->speed < level.time || g_entities[self->bolt_Motion].health < 1)
ADDRLP4 100
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 100
INDIRP4
CNSTI4 608
ADDP4
INDIRF4
ADDRGP4 level+32
INDIRI4
CVIF4 4
LTF4 $1053
CNSTI4 828
ADDRLP4 100
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
CNSTI4 1
GEI4 $1049
LABELV $1053
line 2624
;2624:				{
line 2625
;2625:					self->bolt_Motion = ENTITYNUM_NONE;
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
CNSTI4 1023
ASGNI4
line 2626
;2626:				}
ADDRGP4 $1050
JUMPV
LABELV $1049
line 2628
;2627:				else
;2628:				{
line 2629
;2629:					if (self->bolt_Motion != originalEnemyIndex)
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ADDRLP4 28
INDIRI4
EQI4 $1054
line 2630
;2630:					{
line 2632
;2631:						vec3_t enSubVec;
;2632:						VectorSubtract(self->r.currentOrigin, g_entities[self->bolt_Motion].r.currentOrigin, enSubVec);
ADDRLP4 116
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 120
CNSTI4 828
ASGNI4
ADDRLP4 124
ADDRLP4 116
INDIRP4
CNSTI4 808
ADDP4
ASGNP4
ADDRLP4 104
ADDRLP4 116
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 120
INDIRI4
ADDRLP4 124
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 104+4
ADDRLP4 116
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 120
INDIRI4
ADDRLP4 124
INDIRP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+4
ADDP4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 128
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 104+8
ADDRLP4 128
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
CNSTI4 828
ADDRLP4 128
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72+8
ADDP4
INDIRF4
SUBF4
ASGNF4
line 2634
;2633:	
;2634:						enDist = VectorLength(enSubVec);
ADDRLP4 104
ARGP4
ADDRLP4 132
ADDRGP4 VectorLength
CALLF4
ASGNF4
ADDRLP4 16
ADDRLP4 132
INDIRF4
ASGNF4
line 2635
;2635:					}
LABELV $1054
line 2636
;2636:				}
LABELV $1050
line 2637
;2637:			}
LABELV $1045
LABELV $1030
line 2639
;2638:
;2639:			ExampleAnimEntEnemyHandling(self, enDist);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 16
INDIRF4
ARGF4
ADDRGP4 ExampleAnimEntEnemyHandling
CALLV
pop
line 2641
;2640:
;2641:			if (self->bolt_Motion != ENTITYNUM_NONE &&
ADDRLP4 100
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
ASGNI4
ADDRLP4 100
INDIRI4
CNSTI4 1023
EQI4 $1066
ADDRLP4 104
CNSTI4 828
ADDRLP4 100
INDIRI4
MULI4
ASGNI4
ADDRLP4 104
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1066
ADDRLP4 104
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
NEU4 $1071
ADDRLP4 104
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $1066
LABELV $1071
line 2644
;2642:				g_entities[self->bolt_Motion].inuse &&
;2643:				(g_entities[self->bolt_Motion].client || g_entities[self->bolt_Motion].s.eType == ET_GRAPPLE))
;2644:			{
line 2647
;2645:				vec3_t enOrigin;
;2646:
;2647:				if (g_entities[self->bolt_Motion].client)
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1072
line 2648
;2648:				{
line 2649
;2649:					VectorCopy(g_entities[self->bolt_Motion].client->ps.origin, enOrigin);
ADDRLP4 108
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRB
ASGNB 12
line 2650
;2650:				}
ADDRGP4 $1073
JUMPV
LABELV $1072
line 2652
;2651:				else
;2652:				{
line 2653
;2653:					VectorCopy(g_entities[self->bolt_Motion].r.currentOrigin, enOrigin);
ADDRLP4 108
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+296+72
ADDP4
INDIRB
ASGNB 12
line 2654
;2654:				}
LABELV $1073
line 2656
;2655:
;2656:				if (originalEnemyIndex != self->bolt_Motion)
ADDRLP4 28
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
EQI4 $1078
line 2657
;2657:				{
line 2658
;2658:					VectorCopy(enOrigin, enemyOrigin);
ADDRLP4 44
ADDRLP4 108
INDIRB
ASGNB 12
line 2660
;2659:
;2660:					if (g_entities[self->bolt_Motion].client)
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1080
line 2661
;2661:					{
line 2662
;2662:						if (g_entities[self->bolt_Motion].client->pers.cmd.upmove < 0)
CNSTI4 828
ADDRFP4 0
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
MULI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1410
ADDP4
INDIRI1
CVII4 1
CNSTI4 0
GEI4 $1083
line 2663
;2663:						{
line 2664
;2664:							enemyOrigin[2] -= 8;
ADDRLP4 44+8
ADDRLP4 44+8
INDIRF4
CNSTF4 1090519040
SUBF4
ASGNF4
line 2665
;2665:						}
ADDRGP4 $1084
JUMPV
LABELV $1083
line 2667
;2666:						else
;2667:						{
line 2668
;2668:							enemyOrigin[2] += 8;
ADDRLP4 44+8
ADDRLP4 44+8
INDIRF4
CNSTF4 1090519040
ADDF4
ASGNF4
line 2669
;2669:						}
LABELV $1084
line 2670
;2670:					}
LABELV $1080
line 2672
;2671:
;2672:					hasEnemyLOS = ExampleAnimEntClearLOS(self, enemyOrigin);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 44
ARGP4
ADDRLP4 120
ADDRGP4 ExampleAnimEntClearLOS
CALLI4
ASGNI4
ADDRLP4 20
ADDRLP4 120
INDIRI4
ASGNI4
line 2673
;2673:				}
LABELV $1078
line 2675
;2674:
;2675:				if (hasEnemyLOS)
ADDRLP4 20
INDIRI4
CNSTI4 0
EQI4 $1088
line 2676
;2676:				{
line 2682
;2677:					vec3_t enAngles;
;2678:					vec3_t enAimOrg;
;2679:					vec3_t selfAimOrg;
;2680:					vec3_t myZeroPitchAngles;
;2681:
;2682:					VectorCopy(enOrigin, enAimOrg);
ADDRLP4 132
ADDRLP4 108
INDIRB
ASGNB 12
line 2683
;2683:					VectorCopy(self->r.currentOrigin, selfAimOrg);
ADDRLP4 144
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
INDIRB
ASGNB 12
line 2684
;2684:					enAimOrg[2] = selfAimOrg[2];
ADDRLP4 132+8
ADDRLP4 144+8
INDIRF4
ASGNF4
line 2686
;2685:
;2686:					VectorSubtract(enAimOrg, selfAimOrg, enAngles);
ADDRLP4 120
ADDRLP4 132
INDIRF4
ADDRLP4 144
INDIRF4
SUBF4
ASGNF4
ADDRLP4 120+4
ADDRLP4 132+4
INDIRF4
ADDRLP4 144+4
INDIRF4
SUBF4
ASGNF4
ADDRLP4 120+8
ADDRLP4 132+8
INDIRF4
ADDRLP4 144+8
INDIRF4
SUBF4
ASGNF4
line 2687
;2687:					vectoangles(enAngles, enAngles);
ADDRLP4 120
ARGP4
ADDRLP4 120
ARGP4
ADDRGP4 vectoangles
CALLV
pop
line 2689
;2688:
;2689:					VectorCopy(self->s.apos.trBase, myZeroPitchAngles);
ADDRLP4 156
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
INDIRB
ASGNB 12
line 2690
;2690:					myZeroPitchAngles[PITCH] = 0;
ADDRLP4 156
CNSTF4 0
ASGNF4
line 2691
;2691:					if (InFieldOfVision(myZeroPitchAngles, 50, enAngles))
ADDRLP4 156
ARGP4
CNSTF4 1112014848
ARGF4
ADDRLP4 120
ARGP4
ADDRLP4 168
ADDRGP4 InFieldOfVision
CALLI4
ASGNI4
ADDRLP4 168
INDIRI4
CNSTI4 0
EQI4 $1098
line 2692
;2692:					{
line 2693
;2693:						self->boltpoint4 = 1;
ADDRFP4 0
INDIRP4
CNSTI4 780
ADDP4
CNSTI4 1
ASGNI4
line 2694
;2694:					}
LABELV $1098
line 2695
;2695:					self->speed = level.time + 4000; //4 seconds til we forget about the enemy
ADDRFP4 0
INDIRP4
CNSTI4 608
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 4000
ADDI4
CVIF4 4
ASGNF4
line 2696
;2696:				}
ADDRGP4 $1089
JUMPV
LABELV $1088
line 2698
;2697:				else
;2698:				{
line 2699
;2699:					self->boltpoint4 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 780
ADDP4
CNSTI4 0
ASGNI4
line 2700
;2700:				}
LABELV $1089
line 2701
;2701:				ExampleAnimEntLook(self, enemyOrigin);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 44
ARGP4
ADDRGP4 ExampleAnimEntLook
CALLV
pop
line 2702
;2702:			}
ADDRGP4 $1067
JUMPV
LABELV $1066
line 2704
;2703:			else
;2704:			{
line 2705
;2705:				self->boltpoint4 = 0;
ADDRFP4 0
INDIRP4
CNSTI4 780
ADDP4
CNSTI4 0
ASGNI4
line 2706
;2706:				ExampleAnimEntLook(self, goalPos);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 32
ARGP4
ADDRGP4 ExampleAnimEntLook
CALLV
pop
line 2707
;2707:			}
LABELV $1067
line 2709
;2708:
;2709:			if (!didMove)
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $1101
line 2710
;2710:			{ //not just didMove 2, this means we're actually probably stuck
line 2714
;2711:				vec3_t aFwd, aRight;
;2712:				vec3_t newGoalPos;
;2713:
;2714:				AngleVectors(self->s.apos.trBase, aFwd, aRight, 0);
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
ARGP4
ADDRLP4 120
ARGP4
ADDRLP4 132
ARGP4
CNSTP4 0
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 2715
;2715:				newGoalPos[0] = self->r.currentOrigin[0] + aRight[0]*64 - aFwd[0]*64;
ADDRLP4 144
CNSTF4 1115684864
ASGNF4
ADDRLP4 108
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 144
INDIRF4
ADDRLP4 132
INDIRF4
MULF4
ADDF4
ADDRLP4 144
INDIRF4
ADDRLP4 120
INDIRF4
MULF4
SUBF4
ASGNF4
line 2716
;2716:				newGoalPos[1] = self->r.currentOrigin[1] + aRight[1]*64 - aFwd[1]*64;
ADDRLP4 148
CNSTF4 1115684864
ASGNF4
ADDRLP4 108+4
ADDRFP4 0
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 148
INDIRF4
ADDRLP4 132+4
INDIRF4
MULF4
ADDF4
ADDRLP4 148
INDIRF4
ADDRLP4 120+4
INDIRF4
MULF4
SUBF4
ASGNF4
line 2717
;2717:				newGoalPos[2] = self->r.currentOrigin[2] + aRight[2]*64 - aFwd[2]*64;
ADDRLP4 152
CNSTF4 1115684864
ASGNF4
ADDRLP4 108+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
ADDRLP4 152
INDIRF4
ADDRLP4 132+8
INDIRF4
MULF4
ADDF4
ADDRLP4 152
INDIRF4
ADDRLP4 120+8
INDIRF4
MULF4
SUBF4
ASGNF4
line 2720
;2718:
;2719:				//Try moving to the right of the direction we're looking, to get around stuff
;2720:				didMove = ExampleAnimEntMove(self, newGoalPos, 18);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 108
ARGP4
CNSTF4 1099956224
ARGF4
ADDRLP4 156
ADDRGP4 ExampleAnimEntMove
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 156
INDIRI4
ASGNI4
line 2722
;2721:
;2722:				if (!didMove)
ADDRLP4 12
INDIRI4
CNSTI4 0
NEI4 $1109
line 2723
;2723:				{ //still? Try to the left.
line 2724
;2724:					newGoalPos[0] = self->r.currentOrigin[0] - aRight[0]*64 - aFwd[0]*64;
ADDRLP4 160
CNSTF4 1115684864
ASGNF4
ADDRLP4 108
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
INDIRF4
ADDRLP4 160
INDIRF4
ADDRLP4 132
INDIRF4
MULF4
SUBF4
ADDRLP4 160
INDIRF4
ADDRLP4 120
INDIRF4
MULF4
SUBF4
ASGNF4
line 2725
;2725:					newGoalPos[1] = self->r.currentOrigin[1] - aRight[1]*64 - aFwd[1]*64;
ADDRLP4 164
CNSTF4 1115684864
ASGNF4
ADDRLP4 108+4
ADDRFP4 0
INDIRP4
CNSTI4 372
ADDP4
INDIRF4
ADDRLP4 164
INDIRF4
ADDRLP4 132+4
INDIRF4
MULF4
SUBF4
ADDRLP4 164
INDIRF4
ADDRLP4 120+4
INDIRF4
MULF4
SUBF4
ASGNF4
line 2726
;2726:					newGoalPos[2] = self->r.currentOrigin[2] - aRight[2]*64 - aFwd[2]*64;
ADDRLP4 168
CNSTF4 1115684864
ASGNF4
ADDRLP4 108+8
ADDRFP4 0
INDIRP4
CNSTI4 376
ADDP4
INDIRF4
ADDRLP4 168
INDIRF4
ADDRLP4 132+8
INDIRF4
MULF4
SUBF4
ADDRLP4 168
INDIRF4
ADDRLP4 120+8
INDIRF4
MULF4
SUBF4
ASGNF4
line 2728
;2727:
;2728:					didMove = ExampleAnimEntMove(self, newGoalPos, 18);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 108
ARGP4
CNSTF4 1099956224
ARGF4
ADDRLP4 172
ADDRGP4 ExampleAnimEntMove
CALLI4
ASGNI4
ADDRLP4 12
ADDRLP4 172
INDIRI4
ASGNI4
line 2729
;2729:				}
LABELV $1109
line 2730
;2730:			}
LABELV $1101
line 2732
;2731:
;2732:			if (didMove == 1)
ADDRLP4 12
INDIRI4
CNSTI4 1
NEI4 $1117
line 2733
;2733:			{
line 2734
;2734:				if (self->bolt_Motion == ENTITYNUM_NONE && ExampleAnimEntAlignment(self) != ANIMENT_ALIGNED_GOOD)
ADDRLP4 108
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 108
INDIRP4
CNSTI4 808
ADDP4
INDIRI4
CNSTI4 1023
NEI4 $1119
ADDRLP4 108
INDIRP4
ARGP4
ADDRLP4 112
ADDRGP4 ExampleAnimEntAlignment
CALLI4
ASGNI4
ADDRLP4 112
INDIRI4
CNSTI4 2
EQI4 $1119
line 2735
;2735:				{ //Good guys are always on "alert"
line 2736
;2736:					self->s.torsoAnim = BOTH_WALK1;
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
CNSTI4 822
ASGNI4
line 2737
;2737:					self->s.legsAnim = BOTH_WALK1;
ADDRFP4 0
INDIRP4
CNSTI4 280
ADDP4
CNSTI4 822
ASGNI4
line 2738
;2738:				}
ADDRGP4 $1118
JUMPV
LABELV $1119
line 2740
;2739:				else
;2740:				{
line 2741
;2741:					self->s.torsoAnim = BOTH_ATTACK3;
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
CNSTI4 120
ASGNI4
line 2742
;2742:					self->s.legsAnim = BOTH_RUN2;
ADDRFP4 0
INDIRP4
CNSTI4 280
ADDP4
CNSTI4 836
ASGNI4
line 2743
;2743:				}
line 2744
;2744:			}
ADDRGP4 $1118
JUMPV
LABELV $1117
line 2746
;2745:			else
;2746:			{
line 2747
;2747:				self->s.torsoAnim = BOTH_ATTACK3;
ADDRFP4 0
INDIRP4
CNSTI4 284
ADDP4
CNSTI4 120
ASGNI4
line 2748
;2748:				self->s.legsAnim = BOTH_STAND3;
ADDRFP4 0
INDIRP4
CNSTI4 280
ADDP4
CNSTI4 576
ASGNI4
line 2749
;2749:			}
LABELV $1118
line 2751
;2750:
;2751:			ExampleAnimEntWeaponHandling(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 ExampleAnimEntWeaponHandling
CALLV
pop
line 2752
;2752:		}
line 2753
;2753:	}
ADDRGP4 $948
JUMPV
LABELV $947
line 2755
;2754:	else
;2755:	{
line 2756
;2756:		if (self->bolt_Head < level.time)
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
ADDRGP4 level+32
INDIRI4
GEI4 $1121
line 2757
;2757:		{
line 2758
;2758:			self->think = G_FreeEntity;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 G_FreeEntity
ASGNP4
line 2759
;2759:			self->nextthink = level.time;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
ASGNI4
line 2760
;2760:			return;
ADDRGP4 $934
JUMPV
LABELV $1121
line 2762
;2761:		}
;2762:	}
LABELV $948
line 2764
;2763:
;2764:	VectorCopy(self->s.apos.trBase, preserveAngles);
ADDRLP4 0
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
INDIRB
ASGNB 12
line 2765
;2765:	G_RunObject(self);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_RunObject
CALLV
pop
line 2766
;2766:	VectorCopy(preserveAngles, self->s.apos.trBase);
ADDRFP4 0
INDIRP4
CNSTI4 60
ADDP4
ADDRLP4 0
INDIRB
ASGNB 12
line 2767
;2767:}
LABELV $934
endproc ExampleAnimEntUpdateSelf 176 16
export G_SpawnExampleAnimEnt
proc G_SpawnExampleAnimEnt 84 20
line 2770
;2768:
;2769:void G_SpawnExampleAnimEnt(vec3_t pos, int aeType, animentCustomInfo_t *aeInfo)
;2770:{
line 2775
;2771:	gentity_t *animEnt;
;2772:	vec3_t playerMins;
;2773:	vec3_t playerMaxs;
;2774:
;2775:	VectorSet(playerMins, -15, -15, DEFAULT_MINS_2);
ADDRLP4 28
CNSTF4 3245342720
ASGNF4
ADDRLP4 4
ADDRLP4 28
INDIRF4
ASGNF4
ADDRLP4 4+4
ADDRLP4 28
INDIRF4
ASGNF4
ADDRLP4 4+8
CNSTF4 3250585600
ASGNF4
line 2776
;2776:	VectorSet(playerMaxs, 15, 15, DEFAULT_MAXS_2);
ADDRLP4 32
CNSTF4 1097859072
ASGNF4
ADDRLP4 16
ADDRLP4 32
INDIRF4
ASGNF4
ADDRLP4 16+4
ADDRLP4 32
INDIRF4
ASGNF4
ADDRLP4 16+8
CNSTF4 1109393408
ASGNF4
line 2778
;2777:
;2778:	if (aeType == ANIMENT_TYPE_STORMTROOPER)
ADDRFP4 4
INDIRI4
CNSTI4 0
NEI4 $1130
line 2779
;2779:	{
line 2780
;2780:		if (!gTrooperSound_Pain[0])
ADDRGP4 gTrooperSound_Pain
INDIRI4
CNSTI4 0
NEI4 $1131
line 2781
;2781:		{
line 2782
;2782:			gTrooperSound_Pain[0] = G_SoundIndex("sound/chars/st1/misc/pain25");
ADDRGP4 $1134
ARGP4
ADDRLP4 36
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain
ADDRLP4 36
INDIRI4
ASGNI4
line 2783
;2783:			gTrooperSound_Pain[1] = G_SoundIndex("sound/chars/st1/misc/pain50");
ADDRGP4 $1136
ARGP4
ADDRLP4 40
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain+4
ADDRLP4 40
INDIRI4
ASGNI4
line 2784
;2784:			gTrooperSound_Pain[2] = G_SoundIndex("sound/chars/st1/misc/pain75");
ADDRGP4 $1138
ARGP4
ADDRLP4 44
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain+8
ADDRLP4 44
INDIRI4
ASGNI4
line 2785
;2785:			gTrooperSound_Pain[3] = G_SoundIndex("sound/chars/st1/misc/pain100");
ADDRGP4 $1140
ARGP4
ADDRLP4 48
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain+12
ADDRLP4 48
INDIRI4
ASGNI4
line 2787
;2786:
;2787:			gTrooperSound_Death[0] = G_SoundIndex("sound/chars/st1/misc/death1");
ADDRGP4 $1141
ARGP4
ADDRLP4 52
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Death
ADDRLP4 52
INDIRI4
ASGNI4
line 2788
;2788:			gTrooperSound_Death[1] = G_SoundIndex("sound/chars/st1/misc/death2");
ADDRGP4 $1143
ARGP4
ADDRLP4 56
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Death+4
ADDRLP4 56
INDIRI4
ASGNI4
line 2789
;2789:			gTrooperSound_Death[2] = G_SoundIndex("sound/chars/st1/misc/death3");
ADDRGP4 $1145
ARGP4
ADDRLP4 60
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Death+8
ADDRLP4 60
INDIRI4
ASGNI4
line 2791
;2790:
;2791:			gTrooperSound_Alert[0] = G_SoundIndex("sound/chars/st1/misc/detected1");
ADDRGP4 $1146
ARGP4
ADDRLP4 64
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert
ADDRLP4 64
INDIRI4
ASGNI4
line 2792
;2792:			gTrooperSound_Alert[1] = G_SoundIndex("sound/chars/st1/misc/detected2");
ADDRGP4 $1148
ARGP4
ADDRLP4 68
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+4
ADDRLP4 68
INDIRI4
ASGNI4
line 2793
;2793:			gTrooperSound_Alert[2] = G_SoundIndex("sound/chars/st1/misc/detected3");
ADDRGP4 $1150
ARGP4
ADDRLP4 72
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+8
ADDRLP4 72
INDIRI4
ASGNI4
line 2794
;2794:			gTrooperSound_Alert[3] = G_SoundIndex("sound/chars/st1/misc/detected4");
ADDRGP4 $1152
ARGP4
ADDRLP4 76
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+12
ADDRLP4 76
INDIRI4
ASGNI4
line 2795
;2795:			gTrooperSound_Alert[4] = G_SoundIndex("sound/chars/st1/misc/detected5");
ADDRGP4 $1154
ARGP4
ADDRLP4 80
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+16
ADDRLP4 80
INDIRI4
ASGNI4
line 2796
;2796:		}
line 2797
;2797:	}
ADDRGP4 $1131
JUMPV
LABELV $1130
line 2798
;2798:	else if (aeType == ANIMENT_TYPE_RODIAN)
ADDRFP4 4
INDIRI4
CNSTI4 1
NEI4 $1155
line 2799
;2799:	{
line 2800
;2800:		if (!gRodianSound_Pain[0])
ADDRGP4 gRodianSound_Pain
INDIRI4
CNSTI4 0
NEI4 $1156
line 2801
;2801:		{
line 2802
;2802:			gRodianSound_Pain[0] = G_SoundIndex("sound/chars/rodian1/misc/pain25");
ADDRGP4 $1159
ARGP4
ADDRLP4 36
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain
ADDRLP4 36
INDIRI4
ASGNI4
line 2803
;2803:			gRodianSound_Pain[1] = G_SoundIndex("sound/chars/rodian1/misc/pain50");
ADDRGP4 $1161
ARGP4
ADDRLP4 40
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain+4
ADDRLP4 40
INDIRI4
ASGNI4
line 2804
;2804:			gRodianSound_Pain[2] = G_SoundIndex("sound/chars/rodian1/misc/pain75");
ADDRGP4 $1163
ARGP4
ADDRLP4 44
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain+8
ADDRLP4 44
INDIRI4
ASGNI4
line 2805
;2805:			gRodianSound_Pain[3] = G_SoundIndex("sound/chars/rodian1/misc/pain100");
ADDRGP4 $1165
ARGP4
ADDRLP4 48
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain+12
ADDRLP4 48
INDIRI4
ASGNI4
line 2807
;2806:
;2807:			gRodianSound_Death[0] = G_SoundIndex("sound/chars/rodian1/misc/death1");
ADDRGP4 $1166
ARGP4
ADDRLP4 52
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Death
ADDRLP4 52
INDIRI4
ASGNI4
line 2808
;2808:			gRodianSound_Death[1] = G_SoundIndex("sound/chars/rodian1/misc/death2");
ADDRGP4 $1168
ARGP4
ADDRLP4 56
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Death+4
ADDRLP4 56
INDIRI4
ASGNI4
line 2809
;2809:			gRodianSound_Death[2] = G_SoundIndex("sound/chars/rodian1/misc/death3");
ADDRGP4 $1170
ARGP4
ADDRLP4 60
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Death+8
ADDRLP4 60
INDIRI4
ASGNI4
line 2811
;2810:
;2811:			gRodianSound_Alert[0] = G_SoundIndex("sound/chars/rodian1/misc/detected1");
ADDRGP4 $1171
ARGP4
ADDRLP4 64
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert
ADDRLP4 64
INDIRI4
ASGNI4
line 2812
;2812:			gRodianSound_Alert[1] = G_SoundIndex("sound/chars/rodian1/misc/detected2");
ADDRGP4 $1173
ARGP4
ADDRLP4 68
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+4
ADDRLP4 68
INDIRI4
ASGNI4
line 2813
;2813:			gRodianSound_Alert[2] = G_SoundIndex("sound/chars/rodian1/misc/detected3");
ADDRGP4 $1175
ARGP4
ADDRLP4 72
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+8
ADDRLP4 72
INDIRI4
ASGNI4
line 2814
;2814:			gRodianSound_Alert[3] = G_SoundIndex("sound/chars/rodian1/misc/detected4");
ADDRGP4 $1177
ARGP4
ADDRLP4 76
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+12
ADDRLP4 76
INDIRI4
ASGNI4
line 2815
;2815:			gRodianSound_Alert[4] = G_SoundIndex("sound/chars/rodian1/misc/detected5");
ADDRGP4 $1179
ARGP4
ADDRLP4 80
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+16
ADDRLP4 80
INDIRI4
ASGNI4
line 2816
;2816:		}
line 2817
;2817:	}
ADDRGP4 $1156
JUMPV
LABELV $1155
line 2818
;2818:	else if (aeType == ANIMENT_TYPE_JAN)
ADDRFP4 4
INDIRI4
CNSTI4 2
NEI4 $1180
line 2819
;2819:	{
line 2820
;2820:		if (!gJanSound_Pain[0])
ADDRGP4 gJanSound_Pain
INDIRI4
CNSTI4 0
NEI4 $1182
line 2821
;2821:		{
line 2822
;2822:			gJanSound_Pain[0] = G_SoundIndex("sound/chars/jan/misc/pain25");
ADDRGP4 $1184
ARGP4
ADDRLP4 36
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain
ADDRLP4 36
INDIRI4
ASGNI4
line 2823
;2823:			gJanSound_Pain[1] = G_SoundIndex("sound/chars/jan/misc/pain50");
ADDRGP4 $1186
ARGP4
ADDRLP4 40
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain+4
ADDRLP4 40
INDIRI4
ASGNI4
line 2824
;2824:			gJanSound_Pain[2] = G_SoundIndex("sound/chars/jan/misc/pain75");
ADDRGP4 $1188
ARGP4
ADDRLP4 44
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain+8
ADDRLP4 44
INDIRI4
ASGNI4
line 2825
;2825:			gJanSound_Pain[3] = G_SoundIndex("sound/chars/jan/misc/pain100");
ADDRGP4 $1190
ARGP4
ADDRLP4 48
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain+12
ADDRLP4 48
INDIRI4
ASGNI4
line 2827
;2826:
;2827:			gJanSound_Death[0] = G_SoundIndex("sound/chars/jan/misc/death1");
ADDRGP4 $1191
ARGP4
ADDRLP4 52
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Death
ADDRLP4 52
INDIRI4
ASGNI4
line 2828
;2828:			gJanSound_Death[1] = G_SoundIndex("sound/chars/jan/misc/death2");
ADDRGP4 $1193
ARGP4
ADDRLP4 56
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Death+4
ADDRLP4 56
INDIRI4
ASGNI4
line 2829
;2829:			gJanSound_Death[2] = G_SoundIndex("sound/chars/jan/misc/death3");
ADDRGP4 $1195
ARGP4
ADDRLP4 60
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Death+8
ADDRLP4 60
INDIRI4
ASGNI4
line 2831
;2830:
;2831:			gJanSound_Alert[0] = G_SoundIndex("sound/chars/jan/misc/detected1");
ADDRGP4 $1196
ARGP4
ADDRLP4 64
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert
ADDRLP4 64
INDIRI4
ASGNI4
line 2832
;2832:			gJanSound_Alert[1] = G_SoundIndex("sound/chars/jan/misc/detected2");
ADDRGP4 $1198
ARGP4
ADDRLP4 68
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+4
ADDRLP4 68
INDIRI4
ASGNI4
line 2833
;2833:			gJanSound_Alert[2] = G_SoundIndex("sound/chars/jan/misc/detected3");
ADDRGP4 $1200
ARGP4
ADDRLP4 72
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+8
ADDRLP4 72
INDIRI4
ASGNI4
line 2834
;2834:			gJanSound_Alert[3] = G_SoundIndex("sound/chars/jan/misc/detected4");
ADDRGP4 $1202
ARGP4
ADDRLP4 76
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+12
ADDRLP4 76
INDIRI4
ASGNI4
line 2835
;2835:			gJanSound_Alert[4] = G_SoundIndex("sound/chars/jan/misc/detected5");
ADDRGP4 $1204
ARGP4
ADDRLP4 80
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+16
ADDRLP4 80
INDIRI4
ASGNI4
line 2836
;2836:		}
LABELV $1182
line 2837
;2837:	}
LABELV $1180
LABELV $1156
LABELV $1131
line 2839
;2838:
;2839:	animEnt = G_Spawn();
ADDRLP4 36
ADDRGP4 G_Spawn
CALLP4
ASGNP4
ADDRLP4 0
ADDRLP4 36
INDIRP4
ASGNP4
line 2841
;2840:
;2841:	animEnt->watertype = aeType; //set the animent type
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
ADDRFP4 4
INDIRI4
ASGNI4
line 2843
;2842:
;2843:	if (aeType == ANIMENT_TYPE_CUSTOM && aeInfo)
ADDRFP4 4
INDIRI4
CNSTI4 3
NEI4 $1205
ADDRFP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1205
line 2844
;2844:	{
line 2845
;2845:		ExampleAnimEntCustomDataEntry(animEnt, aeInfo->aeAlignment, aeInfo->aeWeapon, aeInfo->modelPath, aeInfo->soundPath);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 40
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 40
INDIRP4
INDIRI4
ARGI4
ADDRLP4 40
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
ARGI4
ADDRLP4 40
INDIRP4
CNSTI4 12
ADDP4
INDIRP4
ARGP4
ADDRLP4 40
INDIRP4
CNSTI4 16
ADDP4
INDIRP4
ARGP4
ADDRGP4 ExampleAnimEntCustomDataEntry
CALLV
pop
line 2846
;2846:		AnimEntCustomSoundPrecache(aeInfo);
ADDRFP4 8
INDIRP4
ARGP4
ADDRGP4 AnimEntCustomSoundPrecache
CALLV
pop
line 2847
;2847:	}
LABELV $1205
line 2849
;2848:
;2849:	animEnt->s.eType = ET_GRAPPLE; //ET_GRAPPLE is the reserved special type for G2 anim ents.
ADDRLP4 0
INDIRP4
CNSTI4 4
ADDP4
CNSTI4 13
ASGNI4
line 2851
;2850:
;2851:	if (animEnt->watertype == ANIMENT_TYPE_STORMTROOPER)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1207
line 2852
;2852:	{
line 2853
;2853:		animEnt->s.modelindex = G_ModelIndex( "models/players/stormtrooper/model.glm" );
ADDRGP4 $1209
ARGP4
ADDRLP4 40
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 2854
;2854:	}
ADDRGP4 $1208
JUMPV
LABELV $1207
line 2855
;2855:	else if (animEnt->watertype == ANIMENT_TYPE_RODIAN)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1210
line 2856
;2856:	{
line 2857
;2857:		animEnt->s.modelindex = G_ModelIndex( "models/players/rodian/model.glm" );
ADDRGP4 $1212
ARGP4
ADDRLP4 40
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 2858
;2858:	}
ADDRGP4 $1211
JUMPV
LABELV $1210
line 2859
;2859:	else if (animEnt->watertype == ANIMENT_TYPE_JAN)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 2
NEI4 $1213
line 2860
;2860:	{
line 2861
;2861:		animEnt->s.modelindex = G_ModelIndex( "models/players/jan/model.glm" );
ADDRGP4 $1215
ARGP4
ADDRLP4 40
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 40
INDIRI4
ASGNI4
line 2862
;2862:	}
ADDRGP4 $1214
JUMPV
LABELV $1213
line 2863
;2863:	else if (animEnt->watertype == ANIMENT_TYPE_CUSTOM)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1216
line 2864
;2864:	{
line 2865
;2865:		animentCustomInfo_t *aeInfo = ExampleAnimEntCustomData(animEnt);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 ExampleAnimEntCustomData
CALLP4
ASGNP4
ADDRLP4 40
ADDRLP4 44
INDIRP4
ASGNP4
line 2867
;2866:
;2867:		if (aeInfo)
ADDRLP4 40
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1218
line 2868
;2868:		{
line 2869
;2869:			animEnt->s.modelindex = G_ModelIndex(aeInfo->modelPath);
ADDRLP4 40
INDIRP4
CNSTI4 12
ADDP4
INDIRP4
ARGP4
ADDRLP4 48
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 48
INDIRI4
ASGNI4
line 2870
;2870:		}
ADDRGP4 $1217
JUMPV
LABELV $1218
line 2872
;2871:		else
;2872:		{
line 2873
;2873:			animEnt->s.modelindex = G_ModelIndex( "models/players/stormtrooper/model.glm" );
ADDRGP4 $1209
ARGP4
ADDRLP4 48
ADDRGP4 G_ModelIndex
CALLI4
ASGNI4
ADDRLP4 0
INDIRP4
CNSTI4 212
ADDP4
ADDRLP4 48
INDIRI4
ASGNI4
line 2874
;2874:		}
line 2875
;2875:	}
ADDRGP4 $1217
JUMPV
LABELV $1216
line 2877
;2876:	else
;2877:	{
line 2878
;2878:		G_Error("Unknown AnimEnt type!\n");
ADDRGP4 $1220
ARGP4
ADDRGP4 G_Error
CALLV
pop
line 2879
;2879:	}
LABELV $1217
LABELV $1214
LABELV $1211
LABELV $1208
line 2881
;2880:
;2881:	animEnt->s.g2radius = 100;
ADDRLP4 0
INDIRP4
CNSTI4 208
ADDP4
CNSTI4 100
ASGNI4
line 2883
;2882:
;2883:	if (animEnt->watertype == ANIMENT_TYPE_STORMTROOPER)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1221
line 2884
;2884:	{
line 2885
;2885:		animEnt->s.weapon = WP_BLASTER; //This will tell the client to stick a blaster in the model's hands upon model init.
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
CNSTI4 4
ASGNI4
line 2886
;2886:	}
ADDRGP4 $1222
JUMPV
LABELV $1221
line 2887
;2887:	else if (animEnt->watertype == ANIMENT_TYPE_RODIAN)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1223
line 2888
;2888:	{
line 2889
;2889:		animEnt->s.weapon = WP_DISRUPTOR; //These guys get disruptors instead of blasters.
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
CNSTI4 5
ASGNI4
line 2890
;2890:	}
ADDRGP4 $1224
JUMPV
LABELV $1223
line 2891
;2891:	else if (animEnt->watertype == ANIMENT_TYPE_JAN)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 2
NEI4 $1225
line 2892
;2892:	{
line 2893
;2893:		animEnt->s.weapon = WP_BLASTER;
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
CNSTI4 4
ASGNI4
line 2894
;2894:	}
ADDRGP4 $1226
JUMPV
LABELV $1225
line 2895
;2895:	else if (animEnt->watertype == ANIMENT_TYPE_CUSTOM)
ADDRLP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1227
line 2896
;2896:	{
line 2897
;2897:		animentCustomInfo_t *aeInfo = ExampleAnimEntCustomData(animEnt);
ADDRLP4 0
INDIRP4
ARGP4
ADDRLP4 44
ADDRGP4 ExampleAnimEntCustomData
CALLP4
ASGNP4
ADDRLP4 40
ADDRLP4 44
INDIRP4
ASGNP4
line 2899
;2898:
;2899:		if (aeInfo)
ADDRLP4 40
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1229
line 2900
;2900:		{
line 2901
;2901:			animEnt->s.weapon = aeInfo->aeWeapon;
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
ADDRLP4 40
INDIRP4
CNSTI4 8
ADDP4
INDIRI4
ASGNI4
line 2902
;2902:		}
ADDRGP4 $1230
JUMPV
LABELV $1229
line 2904
;2903:		else
;2904:		{
line 2905
;2905:			animEnt->s.weapon = WP_BLASTER;
ADDRLP4 0
INDIRP4
CNSTI4 276
ADDP4
CNSTI4 4
ASGNI4
line 2906
;2906:		}
LABELV $1230
line 2907
;2907:	}
LABELV $1227
LABELV $1226
LABELV $1224
LABELV $1222
line 2909
;2908:
;2909:	animEnt->s.modelGhoul2 = 1; //Deal with it like any other ghoul2 ent, as far as killing instances.
ADDRLP4 0
INDIRP4
CNSTI4 204
ADDP4
CNSTI4 1
ASGNI4
line 2911
;2910:
;2911:	G_SetOrigin(animEnt, pos);
ADDRLP4 0
INDIRP4
ARGP4
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_SetOrigin
CALLV
pop
line 2913
;2912:
;2913:	animEnt->classname = "g2animent";
ADDRLP4 0
INDIRP4
CNSTI4 416
ADDP4
ADDRGP4 $1231
ASGNP4
line 2915
;2914:			
;2915:	VectorCopy (playerMins, animEnt->r.mins);
ADDRLP4 0
INDIRP4
CNSTI4 316
ADDP4
ADDRLP4 4
INDIRB
ASGNB 12
line 2916
;2916:	VectorCopy (playerMaxs, animEnt->r.maxs);
ADDRLP4 0
INDIRP4
CNSTI4 328
ADDP4
ADDRLP4 16
INDIRB
ASGNB 12
line 2918
;2917:
;2918:	animEnt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
ADDRLP4 0
INDIRP4
CNSTI4 304
ADDP4
CNSTI4 128
ASGNI4
line 2920
;2919:
;2920:	animEnt->clipmask = MASK_PLAYERSOLID;
ADDRLP4 0
INDIRP4
CNSTI4 508
ADDP4
CNSTI4 273
ASGNI4
line 2921
;2921:	animEnt->r.contents = MASK_PLAYERSOLID;
ADDRLP4 0
INDIRP4
CNSTI4 340
ADDP4
CNSTI4 273
ASGNI4
line 2923
;2922:
;2923:	animEnt->takedamage = qtrue;
ADDRLP4 0
INDIRP4
CNSTI4 680
ADDP4
CNSTI4 1
ASGNI4
line 2925
;2924:
;2925:	animEnt->health = 60;
ADDRLP4 0
INDIRP4
CNSTI4 676
ADDP4
CNSTI4 60
ASGNI4
line 2927
;2926:
;2927:	animEnt->s.owner = MAX_CLIENTS+1;
ADDRLP4 0
INDIRP4
CNSTI4 260
ADDP4
CNSTI4 33
ASGNI4
line 2928
;2928:	animEnt->s.shouldtarget = qtrue;
ADDRLP4 0
INDIRP4
CNSTI4 268
ADDP4
CNSTI4 1
ASGNI4
line 2929
;2929:	animEnt->s.teamowner = 0;
ADDRLP4 0
INDIRP4
CNSTI4 264
ADDP4
CNSTI4 0
ASGNI4
line 2931
;2930:
;2931:	trap_LinkEntity(animEnt);
ADDRLP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 2933
;2932:
;2933:	animEnt->pain = ExampleAnimEnt_Pain;
ADDRLP4 0
INDIRP4
CNSTI4 656
ADDP4
ADDRGP4 ExampleAnimEnt_Pain
ASGNP4
line 2934
;2934:	animEnt->die = ExampleAnimEnt_Die;
ADDRLP4 0
INDIRP4
CNSTI4 660
ADDP4
ADDRGP4 ExampleAnimEnt_Die
ASGNP4
line 2936
;2935:
;2936:	animEnt->touch = ExampleAnimEntTouch;
ADDRLP4 0
INDIRP4
CNSTI4 648
ADDP4
ADDRGP4 ExampleAnimEntTouch
ASGNP4
line 2938
;2937:
;2938:	animEnt->think = ExampleAnimEntUpdateSelf;
ADDRLP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 ExampleAnimEntUpdateSelf
ASGNP4
line 2939
;2939:	animEnt->nextthink = level.time + 50;
ADDRLP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 50
ADDI4
ASGNI4
line 2941
;2940:
;2941:	animEnt->s.torsoAnim = BOTH_ATTACK3;
ADDRLP4 0
INDIRP4
CNSTI4 284
ADDP4
CNSTI4 120
ASGNI4
line 2942
;2942:	animEnt->s.legsAnim = BOTH_STAND3;
ADDRLP4 0
INDIRP4
CNSTI4 280
ADDP4
CNSTI4 576
ASGNI4
line 2945
;2943:
;2944:	//initialize the "AI" values
;2945:	animEnt->bolt_Waist = -1; //the waypoint index
ADDRLP4 0
INDIRP4
CNSTI4 804
ADDP4
CNSTI4 -1
ASGNI4
line 2946
;2946:	animEnt->bolt_Motion = ENTITYNUM_NONE; //the enemy index
ADDRLP4 0
INDIRP4
CNSTI4 808
ADDP4
CNSTI4 1023
ASGNI4
line 2947
;2947:	animEnt->splashMethodOfDeath = 0; //don't stand still while you have an enemy
ADDRLP4 0
INDIRP4
CNSTI4 708
ADDP4
CNSTI4 0
ASGNI4
line 2948
;2948:	animEnt->splashRadius = 0; //timer for randomly deciding to stand still
ADDRLP4 0
INDIRP4
CNSTI4 700
ADDP4
CNSTI4 0
ASGNI4
line 2949
;2949:	animEnt->boltpoint3 = 0; //running forward on the trail
ADDRLP4 0
INDIRP4
CNSTI4 776
ADDP4
CNSTI4 0
ASGNI4
line 2950
;2950:}
LABELV $1125
endproc G_SpawnExampleAnimEnt 84 20
data
export gEscaping
align 4
LABELV gEscaping
byte 4 0
export gEscapeTime
align 4
LABELV gEscapeTime
byte 4 0
export AESpawner_CountAnimEnts
code
proc AESpawner_CountAnimEnts 12 0
line 2957
;2951:
;2952:qboolean gEscaping = qfalse;
;2953:int gEscapeTime = 0;
;2954:
;2955:#ifdef ANIMENT_SPAWNER
;2956:int AESpawner_CountAnimEnts(gentity_t *spawner, qboolean onlySameType)
;2957:{
line 2958
;2958:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 2959
;2959:	int count = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
ADDRGP4 $1235
JUMPV
LABELV $1234
line 2962
;2960:
;2961:	while (i < MAX_GENTITIES)
;2962:	{
line 2963
;2963:		if (g_entities[i].inuse && g_entities[i].s.eType == ET_GRAPPLE)
ADDRLP4 8
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 8
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1237
ADDRLP4 8
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $1237
line 2964
;2964:		{
line 2965
;2965:			if (!onlySameType)
ADDRFP4 4
INDIRI4
CNSTI4 0
NEI4 $1241
line 2966
;2966:			{
line 2967
;2967:				count++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2968
;2968:			}
ADDRGP4 $1242
JUMPV
LABELV $1241
line 2970
;2969:			else
;2970:			{
line 2971
;2971:				if (spawner->watertype == g_entities[i].watertype)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+744
ADDP4
INDIRI4
NEI4 $1243
line 2972
;2972:				{
line 2973
;2973:					if (spawner->watertype == ANIMENT_TYPE_CUSTOM)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1246
line 2974
;2974:					{
line 2975
;2975:						if (spawner->waterlevel == g_entities[i].waterlevel)
ADDRFP4 0
INDIRP4
CNSTI4 748
ADDP4
INDIRI4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ADDRGP4 g_entities+748
ADDP4
INDIRI4
NEI4 $1247
line 2976
;2976:						{ //only count it if it's the same custom type template, indicated by equal "waterlevel" value.
line 2977
;2977:							count++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2978
;2978:						}
line 2979
;2979:					}
ADDRGP4 $1247
JUMPV
LABELV $1246
line 2981
;2980:					else
;2981:					{
line 2982
;2982:						count++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2983
;2983:					}
LABELV $1247
line 2984
;2984:				}
LABELV $1243
line 2985
;2985:			}
LABELV $1242
line 2986
;2986:		}
LABELV $1237
line 2987
;2987:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 2988
;2988:	}
LABELV $1235
line 2961
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $1234
line 2990
;2989:
;2990:	return count;
ADDRLP4 4
INDIRI4
RETI4
LABELV $1233
endproc AESpawner_CountAnimEnts 12 0
export AESpawner_NoClientInPVS
proc AESpawner_NoClientInPVS 12 8
line 2994
;2991:}
;2992:
;2993:qboolean AESpawner_NoClientInPVS(gentity_t *ent)
;2994:{
line 2995
;2995:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
ADDRGP4 $1253
JUMPV
LABELV $1252
line 2998
;2996:
;2997:	while (i < MAX_CLIENTS)
;2998:	{
line 2999
;2999:		if (g_entities[i].inuse &&
ADDRLP4 4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1255
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1255
ADDRFP4 0
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
ADDRLP4 8
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 8
INDIRI4
CNSTI4 0
EQI4 $1255
line 3002
;3000:			g_entities[i].client &&
;3001:			trap_InPVS(ent->s.origin, g_entities[i].client->ps.origin))
;3002:		{
line 3003
;3003:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $1251
JUMPV
LABELV $1255
line 3006
;3004:		}
;3005:
;3006:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 3007
;3007:	}
LABELV $1253
line 2997
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $1252
line 3009
;3008:
;3009:	return qtrue;
CNSTI4 1
RETI4
LABELV $1251
endproc AESpawner_NoClientInPVS 12 8
export AESpawner_PassAnimEntPVSCheck
proc AESpawner_PassAnimEntPVSCheck 16 8
line 3013
;3010:}
;3011:
;3012:qboolean AESpawner_PassAnimEntPVSCheck(gentity_t *ent)
;3013:{
line 3014
;3014:	int count = 0;
ADDRLP4 4
CNSTI4 0
ASGNI4
line 3015
;3015:	int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3017
;3016:
;3017:	if (!ent->bolt_LArm)
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1264
line 3018
;3018:	{ //unlimited
line 3019
;3019:		return qtrue;
CNSTI4 1
RETI4
ADDRGP4 $1260
JUMPV
LABELV $1263
line 3023
;3020:	}
;3021:
;3022:	while (i < MAX_GENTITIES)
;3023:	{
line 3024
;3024:		if (g_entities[i].inuse && g_entities[i].s.eType == ET_GRAPPLE &&
ADDRLP4 8
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 8
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1266
ADDRLP4 8
INDIRI4
ADDRGP4 g_entities+4
ADDP4
INDIRI4
CNSTI4 13
NEI4 $1266
ADDRFP4 0
INDIRP4
CNSTI4 368
ADDP4
ARGP4
ADDRLP4 8
INDIRI4
ADDRGP4 g_entities+296+72
ADDP4
ARGP4
ADDRLP4 12
ADDRGP4 trap_InPVS
CALLI4
ASGNI4
ADDRLP4 12
INDIRI4
CNSTI4 0
EQI4 $1266
line 3026
;3025:			trap_InPVS(ent->r.currentOrigin, g_entities[i].r.currentOrigin))
;3026:		{
line 3027
;3027:			count++;
ADDRLP4 4
ADDRLP4 4
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 3028
;3028:		}
LABELV $1266
line 3030
;3029:
;3030:		if (count >= ent->bolt_LArm)
ADDRLP4 4
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
INDIRI4
LTI4 $1272
line 3031
;3031:		{ //too many in this pvs..
line 3032
;3032:			return qfalse;
CNSTI4 0
RETI4
ADDRGP4 $1260
JUMPV
LABELV $1272
line 3034
;3033:		}
;3034:		i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 3035
;3035:	}
LABELV $1264
line 3022
ADDRLP4 0
INDIRI4
CNSTI4 1024
LTI4 $1263
line 3037
;3036:
;3037:	return qtrue;
CNSTI4 1
RETI4
LABELV $1260
endproc AESpawner_PassAnimEntPVSCheck 16 8
export AESpawner_Think
proc AESpawner_Think 1144 28
line 3041
;3038:}
;3039:
;3040:void AESpawner_Think(gentity_t *ent)
;3041:{
line 3043
;3042:	int animEntCount;
;3043:	animentCustomInfo_t *aeInfo = NULL;
ADDRLP4 4
CNSTP4 0
ASGNP4
line 3045
;3044:
;3045:	if (gBotEdit)
ADDRGP4 gBotEdit
INDIRF4
CNSTF4 0
EQF4 $1275
line 3046
;3046:	{
line 3047
;3047:		ent->nextthink = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 3048
;3048:		return;
ADDRGP4 $1274
JUMPV
LABELV $1275
line 3051
;3049:	}
;3050:
;3051:	if (!ent->bolt_LLeg)
ADDRFP4 0
INDIRP4
CNSTI4 796
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1278
line 3052
;3052:	{
line 3053
;3053:		animEntCount = -1;
ADDRLP4 0
CNSTI4 -1
ASGNI4
line 3054
;3054:	}
ADDRGP4 $1279
JUMPV
LABELV $1278
line 3056
;3055:	else
;3056:	{
line 3057
;3057:		qboolean onlySameType = qfalse;
ADDRLP4 8
CNSTI4 0
ASGNI4
line 3059
;3058:
;3059:		if (ent->bolt_RLeg)
ADDRFP4 0
INDIRP4
CNSTI4 800
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1280
line 3060
;3060:		{
line 3061
;3061:			onlySameType = qtrue;
ADDRLP4 8
CNSTI4 1
ASGNI4
line 3062
;3062:		}
LABELV $1280
line 3063
;3063:		animEntCount = AESpawner_CountAnimEnts(ent, onlySameType);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 8
INDIRI4
ARGI4
ADDRLP4 12
ADDRGP4 AESpawner_CountAnimEnts
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 12
INDIRI4
ASGNI4
line 3064
;3064:	}
LABELV $1279
line 3066
;3065:
;3066:	if (animEntCount < ent->bolt_LLeg)
ADDRLP4 0
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 796
ADDP4
INDIRI4
GEI4 $1282
line 3067
;3067:	{
line 3072
;3068:		trace_t tr;
;3069:		vec3_t playerMins;
;3070:		vec3_t playerMaxs;
;3071:
;3072:		VectorSet(playerMins, -15, -15, DEFAULT_MINS_2);
ADDRLP4 1112
CNSTF4 3245342720
ASGNF4
ADDRLP4 8
ADDRLP4 1112
INDIRF4
ASGNF4
ADDRLP4 8+4
ADDRLP4 1112
INDIRF4
ASGNF4
ADDRLP4 8+8
CNSTF4 3250585600
ASGNF4
line 3073
;3073:		VectorSet(playerMaxs, 15, 15, DEFAULT_MAXS_2);
ADDRLP4 1116
CNSTF4 1097859072
ASGNF4
ADDRLP4 20
ADDRLP4 1116
INDIRF4
ASGNF4
ADDRLP4 20+4
ADDRLP4 1116
INDIRF4
ASGNF4
ADDRLP4 20+8
CNSTF4 1109393408
ASGNF4
line 3075
;3074:
;3075:		trap_Trace(&tr, ent->s.origin, playerMins, playerMaxs, ent->s.origin, ent->s.number, MASK_PLAYERSOLID);
ADDRLP4 32
ARGP4
ADDRLP4 1120
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1124
ADDRLP4 1120
INDIRP4
CNSTI4 92
ADDP4
ASGNP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRLP4 8
ARGP4
ADDRLP4 20
ARGP4
ADDRLP4 1124
INDIRP4
ARGP4
ADDRLP4 1120
INDIRP4
INDIRI4
ARGI4
CNSTI4 273
ARGI4
ADDRGP4 trap_Trace
CALLV
pop
line 3077
;3076:
;3077:		if (tr.fraction == 1)
ADDRLP4 32+8
INDIRF4
CNSTF4 1065353216
NEF4 $1288
line 3078
;3078:		{
line 3079
;3079:			if (ent->bolt_Head || AESpawner_NoClientInPVS(ent))
ADDRLP4 1128
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1128
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1293
ADDRLP4 1128
INDIRP4
ARGP4
ADDRLP4 1132
ADDRGP4 AESpawner_NoClientInPVS
CALLI4
ASGNI4
ADDRLP4 1132
INDIRI4
CNSTI4 0
EQI4 $1291
LABELV $1293
line 3080
;3080:			{
line 3081
;3081:				if (AESpawner_PassAnimEntPVSCheck(ent))
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1136
ADDRGP4 AESpawner_PassAnimEntPVSCheck
CALLI4
ASGNI4
ADDRLP4 1136
INDIRI4
CNSTI4 0
EQI4 $1294
line 3082
;3082:				{
line 3083
;3083:					if (ent->watertype == ANIMENT_TYPE_CUSTOM)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1296
line 3084
;3084:					{
line 3085
;3085:						aeInfo = ExampleAnimEntCustomData(ent); //we can get this info from the spawner, because it has its waterlevel set too.
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 1140
ADDRGP4 ExampleAnimEntCustomData
CALLP4
ASGNP4
ADDRLP4 4
ADDRLP4 1140
INDIRP4
ASGNP4
line 3086
;3086:					}
LABELV $1296
line 3087
;3087:					G_SpawnExampleAnimEnt(ent->s.origin, ent->watertype, aeInfo);
ADDRLP4 1140
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 1140
INDIRP4
CNSTI4 92
ADDP4
ARGP4
ADDRLP4 1140
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
ARGI4
ADDRLP4 4
INDIRP4
ARGP4
ADDRGP4 G_SpawnExampleAnimEnt
CALLV
pop
line 3088
;3088:				}
LABELV $1294
line 3089
;3089:			}
LABELV $1291
line 3090
;3090:		}
LABELV $1288
line 3091
;3091:	}
LABELV $1282
line 3093
;3092:
;3093:	ent->nextthink = level.time + 1000;
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
CNSTI4 1000
ADDI4
ASGNI4
line 3094
;3094:}
LABELV $1274
endproc AESpawner_Think 1144 28
export SP_misc_animent_spawner
proc SP_misc_animent_spawner 48 20
line 3097
;3095:
;3096:void SP_misc_animent_spawner(gentity_t *ent)
;3097:{
line 3098
;3098:	if (g_gametype.integer != GT_SINGLE_PLAYER)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 4
EQI4 $1300
line 3099
;3099:	{
line 3100
;3100:		G_FreeEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 3101
;3101:		return;
ADDRGP4 $1299
JUMPV
LABELV $1300
line 3104
;3102:	}
;3103:
;3104:	G_SpawnInt( "spawninpvs", "0", &ent->bolt_Head );
ADDRGP4 $1303
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3106
;3105:	//If this is non-0, the spawner will spawn even if a client is in the PVS
;3106:	G_SpawnInt( "othersinpvs", "3", &ent->bolt_LArm);
ADDRGP4 $1304
ARGP4
ADDRGP4 $1305
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3109
;3107:	//Don't spawn more than this many animents in the PVS of this spawner.
;3108:	//If 0, the amount is unlimited.
;3109:	G_SpawnInt( "totalspawn", "12", &ent->bolt_LLeg);
ADDRGP4 $1306
ARGP4
ADDRGP4 $1307
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 796
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3112
;3110:	//Only spawn if less than or equal to this many ents active globally.
;3111:	//0 is unlimited, but that could cause horrible disaster.
;3112:	G_SpawnInt( "spawntype", "0", &ent->watertype);
ADDRGP4 $1308
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3114
;3113:	//Spawn type. 0 is stormtrooper, 1 is rodian.
;3114:	G_SpawnInt( "sametype", "1", &ent->bolt_RLeg);
ADDRGP4 $1309
ARGP4
ADDRGP4 $1310
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 800
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3119
;3115:	//If 1, only counts other animates of the same type for deciding whether or not to spawn (as opposed to all types).
;3116:	//Default is 1.
;3117:
;3118:	//Just precache the assets now
;3119:	if (ent->watertype == ANIMENT_TYPE_STORMTROOPER)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1311
line 3120
;3120:	{
line 3121
;3121:		gTrooperSound_Pain[0] = G_SoundIndex("sound/chars/st1/misc/pain25");
ADDRGP4 $1134
ARGP4
ADDRLP4 0
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain
ADDRLP4 0
INDIRI4
ASGNI4
line 3122
;3122:		gTrooperSound_Pain[1] = G_SoundIndex("sound/chars/st1/misc/pain50");
ADDRGP4 $1136
ARGP4
ADDRLP4 4
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain+4
ADDRLP4 4
INDIRI4
ASGNI4
line 3123
;3123:		gTrooperSound_Pain[2] = G_SoundIndex("sound/chars/st1/misc/pain75");
ADDRGP4 $1138
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain+8
ADDRLP4 8
INDIRI4
ASGNI4
line 3124
;3124:		gTrooperSound_Pain[3] = G_SoundIndex("sound/chars/st1/misc/pain100");
ADDRGP4 $1140
ARGP4
ADDRLP4 12
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Pain+12
ADDRLP4 12
INDIRI4
ASGNI4
line 3126
;3125:
;3126:		gTrooperSound_Death[0] = G_SoundIndex("sound/chars/st1/misc/death1");
ADDRGP4 $1141
ARGP4
ADDRLP4 16
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Death
ADDRLP4 16
INDIRI4
ASGNI4
line 3127
;3127:		gTrooperSound_Death[1] = G_SoundIndex("sound/chars/st1/misc/death2");
ADDRGP4 $1143
ARGP4
ADDRLP4 20
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Death+4
ADDRLP4 20
INDIRI4
ASGNI4
line 3128
;3128:		gTrooperSound_Death[2] = G_SoundIndex("sound/chars/st1/misc/death3");
ADDRGP4 $1145
ARGP4
ADDRLP4 24
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Death+8
ADDRLP4 24
INDIRI4
ASGNI4
line 3130
;3129:
;3130:		gTrooperSound_Alert[0] = G_SoundIndex("sound/chars/st1/misc/detected1");
ADDRGP4 $1146
ARGP4
ADDRLP4 28
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert
ADDRLP4 28
INDIRI4
ASGNI4
line 3131
;3131:		gTrooperSound_Alert[1] = G_SoundIndex("sound/chars/st1/misc/detected2");
ADDRGP4 $1148
ARGP4
ADDRLP4 32
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+4
ADDRLP4 32
INDIRI4
ASGNI4
line 3132
;3132:		gTrooperSound_Alert[2] = G_SoundIndex("sound/chars/st1/misc/detected3");
ADDRGP4 $1150
ARGP4
ADDRLP4 36
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+8
ADDRLP4 36
INDIRI4
ASGNI4
line 3133
;3133:		gTrooperSound_Alert[3] = G_SoundIndex("sound/chars/st1/misc/detected4");
ADDRGP4 $1152
ARGP4
ADDRLP4 40
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+12
ADDRLP4 40
INDIRI4
ASGNI4
line 3134
;3134:		gTrooperSound_Alert[4] = G_SoundIndex("sound/chars/st1/misc/detected5");
ADDRGP4 $1154
ARGP4
ADDRLP4 44
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gTrooperSound_Alert+16
ADDRLP4 44
INDIRI4
ASGNI4
line 3136
;3135:
;3136:		G_ModelIndex( "models/players/stormtrooper/model.glm" );
ADDRGP4 $1209
ARGP4
ADDRGP4 G_ModelIndex
CALLI4
pop
line 3137
;3137:	}
ADDRGP4 $1312
JUMPV
LABELV $1311
line 3138
;3138:	else if (ent->watertype == ANIMENT_TYPE_RODIAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 1
NEI4 $1322
line 3139
;3139:	{
line 3140
;3140:		gRodianSound_Pain[0] = G_SoundIndex("sound/chars/rodian1/misc/pain25");
ADDRGP4 $1159
ARGP4
ADDRLP4 0
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain
ADDRLP4 0
INDIRI4
ASGNI4
line 3141
;3141:		gRodianSound_Pain[1] = G_SoundIndex("sound/chars/rodian1/misc/pain50");
ADDRGP4 $1161
ARGP4
ADDRLP4 4
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain+4
ADDRLP4 4
INDIRI4
ASGNI4
line 3142
;3142:		gRodianSound_Pain[2] = G_SoundIndex("sound/chars/rodian1/misc/pain75");
ADDRGP4 $1163
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain+8
ADDRLP4 8
INDIRI4
ASGNI4
line 3143
;3143:		gRodianSound_Pain[3] = G_SoundIndex("sound/chars/rodian1/misc/pain100");
ADDRGP4 $1165
ARGP4
ADDRLP4 12
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Pain+12
ADDRLP4 12
INDIRI4
ASGNI4
line 3145
;3144:
;3145:		gRodianSound_Death[0] = G_SoundIndex("sound/chars/rodian1/misc/death1");
ADDRGP4 $1166
ARGP4
ADDRLP4 16
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Death
ADDRLP4 16
INDIRI4
ASGNI4
line 3146
;3146:		gRodianSound_Death[1] = G_SoundIndex("sound/chars/rodian1/misc/death2");
ADDRGP4 $1168
ARGP4
ADDRLP4 20
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Death+4
ADDRLP4 20
INDIRI4
ASGNI4
line 3147
;3147:		gRodianSound_Death[2] = G_SoundIndex("sound/chars/rodian1/misc/death3");
ADDRGP4 $1170
ARGP4
ADDRLP4 24
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Death+8
ADDRLP4 24
INDIRI4
ASGNI4
line 3149
;3148:
;3149:		gRodianSound_Alert[0] = G_SoundIndex("sound/chars/rodian1/misc/detected1");
ADDRGP4 $1171
ARGP4
ADDRLP4 28
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert
ADDRLP4 28
INDIRI4
ASGNI4
line 3150
;3150:		gRodianSound_Alert[1] = G_SoundIndex("sound/chars/rodian1/misc/detected2");
ADDRGP4 $1173
ARGP4
ADDRLP4 32
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+4
ADDRLP4 32
INDIRI4
ASGNI4
line 3151
;3151:		gRodianSound_Alert[2] = G_SoundIndex("sound/chars/rodian1/misc/detected3");
ADDRGP4 $1175
ARGP4
ADDRLP4 36
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+8
ADDRLP4 36
INDIRI4
ASGNI4
line 3152
;3152:		gRodianSound_Alert[3] = G_SoundIndex("sound/chars/rodian1/misc/detected4");
ADDRGP4 $1177
ARGP4
ADDRLP4 40
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+12
ADDRLP4 40
INDIRI4
ASGNI4
line 3153
;3153:		gRodianSound_Alert[4] = G_SoundIndex("sound/chars/rodian1/misc/detected5");
ADDRGP4 $1179
ARGP4
ADDRLP4 44
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gRodianSound_Alert+16
ADDRLP4 44
INDIRI4
ASGNI4
line 3155
;3154:
;3155:		G_ModelIndex( "models/players/rodian/model.glm" );
ADDRGP4 $1212
ARGP4
ADDRGP4 G_ModelIndex
CALLI4
pop
line 3156
;3156:	}
ADDRGP4 $1323
JUMPV
LABELV $1322
line 3157
;3157:	else if (ent->watertype == ANIMENT_TYPE_JAN)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 2
NEI4 $1333
line 3158
;3158:	{
line 3159
;3159:		gJanSound_Pain[0] = G_SoundIndex("sound/chars/jan/misc/pain25");
ADDRGP4 $1184
ARGP4
ADDRLP4 0
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain
ADDRLP4 0
INDIRI4
ASGNI4
line 3160
;3160:		gJanSound_Pain[1] = G_SoundIndex("sound/chars/jan/misc/pain50");
ADDRGP4 $1186
ARGP4
ADDRLP4 4
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain+4
ADDRLP4 4
INDIRI4
ASGNI4
line 3161
;3161:		gJanSound_Pain[2] = G_SoundIndex("sound/chars/jan/misc/pain75");
ADDRGP4 $1188
ARGP4
ADDRLP4 8
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain+8
ADDRLP4 8
INDIRI4
ASGNI4
line 3162
;3162:		gJanSound_Pain[3] = G_SoundIndex("sound/chars/jan/misc/pain100");
ADDRGP4 $1190
ARGP4
ADDRLP4 12
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Pain+12
ADDRLP4 12
INDIRI4
ASGNI4
line 3164
;3163:
;3164:		gJanSound_Death[0] = G_SoundIndex("sound/chars/jan/misc/death1");
ADDRGP4 $1191
ARGP4
ADDRLP4 16
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Death
ADDRLP4 16
INDIRI4
ASGNI4
line 3165
;3165:		gJanSound_Death[1] = G_SoundIndex("sound/chars/jan/misc/death2");
ADDRGP4 $1193
ARGP4
ADDRLP4 20
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Death+4
ADDRLP4 20
INDIRI4
ASGNI4
line 3166
;3166:		gJanSound_Death[2] = G_SoundIndex("sound/chars/jan/misc/death3");
ADDRGP4 $1195
ARGP4
ADDRLP4 24
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Death+8
ADDRLP4 24
INDIRI4
ASGNI4
line 3168
;3167:
;3168:		gJanSound_Alert[0] = G_SoundIndex("sound/chars/jan/misc/detected1");
ADDRGP4 $1196
ARGP4
ADDRLP4 28
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert
ADDRLP4 28
INDIRI4
ASGNI4
line 3169
;3169:		gJanSound_Alert[1] = G_SoundIndex("sound/chars/jan/misc/detected2");
ADDRGP4 $1198
ARGP4
ADDRLP4 32
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+4
ADDRLP4 32
INDIRI4
ASGNI4
line 3170
;3170:		gJanSound_Alert[2] = G_SoundIndex("sound/chars/jan/misc/detected3");
ADDRGP4 $1200
ARGP4
ADDRLP4 36
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+8
ADDRLP4 36
INDIRI4
ASGNI4
line 3171
;3171:		gJanSound_Alert[3] = G_SoundIndex("sound/chars/jan/misc/detected4");
ADDRGP4 $1202
ARGP4
ADDRLP4 40
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+12
ADDRLP4 40
INDIRI4
ASGNI4
line 3172
;3172:		gJanSound_Alert[4] = G_SoundIndex("sound/chars/jan/misc/detected5");
ADDRGP4 $1204
ARGP4
ADDRLP4 44
ADDRGP4 G_SoundIndex
CALLI4
ASGNI4
ADDRGP4 gJanSound_Alert+16
ADDRLP4 44
INDIRI4
ASGNI4
line 3174
;3173:
;3174:		G_ModelIndex( "models/players/jan/model.glm" );
ADDRGP4 $1215
ARGP4
ADDRGP4 G_ModelIndex
CALLI4
pop
line 3175
;3175:	}
ADDRGP4 $1334
JUMPV
LABELV $1333
line 3176
;3176:	else if (ent->watertype == ANIMENT_TYPE_CUSTOM)
ADDRFP4 0
INDIRP4
CNSTI4 744
ADDP4
INDIRI4
CNSTI4 3
NEI4 $1344
line 3177
;3177:	{
line 3178
;3178:		int alignment = 1;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 3179
;3179:		int weapon = 3;
ADDRLP4 4
CNSTI4 3
ASGNI4
line 3184
;3180:		char *model;
;3181:		char *soundpath;
;3182:		animentCustomInfo_t *aeInfo;
;3183:
;3184:		G_SpawnInt( "ae_aligned", "1", &alignment );
ADDRGP4 $1346
ARGP4
ADDRGP4 $1310
ARGP4
ADDRLP4 0
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3186
;3185:		//Alignedment - 1 is bad, 2 is good.
;3186:		G_SpawnInt( "ae_weapon", "3", &weapon);
ADDRGP4 $1347
ARGP4
ADDRGP4 $1305
ARGP4
ADDRLP4 4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3188
;3187:		//Weapon - Same values as normal weapons.
;3188:		G_SpawnString( "ae_model", "models/players/stormtrooper/model.glm", &model);
ADDRGP4 $1348
ARGP4
ADDRGP4 $1209
ARGP4
ADDRLP4 12
ARGP4
ADDRGP4 G_SpawnString
CALLI4
pop
line 3190
;3189:		//Model to use
;3190:		G_SpawnString( "ae_soundpath", "sound/chars/jan/misc", &soundpath);
ADDRGP4 $1349
ARGP4
ADDRGP4 $1350
ARGP4
ADDRLP4 16
ARGP4
ADDRGP4 G_SpawnString
CALLI4
pop
line 3193
;3191:		//Sound path to use
;3192:
;3193:		ExampleAnimEntCustomDataEntry(ent, alignment, weapon, model, soundpath);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 0
INDIRI4
ARGI4
ADDRLP4 4
INDIRI4
ARGI4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 16
INDIRP4
ARGP4
ADDRGP4 ExampleAnimEntCustomDataEntry
CALLV
pop
line 3195
;3194:
;3195:		aeInfo = ExampleAnimEntCustomData(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRLP4 20
ADDRGP4 ExampleAnimEntCustomData
CALLP4
ASGNP4
ADDRLP4 8
ADDRLP4 20
INDIRP4
ASGNP4
line 3197
;3196:
;3197:		if (aeInfo)
ADDRLP4 8
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1351
line 3198
;3198:		{
line 3199
;3199:			AnimEntCustomSoundPrecache(aeInfo);
ADDRLP4 8
INDIRP4
ARGP4
ADDRGP4 AnimEntCustomSoundPrecache
CALLV
pop
line 3200
;3200:			G_ModelIndex( aeInfo->modelPath );
ADDRLP4 8
INDIRP4
CNSTI4 12
ADDP4
INDIRP4
ARGP4
ADDRGP4 G_ModelIndex
CALLI4
pop
line 3201
;3201:		}
LABELV $1351
line 3202
;3202:	}
LABELV $1344
LABELV $1334
LABELV $1323
LABELV $1312
line 3204
;3203:
;3204:	ent->think = AESpawner_Think;
ADDRFP4 0
INDIRP4
CNSTI4 636
ADDP4
ADDRGP4 AESpawner_Think
ASGNP4
line 3205
;3205:	ent->nextthink = level.time + Q_irand(50, 500);
CNSTI4 50
ARGI4
CNSTI4 500
ARGI4
ADDRLP4 0
ADDRGP4 Q_irand
CALLI4
ASGNI4
ADDRFP4 0
INDIRP4
CNSTI4 632
ADDP4
ADDRGP4 level+32
INDIRI4
ADDRLP4 0
INDIRI4
ADDI4
ASGNI4
line 3206
;3206:	trap_LinkEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 trap_LinkEntity
CALLV
pop
line 3207
;3207:}
LABELV $1299
endproc SP_misc_animent_spawner 48 20
export Use_Target_Screenshake
proc Use_Target_Screenshake 8 20
line 3210
;3208:
;3209:void Use_Target_Screenshake( gentity_t *ent, gentity_t *other, gentity_t *activator )
;3210:{
line 3211
;3211:	qboolean bGlobal = qfalse;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3213
;3212:
;3213:	if (ent->bolt_LArm)
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1355
line 3214
;3214:	{
line 3215
;3215:		bGlobal = qtrue;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 3216
;3216:	}
LABELV $1355
line 3218
;3217:
;3218:	G_ScreenShake(ent->s.origin, NULL, ent->speed, ent->bolt_Head, bGlobal);
ADDRLP4 4
ADDRFP4 0
INDIRP4
ASGNP4
ADDRLP4 4
INDIRP4
CNSTI4 92
ADDP4
ARGP4
CNSTP4 0
ARGP4
ADDRLP4 4
INDIRP4
CNSTI4 608
ADDP4
INDIRF4
ARGF4
ADDRLP4 4
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
ARGI4
ADDRLP4 0
INDIRI4
ARGI4
ADDRGP4 G_ScreenShake
CALLP4
pop
line 3219
;3219:}
LABELV $1354
endproc Use_Target_Screenshake 8 20
export SP_target_screenshake
proc SP_target_screenshake 0 12
line 3222
;3220:
;3221:void SP_target_screenshake(gentity_t *ent)
;3222:{
line 3223
;3223:	if (g_gametype.integer != GT_SINGLE_PLAYER)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 4
EQI4 $1358
line 3224
;3224:	{
line 3225
;3225:		G_FreeEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 3226
;3226:		return;
ADDRGP4 $1357
JUMPV
LABELV $1358
line 3229
;3227:	}
;3228:
;3229:	G_SpawnFloat( "intensity", "10", &ent->speed );
ADDRGP4 $1361
ARGP4
ADDRGP4 $1362
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 608
ADDP4
ARGP4
ADDRGP4 G_SpawnFloat
CALLI4
pop
line 3231
;3230:	//intensity of the shake
;3231:	G_SpawnInt( "duration", "800", &ent->bolt_Head );
ADDRGP4 $1363
ARGP4
ADDRGP4 $1364
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3233
;3232:	//duration of the shake
;3233:	G_SpawnInt( "globalshake", "1", &ent->bolt_LArm );
ADDRGP4 $1365
ARGP4
ADDRGP4 $1310
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3236
;3234:	//non-0 if shake should be global (all clients). Otherwise, only in the PVS.
;3235:
;3236:	ent->use = Use_Target_Screenshake;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 Use_Target_Screenshake
ASGNP4
line 3237
;3237:}
LABELV $1357
endproc SP_target_screenshake 0 12
export Use_Target_Escapetrig
proc Use_Target_Escapetrig 16 12
line 3242
;3238:
;3239:void LogExit( const char *string );
;3240:
;3241:void Use_Target_Escapetrig( gentity_t *ent, gentity_t *other, gentity_t *activator )
;3242:{
line 3243
;3243:	if (!ent->bolt_LArm)
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
INDIRI4
CNSTI4 0
NEI4 $1367
line 3244
;3244:	{
line 3245
;3245:		gEscaping = qtrue;
ADDRGP4 gEscaping
CNSTI4 1
ASGNI4
line 3246
;3246:		gEscapeTime = level.time + ent->bolt_Head;
ADDRGP4 gEscapeTime
ADDRGP4 level+32
INDIRI4
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
INDIRI4
ADDI4
ASGNI4
line 3247
;3247:	}
ADDRGP4 $1368
JUMPV
LABELV $1367
line 3248
;3248:	else if (gEscaping)
ADDRGP4 gEscaping
INDIRI4
CNSTI4 0
EQI4 $1370
line 3249
;3249:	{
line 3250
;3250:		int i = 0;
ADDRLP4 0
CNSTI4 0
ASGNI4
line 3251
;3251:		gEscaping = qfalse;
ADDRGP4 gEscaping
CNSTI4 0
ASGNI4
ADDRGP4 $1373
JUMPV
LABELV $1372
line 3253
;3252:		while (i < MAX_CLIENTS)
;3253:		{ //all of the survivors get 100 points!
line 3254
;3254:			if (g_entities[i].inuse && g_entities[i].client && g_entities[i].health > 0 &&
ADDRLP4 4
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 8
CNSTI4 0
ASGNI4
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+412
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
EQI4 $1375
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CVPU4 4
CNSTU4 0
EQU4 $1375
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+676
ADDP4
INDIRI4
ADDRLP4 8
INDIRI4
LEI4 $1375
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 1536
ADDP4
INDIRI4
CNSTI4 3
EQI4 $1375
ADDRLP4 4
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 12
ADDP4
INDIRI4
CNSTI4 4096
BANDI4
ADDRLP4 8
INDIRI4
NEI4 $1375
line 3257
;3255:				g_entities[i].client->sess.sessionTeam != TEAM_SPECTATOR &&
;3256:				!(g_entities[i].client->ps.pm_flags & PMF_FOLLOW))
;3257:			{
line 3258
;3258:				AddScore(&g_entities[i], g_entities[i].client->ps.origin, 100);
ADDRLP4 12
CNSTI4 828
ADDRLP4 0
INDIRI4
MULI4
ASGNI4
ADDRLP4 12
INDIRI4
ADDRGP4 g_entities
ADDP4
ARGP4
ADDRLP4 12
INDIRI4
ADDRGP4 g_entities+408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 100
ARGI4
ADDRGP4 AddScore
CALLV
pop
line 3259
;3259:			}
LABELV $1375
line 3260
;3260:			i++;
ADDRLP4 0
ADDRLP4 0
INDIRI4
CNSTI4 1
ADDI4
ASGNI4
line 3261
;3261:		}
LABELV $1373
line 3252
ADDRLP4 0
INDIRI4
CNSTI4 32
LTI4 $1372
line 3262
;3262:		if (activator && activator->inuse && activator->client)
ADDRLP4 4
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 8
CNSTU4 0
ASGNU4
ADDRLP4 4
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $1383
ADDRLP4 4
INDIRP4
CNSTI4 412
ADDP4
INDIRI4
CNSTI4 0
EQI4 $1383
ADDRLP4 4
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CVPU4 4
ADDRLP4 8
INDIRU4
EQU4 $1383
line 3263
;3263:		{ //the one who escaped gets 500
line 3264
;3264:			AddScore(activator, activator->client->ps.origin, 500);
ADDRLP4 12
ADDRFP4 8
INDIRP4
ASGNP4
ADDRLP4 12
INDIRP4
ARGP4
ADDRLP4 12
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
ARGP4
CNSTI4 500
ARGI4
ADDRGP4 AddScore
CALLV
pop
line 3265
;3265:		}
LABELV $1383
line 3267
;3266:
;3267:		LogExit("Escaped!");
ADDRGP4 $1385
ARGP4
ADDRGP4 LogExit
CALLV
pop
line 3268
;3268:	}
LABELV $1370
LABELV $1368
line 3269
;3269:}
LABELV $1366
endproc Use_Target_Escapetrig 16 12
export SP_target_escapetrig
proc SP_target_escapetrig 0 12
line 3272
;3270:
;3271:void SP_target_escapetrig(gentity_t *ent)
;3272:{
line 3273
;3273:	if (g_gametype.integer != GT_SINGLE_PLAYER)
ADDRGP4 g_gametype+12
INDIRI4
CNSTI4 4
EQI4 $1387
line 3274
;3274:	{
line 3275
;3275:		G_FreeEntity(ent);
ADDRFP4 0
INDIRP4
ARGP4
ADDRGP4 G_FreeEntity
CALLV
pop
line 3276
;3276:		return;
ADDRGP4 $1386
JUMPV
LABELV $1387
line 3279
;3277:	}
;3278:
;3279:	G_SpawnInt( "escapetime", "60000", &ent->bolt_Head);
ADDRGP4 $1390
ARGP4
ADDRGP4 $1391
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 784
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3281
;3280:	//time given (in ms) for the escape
;3281:	G_SpawnInt( "escapegoal", "0", &ent->bolt_LArm);
ADDRGP4 $1392
ARGP4
ADDRGP4 $126
ARGP4
ADDRFP4 0
INDIRP4
CNSTI4 788
ADDP4
ARGP4
ADDRGP4 G_SpawnInt
CALLI4
pop
line 3284
;3282:	//if non-0, when used, will end an ongoing escape instead of start it
;3283:
;3284:	ent->use = Use_Target_Escapetrig;
ADDRFP4 0
INDIRP4
CNSTI4 652
ADDP4
ADDRGP4 Use_Target_Escapetrig
ASGNP4
line 3285
;3285:}
LABELV $1386
endproc SP_target_escapetrig 0 12
export G_CreateExampleAnimEnt
proc G_CreateExampleAnimEnt 2116 16
line 3290
;3286:
;3287:#endif
;3288:
;3289:void G_CreateExampleAnimEnt(gentity_t *ent)
;3290:{
line 3294
;3291:	vec3_t fwd, fwdPos;
;3292:	animentCustomInfo_t aeInfo;
;3293:	char	arg[MAX_STRING_CHARS];
;3294:	int		iArg = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 3295
;3295:	int		argNum = trap_Argc();
ADDRLP4 1080
ADDRGP4 trap_Argc
CALLI4
ASGNI4
ADDRLP4 52
ADDRLP4 1080
INDIRI4
ASGNI4
line 3297
;3296:
;3297:	memset(&aeInfo, 0, sizeof(aeInfo));
ADDRLP4 0
ARGP4
CNSTI4 0
ARGI4
CNSTI4 24
ARGI4
ADDRGP4 memset
CALLP4
pop
line 3299
;3298:
;3299:	if (argNum > 1)
ADDRLP4 52
INDIRI4
CNSTI4 1
LEI4 $1394
line 3300
;3300:	{
line 3301
;3301:		trap_Argv( 1, arg, sizeof( arg ) );
CNSTI4 1
ARGI4
ADDRLP4 56
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_Argv
CALLV
pop
line 3303
;3302:
;3303:		iArg = atoi(arg);
ADDRLP4 56
ARGP4
ADDRLP4 1084
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 24
ADDRLP4 1084
INDIRI4
ASGNI4
line 3305
;3304:
;3305:		if (iArg < 0)
ADDRLP4 24
INDIRI4
CNSTI4 0
GEI4 $1396
line 3306
;3306:		{
line 3307
;3307:			iArg = 0;
ADDRLP4 24
CNSTI4 0
ASGNI4
line 3308
;3308:		}
LABELV $1396
line 3309
;3309:		if (iArg >= MAX_ANIMENTS)
ADDRLP4 24
INDIRI4
CNSTI4 4
LTI4 $1398
line 3310
;3310:		{
line 3311
;3311:			iArg = MAX_ANIMENTS-1;
ADDRLP4 24
CNSTI4 3
ASGNI4
line 3312
;3312:		}
LABELV $1398
line 3313
;3313:	}
LABELV $1394
line 3315
;3314:
;3315:	AngleVectors(ent->client->ps.viewangles, fwd, 0, 0);
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 156
ADDP4
ARGP4
ADDRLP4 28
ARGP4
ADDRLP4 1084
CNSTP4 0
ASGNP4
ADDRLP4 1084
INDIRP4
ARGP4
ADDRLP4 1084
INDIRP4
ARGP4
ADDRGP4 AngleVectors
CALLV
pop
line 3317
;3316:
;3317:	fwdPos[0] = ent->client->ps.origin[0] + fwd[0]*128;
ADDRLP4 40
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 20
ADDP4
INDIRF4
CNSTF4 1124073472
ADDRLP4 28
INDIRF4
MULF4
ADDF4
ASGNF4
line 3318
;3318:	fwdPos[1] = ent->client->ps.origin[1] + fwd[1]*128;
ADDRLP4 40+4
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 24
ADDP4
INDIRF4
CNSTF4 1124073472
ADDRLP4 28+4
INDIRF4
MULF4
ADDF4
ASGNF4
line 3319
;3319:	fwdPos[2] = ent->client->ps.origin[2] + fwd[2]*128;
ADDRLP4 40+8
ADDRFP4 0
INDIRP4
CNSTI4 408
ADDP4
INDIRP4
CNSTI4 28
ADDP4
INDIRF4
CNSTF4 1124073472
ADDRLP4 28+8
INDIRF4
MULF4
ADDF4
ASGNF4
line 3321
;3320:
;3321:	if (iArg == ANIMENT_TYPE_CUSTOM)
ADDRLP4 24
INDIRI4
CNSTI4 3
NEI4 $1404
line 3322
;3322:	{
line 3325
;3323:		char arg2[MAX_STRING_CHARS];
;3324:
;3325:		if (argNum > 2)
ADDRLP4 52
INDIRI4
CNSTI4 2
LEI4 $1406
line 3326
;3326:		{
line 3327
;3327:			trap_Argv( 2, arg, sizeof( arg ) );
CNSTI4 2
ARGI4
ADDRLP4 56
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_Argv
CALLV
pop
line 3328
;3328:			aeInfo.aeAlignment = atoi(arg);
ADDRLP4 56
ARGP4
ADDRLP4 2112
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0
ADDRLP4 2112
INDIRI4
ASGNI4
line 3329
;3329:		}
ADDRGP4 $1407
JUMPV
LABELV $1406
line 3331
;3330:		else
;3331:		{
line 3332
;3332:			aeInfo.aeAlignment = ANIMENT_ALIGNED_BAD;
ADDRLP4 0
CNSTI4 1
ASGNI4
line 3333
;3333:		}
LABELV $1407
line 3335
;3334:
;3335:		if (argNum > 3)
ADDRLP4 52
INDIRI4
CNSTI4 3
LEI4 $1408
line 3336
;3336:		{
line 3337
;3337:			trap_Argv( 3, arg, sizeof( arg ) );
CNSTI4 3
ARGI4
ADDRLP4 56
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_Argv
CALLV
pop
line 3338
;3338:			aeInfo.aeWeapon = atoi(arg);
ADDRLP4 56
ARGP4
ADDRLP4 2112
ADDRGP4 atoi
CALLI4
ASGNI4
ADDRLP4 0+8
ADDRLP4 2112
INDIRI4
ASGNI4
line 3339
;3339:		}
ADDRGP4 $1409
JUMPV
LABELV $1408
line 3341
;3340:		else
;3341:		{
line 3342
;3342:			aeInfo.aeWeapon = WP_BRYAR_PISTOL;
ADDRLP4 0+8
CNSTI4 3
ASGNI4
line 3343
;3343:		}
LABELV $1409
line 3345
;3344:
;3345:		if (argNum > 4)
ADDRLP4 52
INDIRI4
CNSTI4 4
LEI4 $1412
line 3346
;3346:		{
line 3347
;3347:			trap_Argv( 4, arg, sizeof( arg ) );
CNSTI4 4
ARGI4
ADDRLP4 56
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_Argv
CALLV
pop
line 3348
;3348:			aeInfo.modelPath = arg;
ADDRLP4 0+12
ADDRLP4 56
ASGNP4
line 3349
;3349:		}
ADDRGP4 $1413
JUMPV
LABELV $1412
line 3351
;3350:		else
;3351:		{
line 3352
;3352:			aeInfo.modelPath = "models/players/stormtrooper/model.glm";
ADDRLP4 0+12
ADDRGP4 $1209
ASGNP4
line 3353
;3353:		}
LABELV $1413
line 3355
;3354:
;3355:		if (argNum > 5)
ADDRLP4 52
INDIRI4
CNSTI4 5
LEI4 $1416
line 3356
;3356:		{
line 3357
;3357:			trap_Argv( 5, arg2, sizeof( arg2 ) );
CNSTI4 5
ARGI4
ADDRLP4 1088
ARGP4
CNSTI4 1024
ARGI4
ADDRGP4 trap_Argv
CALLV
pop
line 3358
;3358:			aeInfo.soundPath = arg2;
ADDRLP4 0+16
ADDRLP4 1088
ASGNP4
line 3359
;3359:		}
ADDRGP4 $1417
JUMPV
LABELV $1416
line 3361
;3360:		else
;3361:		{
line 3362
;3362:			aeInfo.soundPath = "sound/chars/jan/misc";
ADDRLP4 0+16
ADDRGP4 $1350
ASGNP4
line 3363
;3363:		}
LABELV $1417
line 3364
;3364:	}
LABELV $1404
line 3366
;3365:
;3366:	G_SpawnExampleAnimEnt(fwdPos, iArg, &aeInfo);
ADDRLP4 40
ARGP4
ADDRLP4 24
INDIRI4
ARGI4
ADDRLP4 0
ARGP4
ADDRGP4 G_SpawnExampleAnimEnt
CALLV
pop
line 3367
;3367:}
LABELV $1393
endproc G_CreateExampleAnimEnt 2116 16
import LogExit
import AnimEntFireWeapon
import G_PickDeathAnim
bss
export gJanSound_Alert
align 4
LABELV gJanSound_Alert
skip 20
export gJanSound_Death
align 4
LABELV gJanSound_Death
skip 12
export gJanSound_Pain
align 4
LABELV gJanSound_Pain
skip 16
export gRodianSound_Alert
align 4
LABELV gRodianSound_Alert
skip 20
export gRodianSound_Death
align 4
LABELV gRodianSound_Death
skip 12
export gRodianSound_Pain
align 4
LABELV gRodianSound_Pain
skip 16
export gTrooperSound_Alert
align 4
LABELV gTrooperSound_Alert
skip 20
export gTrooperSound_Death
align 4
LABELV gTrooperSound_Death
skip 12
export gTrooperSound_Pain
align 4
LABELV gTrooperSound_Pain
skip 16
import g_MaxHolocronCarry
import floattime
import gLevelFlags
import nodenum
import nodetable
import gLastPrintedIndex
import gWPNum
import gWPArray
import gWPRenderedFrame
import gBotEdit
import gDeactivated
import gWPRenderTime
import gBotChatBuffer
import eFlagBlue
import eFlagRed
import oFlagBlue
import flagBlue
import oFlagRed
import flagRed
import bot_wp_visconnect
import bot_wp_distconnect
import bot_wp_clearweight
import bot_wp_edit
import bot_wp_info
import bot_camp
import bot_attachments
import bot_honorableduelacceptance
import bot_forgimmick
import bot_forcepowers
import ConcatArgs
import GetBestIdleGoal
import GetNearestVisibleWP
import BotIsAChickenWuss
import OrgVisibleBox
import BotWaypointRender
import StandardBotAI
import BotDoChat
import BotUtilizePersonality
import NumBots
import BotResetState
import B_Free
import B_Alloc
import B_TempFree
import B_TempAlloc
import trap_ROFF_Purge_Ent
import trap_ROFF_Play
import trap_ROFF_Cache
import trap_ROFF_UpdateEntities
import trap_ROFF_Clean
import trap_SP_GetStringTextString
import trap_SP_Register
import trap_SP_RegisterServer
import trap_SnapVector
import trap_GeneticParentsAndChildSelection
import trap_BotResetWeaponState
import trap_BotFreeWeaponState
import trap_BotAllocWeaponState
import trap_BotLoadWeaponWeights
import trap_BotGetWeaponInfo
import trap_BotChooseBestFightWeapon
import trap_BotAddAvoidSpot
import trap_BotInitMoveState
import trap_BotFreeMoveState
import trap_BotAllocMoveState
import trap_BotPredictVisiblePosition
import trap_BotMovementViewTarget
import trap_BotReachabilityArea
import trap_BotResetLastAvoidReach
import trap_BotResetAvoidReach
import trap_BotMoveInDirection
import trap_BotMoveToGoal
import trap_BotResetMoveState
import trap_BotFreeGoalState
import trap_BotAllocGoalState
import trap_BotMutateGoalFuzzyLogic
import trap_BotSaveGoalFuzzyLogic
import trap_BotInterbreedGoalFuzzyLogic
import trap_BotFreeItemWeights
import trap_BotLoadItemWeights
import trap_BotUpdateEntityItems
import trap_BotInitLevelItems
import trap_BotSetAvoidGoalTime
import trap_BotAvoidGoalTime
import trap_BotGetLevelItemGoal
import trap_BotGetMapLocationGoal
import trap_BotGetNextCampSpotGoal
import trap_BotItemGoalInVisButNotVisible
import trap_BotTouchingGoal
import trap_BotChooseNBGItem
import trap_BotChooseLTGItem
import trap_BotGetSecondGoal
import trap_BotGetTopGoal
import trap_BotGoalName
import trap_BotDumpGoalStack
import trap_BotDumpAvoidGoals
import trap_BotEmptyGoalStack
import trap_BotPopGoal
import trap_BotPushGoal
import trap_BotResetAvoidGoals
import trap_BotRemoveFromAvoidGoals
import trap_BotResetGoalState
import trap_BotSetChatName
import trap_BotSetChatGender
import trap_BotLoadChatFile
import trap_BotReplaceSynonyms
import trap_UnifyWhiteSpaces
import trap_BotMatchVariable
import trap_BotFindMatch
import trap_StringContains
import trap_BotGetChatMessage
import trap_BotEnterChat
import trap_BotChatLength
import trap_BotReplyChat
import trap_BotNumInitialChats
import trap_BotInitialChat
import trap_BotNumConsoleMessages
import trap_BotNextConsoleMessage
import trap_BotRemoveConsoleMessage
import trap_BotQueueConsoleMessage
import trap_BotFreeChatState
import trap_BotAllocChatState
import trap_Characteristic_String
import trap_Characteristic_BInteger
import trap_Characteristic_Integer
import trap_Characteristic_BFloat
import trap_Characteristic_Float
import trap_BotFreeCharacter
import trap_BotLoadCharacter
import trap_EA_ResetInput
import trap_EA_GetInput
import trap_EA_EndRegular
import trap_EA_ForcePower
import trap_EA_Alt_Attack
import trap_EA_View
import trap_EA_Move
import trap_EA_DelayedJump
import trap_EA_Jump
import trap_EA_SelectWeapon
import trap_EA_MoveRight
import trap_EA_MoveLeft
import trap_EA_MoveBack
import trap_EA_MoveForward
import trap_EA_MoveDown
import trap_EA_MoveUp
import trap_EA_Crouch
import trap_EA_Respawn
import trap_EA_Use
import trap_EA_Attack
import trap_EA_Talk
import trap_EA_Gesture
import trap_EA_Action
import trap_EA_Command
import trap_EA_SayTeam
import trap_EA_Say
import trap_AAS_PredictClientMovement
import trap_AAS_Swimming
import trap_AAS_AlternativeRouteGoals
import trap_AAS_PredictRoute
import trap_AAS_EnableRoutingArea
import trap_AAS_AreaTravelTimeToGoalArea
import trap_AAS_AreaReachability
import trap_AAS_IntForBSPEpairKey
import trap_AAS_FloatForBSPEpairKey
import trap_AAS_VectorForBSPEpairKey
import trap_AAS_ValueForBSPEpairKey
import trap_AAS_NextBSPEntity
import trap_AAS_PointContents
import trap_AAS_TraceAreas
import trap_AAS_PointReachabilityAreaIndex
import trap_AAS_PointAreaNum
import trap_AAS_Time
import trap_AAS_PresenceTypeBoundingBox
import trap_AAS_Initialized
import trap_AAS_EntityInfo
import trap_AAS_AreaInfo
import trap_AAS_BBoxAreas
import trap_BotUserCommand
import trap_BotGetServerCommand
import trap_BotGetSnapshotEntity
import trap_BotLibTest
import trap_BotLibUpdateEntity
import trap_BotLibLoadMap
import trap_BotLibStartFrame
import trap_BotLibDefine
import trap_BotLibVarGet
import trap_BotLibVarSet
import trap_BotLibShutdown
import trap_BotLibSetup
import trap_DebugPolygonDelete
import trap_DebugPolygonCreate
import trap_GetEntityToken
import trap_GetUsercmd
import trap_BotFreeClient
import trap_BotAllocateClient
import trap_EntityContact
import trap_EntitiesInBox
import trap_UnlinkEntity
import trap_LinkEntity
import trap_AreasConnected
import trap_AdjustAreaPortalState
import trap_InPVSIgnorePortals
import trap_InPVS
import trap_PointContents
import trap_Trace
import trap_SetBrushModel
import trap_GetServerinfo
import trap_SetUserinfo
import trap_GetUserinfo
import trap_GetConfigstring
import trap_SetConfigstring
import trap_SendServerCommand
import trap_DropClient
import trap_LocateGameData
import trap_Cvar_VariableStringBuffer
import trap_Cvar_VariableValue
import trap_Cvar_VariableIntegerValue
import trap_Cvar_Set
import trap_Cvar_Update
import trap_Cvar_Register
import trap_SendConsoleCommand
import trap_FS_GetFileList
import trap_FS_FCloseFile
import trap_FS_Write
import trap_FS_Read
import trap_FS_FOpenFile
import trap_Args
import trap_Argv
import trap_Argc
import trap_Milliseconds
import trap_Error
import trap_Printf
import g_austrian
import g_saberDebugPrint
import g_saberDmgDelay_Wound
import g_saberDmgDelay_Idle
import g_saberDmgVelocityScale
import g_timeouttospec
import g_forceDodge
import g_dismember
import g_singlePlayer
import g_enableBreath
import g_enableDust
import g_rankings
import pmove_msec
import pmove_fixed
import g_smoothClients
import g_blueteam
import g_redteam
import g_debugUp
import g_debugRight
import g_debugForward
import g_filterBan
import g_banIPs
import g_teamForceBalance
import g_teamAutoJoin
import g_allowVote
import g_blood
import g_doWarmup
import g_warmup
import g_motd
import g_synchronousClients
import g_adaptRespawn
import g_weaponTeamRespawn
import g_weaponRespawn
import g_debugDamage
import g_debugAlloc
import g_debugMove
import g_inactivity
import g_forcerespawn
import g_quadfactor
import g_knockback
import g_speed
import g_gravity
import g_needpass
import g_password
import g_friendlySaber
import g_friendlyFire
import g_saberInterpolate
import g_capturelimit
import g_timelimit
import g_duel_fraglimit
import g_fraglimit
import g_duelWeaponDisable
import g_fraglimitVoteCorrection
import g_allowDuelSuicide
import g_weaponDisable
import g_forcePowerDisable
import g_spawnInvulnerability
import g_forceRegenTime
import g_saberDamageScale
import g_slowmoDuelEnd
import g_logClientInfo
import g_saberBoxTraceSize
import g_saberAlwaysBoxTrace
import g_saberGhoul2Collision
import g_saberTraceSaberFirst
import g_saberLockFactor
import g_saberLocking
import g_privateDuel
import g_forceBasedTeams
import g_maxForceRank
import g_dmflags
import g_autoMapCycle
import g_trueJedi
import g_restarted
import g_maxGameClients
import g_maxclients
import g_cheats
import g_dedicated
import g_gametype
import g_vehicles
import g_vehicleTemplates
import vehicleId
import VehicleTemplateArray_GetTemplateIndexForName
import VehicleTemplateArray_OutputTemplates
import VehicleTemplateArray_InitVehicleTemplateArray
import VehicleArray_OutputVehicles
import VehicleArray_RemoveVehicleForId
import VehicleArray_AddVehicle
import VehicleArray_SetVehicleForId
import VehicleArray_GetVehicleForId
import VehicleArray_InitVehicleArray
import G_SpawnVehicle
import Touch_Vehicle
import VehicleInfo_GetNameForMovementType
import VehicleInfo_GetBitForMovementType
import VehicleInfo_GetNameForWeapon
import VehicleInfo_GetIndexForWeapon
import VehicleInfo_GetBitForWeapon
import VehicleInfo_GetBitForVehicleType
import Vehicle_CopyVehicle
import Vehicle_InitVehicle
import g_entities
import level
import Pickup_Team
import CheckTeamStatus
import TeamplayInfoMessage
import Team_GetLocationMsg
import Team_GetLocation
import SelectSagaSpawnPoint
import SelectCTFSpawnPoint
import Team_FreeEntity
import Team_ReturnFlag
import Team_InitGame
import Team_CheckHurtCarrier
import Team_FragBonuses
import Team_DroppedFlagThink
import AddTeamScore
import TeamColorString
import OtherTeamName
import TeamName
import OtherTeam
import BotAIStartFrame
import BotAIShutdownClient
import BotAISetupClient
import BotAILoadMap
import BotAIShutdown
import BotAISetup
import B_CleanupAlloc
import B_InitAlloc
import InFieldOfVision
import BotOrder
import OrgVisible
import InitSagaMode
import G_ClearClientLog
import G_LogExit
import G_LogWeaponOutput
import G_LogWeaponInit
import G_LogWeaponItem
import G_LogWeaponPowerup
import G_LogWeaponFrag
import G_LogWeaponDeath
import G_LogWeaponKill
import G_LogWeaponDamage
import G_LogWeaponFire
import G_LogWeaponPickup
import Jedi_DodgeEvasion
import ForceTelepathy
import ForceThrow
import ForceSeeing
import ForceTeamForceReplenish
import ForceTeamHeal
import ForceAbsorb
import ForceProtect
import ForceGrip
import ForceRage
import ForceSpeed
import ForceHeal
import ForcePowerUsableOn
import WP_ForcePowersUpdate
import WP_SpawnInitForcePowers
import WP_InitForcePowers
import WP_SaberInitBladeData
import WP_SaberCanBlock
import WP_SaberPositionUpdate
import WP_ForcePowerStop
import HasSetSaberOnly
import G_PreDefSound
import G_RefreshNextMap
import G_DoesMapSupportGametype
import BotInterbreedEndMatch
import Svcmd_BotList_f
import Svcmd_AddBot_f
import G_BotConnect
import G_RemoveQueuedBotBegin
import G_CheckBotSpawn
import G_GetBotInfoByName
import G_GetBotInfoByNumber
import G_InitBots
import UpdateTournamentInfo
import G_WriteSessionData
import G_InitWorldSession
import G_InitSessionData
import G_ReadSessionData
import Svcmd_GameMem_f
import G_InitMemory
import G_Alloc
import Team_CheckDroppedItem
import OnSameTeam
import G_RunClient
import ClientEndFrame
import ClientThink
import G_CheckClientTimeouts
import ClientCommand
import ClientBegin
import ClientDisconnect
import ClientUserinfoChanged
import ClientConnect
import G_GetStripEdString
import G_Error
import G_Printf
import SendScoreboardMessageToAllClients
import G_LogPrintf
import G_RunThink
import CheckTeamLeader
import SetLeader
import FindIntermissionPoint
import gSlowMoDuelTime
import gDoSlowMoDuel
import g_ff_objectives
import DeathmatchScoreboardMessage
import G_SetStats
import MoveClientToIntermission
import BlowDetpacks
import FireWeapon
import G_FilterPacket
import G_ProcessIPBans
import ConsoleCommand
import gJMSaberEnt
import SpotWouldTelefrag
import CalculateRanks
import AddScore
import player_die
import ClientSpawn
import InitBodyQue
import BeginIntermission
import respawn
import CopyToBodyQue
import SelectSpawnPoint
import SetClientViewAngle
import PickTeam
import TeamLeader
import TeamCount
import CheckGauntletAttack
import SnapVectorTowards
import CalcMuzzlePoint
import LogAccuracyHit
import WP_FireGenericBlasterMissile
import WP_FireTurretMissile
import trigger_teleporter_touch
import Touch_DoorTrigger
import G_RunMover
import WP_FireBlasterMissile
import G_ExplodeMissile
import G_BounceProjectile
import CreateMissile
import G_RunMissile
import G_ReflectMissile
import gGAvoidDismember
import G_CheckForDismemberment
import ExplodeDeath
import TossClientCubes
import TossClientItems
import TossClientWeapon
import body_die
import G_RadiusDamage
import G_Damage
import CanDamage
import trap_G2API_SetBoneAnim
import trap_G2API_GetGLAName
import trap_G2API_SetBoneAngles
import trap_G2API_CollisionDetect
import trap_G2API_CleanGhoul2Models
import trap_G2API_RemoveGhoul2Model
import trap_G2API_HasGhoul2ModelOnIndex
import trap_G2API_DuplicateGhoul2Instance
import trap_G2API_CopySpecificGhoul2Model
import trap_G2API_CopyGhoul2Instance
import trap_G2API_SetBoltInfo
import trap_G2API_AddBolt
import trap_G2API_InitGhoul2Model
import trap_G2API_GetBoltMatrix_NoRecNoRot
import trap_G2API_GetBoltMatrix_NoReconstruct
import trap_G2API_GetBoltMatrix
import trap_G2_HaveWeGhoul2Models
import trap_G2_SetGhoul2ModelIndexes
import trap_G2_ListModelBones
import trap_G2_ListModelSurfaces
import G_SkinIndex
import BuildShaderStateConfig
import AddRemap
import G_SetOrigin
import G_AddEvent
import G_AddPredictableEvent
import vtos
import tv
import G_RunObject
import G_TouchSolids
import G_TouchTriggers
import G_EntitiesFree
import G_FreeEntity
import G_KillG2Queue
import G_SendG2KillQueue
import TryUse
import G_EntitySound
import G_SoundAtLoc
import G_Sound
import G_MuteSound
import G_ScreenShake
import G_PlayEffect
import G_TempEntity
import G_Spawn
import G_InitGentity
import G_SetAngles
import G_SetMovedir
import G_UseTargets
import G_PickTarget
import G_RadiusList
import G_Find
import G_KillBox
import G_TeamCommand
import G_EffectIndex
import G_SoundIndex
import G_ModelIndex
import SaveRegisteredItems
import RegisterItem
import ClearRegisteredItems
import Touch_Item
import Add_Ammo
import ArmorIndex
import Think_Weapon
import FinishSpawningItem
import G_SpawnItem
import SetRespawn
import LaunchItem
import Drop_Item
import PrecacheItem
import UseHoldableItem
import RespawnItem
import G_RunItem
import G_CheckTeamItems
import ItemUse_MedPack
import ItemUse_Seeker
import ItemUse_Sentry
import ItemUse_Shield
import ItemUse_Binoculars
import G_GetDuelWinner
import Cmd_EngageDuel_f
import Cmd_ToggleSaber_f
import G_ItemUsable
import Cmd_SaberAttackCycle_f
import Cmd_FollowCycle_f
import SetTeam
import BroadcastTeamChange
import StopFollowing
import Cmd_Score_f
import G_NewString
import G_SpawnEntitiesFromString
import G_SpawnVector
import G_SpawnInt
import G_SpawnFloat
import G_SpawnString
import g2SaberInstance
import precachedKyle
import forcePowerDarkLight
import WeaponAttackAnim
import WeaponReadyAnim
import BG_OutOfMemory
import BG_StringAlloc
import BG_TempFree
import BG_TempAlloc
import BG_AllocUnaligned
import BG_Alloc
import BG_CanUseFPNow
import BG_HasYsalamiri
import BG_GetItemIndexByTag
import BG_ParseAnimationFile
import BG_PlayerTouchesItem
import BG_PlayerStateToEntityStateExtraPolate
import BG_PlayerStateToEntityState
import BG_TouchJumpPad
import BG_AddPredictableEventToPlayerstate
import BG_EvaluateTrajectoryDelta
import BG_EvaluateTrajectory
import BG_ForcePowerDrain
import BG_SaberStartTransAnim
import BG_InDeathAnim
import BG_InRoll
import BG_KnockawayForParry
import BG_BrokenParryForParry
import BG_BrokenParryForAttack
import BG_SaberInSpecialAttack
import BG_SpinningSaberAnim
import BG_FlippingAnim
import BG_SaberInIdle
import BG_SaberInSpecial
import BG_SaberInAttack
import BG_DirectFlippingAnim
import BG_InSaberStandAnim
import BG_InSpecialJump
import BG_LegalizedForcePowers
import saberMoveData
import BG_CanItemBeGrabbed
import BG_FindItemForHoldable
import BG_FindItemForPowerup
import BG_FindItemForWeapon
import BG_FindItem
import vectoyaw
import bg_numItems
import bg_itemlist
import PM_CalculateRelativeViewAngles
import Pmove
import PM_QuaternionViewAngles
import PM_UpdateViewAngles
import pm
import bgForcePowerCost
import forceMasteryPoints
import forceMasteryLevels
import bgGlobalAnimations
import BGPAFtextLoaded
import forcePowerSorted
import WP_MuzzlePoint
import ammoData
import weaponData
import GetStringForID
import GetIDForString
import Q_irand
import irand
import flrand
import Rand_Init
import Com_Printf
import Com_Error
import Info_NextPair
import Info_Validate
import Info_SetValueForKey_Big
import Info_SetValueForKey
import Info_RemoveKey_big
import Info_RemoveKey
import Info_ValueForKey
import va
import Q_CleanStr
import Q_PrintStrlen
import Q_strcat
import Q_strncpyz
import Q_strrchr
import Q_strupr
import Q_strlwr
import Q_stricmpn
import Q_strncmp
import Q_stricmp
import Q_isalpha
import Q_isupper
import Q_islower
import Q_isprint
import Com_sprintf
import Parse3DMatrix
import Parse2DMatrix
import Parse1DMatrix
import SkipRestOfLine
import SkipBracedSection
import COM_MatchToken
import COM_ParseVec4
import COM_ParseFloat
import COM_ParseInt
import COM_ParseString
import COM_ParseWarning
import COM_ParseError
import COM_Compress
import COM_ParseExt
import COM_Parse
import SkipWhitespace
import COM_GetCurrentParseLine
import COM_BeginParseSession
import COM_DefaultExtension
import COM_StripExtension
import COM_SkipPath
import Com_Clamp
import MatrixToEuler
import QuatToAngles
import QuatMul
import AnglesToQuat
import AxisToQuaternion
import QuaternionToAxis
import QuaternionToEuler
import QuatToAxis
import QuaternionMultiply
import QuaternionNormalize
import QuaternionMagnitude
import QuaternionFromString
import AnglesToTieFloats
import AnglesFromTieFloats
import QuaternionToTieFloats
import QuaternionFromTieFloats
import QuaternionCopy
import PerpendicularVector
import AngleVectors
import RotationMatrixAroundDir
import MatrixMultiply
import MakeNormalVectors
import RotateAroundDirection
import RotatePointAroundVector
import ProjectPointOnPlane
import PlaneFromPoints
import AngleDelta
import AngleNormalize180
import AngleNormalize360
import AnglesSubtract
import AngleSubtract
import LerpAngle
import AngleMod
import BoxOnPlaneSide
import SetPlaneSignbits
import AxisCopy
import AxisClear
import AnglesToAxis
import vectoangles
import Q_crandom
import Q_random
import Q_rand
import Q_acos
import Q_log2
import VectorRotate
import Vector4Scale
import VectorNormalize2
import VectorNormalize
import CrossProduct
import VectorInverse
import VectorNormalizeFast
import DistanceSquared
import Distance
import VectorLengthSquared
import VectorLength
import VectorCompare
import AddPointToBounds
import ClearBounds
import RadiusFromBounds
import NormalizeColor
import ColorBytes4
import ColorBytes3
import _VectorMA
import _VectorScale
import _VectorCopy
import _VectorAdd
import _VectorSubtract
import _DotProduct
import ByteToDir
import DirToByte
import powf
import ClampShort
import ClampChar
import Q_rsqrt
import Q_fabs
import axisDefault
import vec3_origin
import g_color_table
import colorDkBlue
import colorLtBlue
import colorDkGrey
import colorMdGrey
import colorLtGrey
import colorWhite
import colorCyan
import colorMagenta
import colorYellow
import colorBlue
import colorGreen
import colorRed
import colorBlack
import colorTable
import bytedirs
import Com_Memcpy
import Com_Memset
import Hunk_Alloc
import forceSpeedLevels
import FloatSwap
import LongSwap
import ShortSwap
import acos
import fabs
import abs
import tan
import atan2
import cos
import sin
import sqrt
import floor
import ceil
import memcpy
import memset
import memmove
import sscanf
import vsprintf
import _atoi
import atoi
import _atof
import atof
import toupper
import tolower
import strncpy
import strstr
import strchr
import strcmp
import strcpy
import strcat
import strlen
import rand
import srand
import qsort
lit
align 1
LABELV $1392
byte 1 101
byte 1 115
byte 1 99
byte 1 97
byte 1 112
byte 1 101
byte 1 103
byte 1 111
byte 1 97
byte 1 108
byte 1 0
align 1
LABELV $1391
byte 1 54
byte 1 48
byte 1 48
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $1390
byte 1 101
byte 1 115
byte 1 99
byte 1 97
byte 1 112
byte 1 101
byte 1 116
byte 1 105
byte 1 109
byte 1 101
byte 1 0
align 1
LABELV $1385
byte 1 69
byte 1 115
byte 1 99
byte 1 97
byte 1 112
byte 1 101
byte 1 100
byte 1 33
byte 1 0
align 1
LABELV $1365
byte 1 103
byte 1 108
byte 1 111
byte 1 98
byte 1 97
byte 1 108
byte 1 115
byte 1 104
byte 1 97
byte 1 107
byte 1 101
byte 1 0
align 1
LABELV $1364
byte 1 56
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $1363
byte 1 100
byte 1 117
byte 1 114
byte 1 97
byte 1 116
byte 1 105
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $1362
byte 1 49
byte 1 48
byte 1 0
align 1
LABELV $1361
byte 1 105
byte 1 110
byte 1 116
byte 1 101
byte 1 110
byte 1 115
byte 1 105
byte 1 116
byte 1 121
byte 1 0
align 1
LABELV $1350
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 0
align 1
LABELV $1349
byte 1 97
byte 1 101
byte 1 95
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 112
byte 1 97
byte 1 116
byte 1 104
byte 1 0
align 1
LABELV $1348
byte 1 97
byte 1 101
byte 1 95
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 0
align 1
LABELV $1347
byte 1 97
byte 1 101
byte 1 95
byte 1 119
byte 1 101
byte 1 97
byte 1 112
byte 1 111
byte 1 110
byte 1 0
align 1
LABELV $1346
byte 1 97
byte 1 101
byte 1 95
byte 1 97
byte 1 108
byte 1 105
byte 1 103
byte 1 110
byte 1 101
byte 1 100
byte 1 0
align 1
LABELV $1310
byte 1 49
byte 1 0
align 1
LABELV $1309
byte 1 115
byte 1 97
byte 1 109
byte 1 101
byte 1 116
byte 1 121
byte 1 112
byte 1 101
byte 1 0
align 1
LABELV $1308
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 116
byte 1 121
byte 1 112
byte 1 101
byte 1 0
align 1
LABELV $1307
byte 1 49
byte 1 50
byte 1 0
align 1
LABELV $1306
byte 1 116
byte 1 111
byte 1 116
byte 1 97
byte 1 108
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 0
align 1
LABELV $1305
byte 1 51
byte 1 0
align 1
LABELV $1304
byte 1 111
byte 1 116
byte 1 104
byte 1 101
byte 1 114
byte 1 115
byte 1 105
byte 1 110
byte 1 112
byte 1 118
byte 1 115
byte 1 0
align 1
LABELV $1303
byte 1 115
byte 1 112
byte 1 97
byte 1 119
byte 1 110
byte 1 105
byte 1 110
byte 1 112
byte 1 118
byte 1 115
byte 1 0
align 1
LABELV $1231
byte 1 103
byte 1 50
byte 1 97
byte 1 110
byte 1 105
byte 1 109
byte 1 101
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $1220
byte 1 85
byte 1 110
byte 1 107
byte 1 110
byte 1 111
byte 1 119
byte 1 110
byte 1 32
byte 1 65
byte 1 110
byte 1 105
byte 1 109
byte 1 69
byte 1 110
byte 1 116
byte 1 32
byte 1 116
byte 1 121
byte 1 112
byte 1 101
byte 1 33
byte 1 10
byte 1 0
align 1
LABELV $1215
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 115
byte 1 47
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 46
byte 1 103
byte 1 108
byte 1 109
byte 1 0
align 1
LABELV $1212
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 115
byte 1 47
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 46
byte 1 103
byte 1 108
byte 1 109
byte 1 0
align 1
LABELV $1209
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 115
byte 1 47
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 111
byte 1 114
byte 1 109
byte 1 116
byte 1 114
byte 1 111
byte 1 111
byte 1 112
byte 1 101
byte 1 114
byte 1 47
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 46
byte 1 103
byte 1 108
byte 1 109
byte 1 0
align 1
LABELV $1204
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 53
byte 1 0
align 1
LABELV $1202
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 52
byte 1 0
align 1
LABELV $1200
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 51
byte 1 0
align 1
LABELV $1198
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 50
byte 1 0
align 1
LABELV $1196
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 49
byte 1 0
align 1
LABELV $1195
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 51
byte 1 0
align 1
LABELV $1193
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 50
byte 1 0
align 1
LABELV $1191
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 49
byte 1 0
align 1
LABELV $1190
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 49
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $1188
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 55
byte 1 53
byte 1 0
align 1
LABELV $1186
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 53
byte 1 48
byte 1 0
align 1
LABELV $1184
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 106
byte 1 97
byte 1 110
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 50
byte 1 53
byte 1 0
align 1
LABELV $1179
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 53
byte 1 0
align 1
LABELV $1177
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 52
byte 1 0
align 1
LABELV $1175
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 51
byte 1 0
align 1
LABELV $1173
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 50
byte 1 0
align 1
LABELV $1171
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 49
byte 1 0
align 1
LABELV $1170
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 51
byte 1 0
align 1
LABELV $1168
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 50
byte 1 0
align 1
LABELV $1166
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 49
byte 1 0
align 1
LABELV $1165
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 49
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $1163
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 55
byte 1 53
byte 1 0
align 1
LABELV $1161
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 53
byte 1 48
byte 1 0
align 1
LABELV $1159
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 114
byte 1 111
byte 1 100
byte 1 105
byte 1 97
byte 1 110
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 50
byte 1 53
byte 1 0
align 1
LABELV $1154
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 53
byte 1 0
align 1
LABELV $1152
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 52
byte 1 0
align 1
LABELV $1150
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 51
byte 1 0
align 1
LABELV $1148
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 50
byte 1 0
align 1
LABELV $1146
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 49
byte 1 0
align 1
LABELV $1145
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 51
byte 1 0
align 1
LABELV $1143
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 50
byte 1 0
align 1
LABELV $1141
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 49
byte 1 0
align 1
LABELV $1140
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 49
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $1138
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 55
byte 1 53
byte 1 0
align 1
LABELV $1136
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 53
byte 1 48
byte 1 0
align 1
LABELV $1134
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 115
byte 1 47
byte 1 115
byte 1 116
byte 1 49
byte 1 47
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 50
byte 1 53
byte 1 0
align 1
LABELV $530
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 53
byte 1 0
align 1
LABELV $529
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 52
byte 1 0
align 1
LABELV $528
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 51
byte 1 0
align 1
LABELV $527
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 50
byte 1 0
align 1
LABELV $526
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 116
byte 1 101
byte 1 99
byte 1 116
byte 1 101
byte 1 100
byte 1 49
byte 1 0
align 1
LABELV $525
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 51
byte 1 0
align 1
LABELV $524
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 50
byte 1 0
align 1
LABELV $523
byte 1 37
byte 1 115
byte 1 47
byte 1 100
byte 1 101
byte 1 97
byte 1 116
byte 1 104
byte 1 49
byte 1 0
align 1
LABELV $522
byte 1 37
byte 1 115
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 49
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $521
byte 1 37
byte 1 115
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 55
byte 1 53
byte 1 0
align 1
LABELV $520
byte 1 37
byte 1 115
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 53
byte 1 48
byte 1 0
align 1
LABELV $519
byte 1 37
byte 1 115
byte 1 47
byte 1 112
byte 1 97
byte 1 105
byte 1 110
byte 1 50
byte 1 53
byte 1 0
align 1
LABELV $482
byte 1 94
byte 1 49
byte 1 69
byte 1 82
byte 1 82
byte 1 79
byte 1 82
byte 1 58
byte 1 32
byte 1 102
byte 1 120
byte 1 95
byte 1 114
byte 1 117
byte 1 110
byte 1 110
byte 1 101
byte 1 114
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 97
byte 1 116
byte 1 32
byte 1 37
byte 1 115
byte 1 32
byte 1 104
byte 1 97
byte 1 115
byte 1 32
byte 1 110
byte 1 111
byte 1 32
byte 1 102
byte 1 120
byte 1 70
byte 1 105
byte 1 108
byte 1 101
byte 1 32
byte 1 115
byte 1 112
byte 1 101
byte 1 99
byte 1 105
byte 1 102
byte 1 105
byte 1 101
byte 1 100
byte 1 10
byte 1 0
align 1
LABELV $478
byte 1 102
byte 1 120
byte 1 84
byte 1 97
byte 1 114
byte 1 103
byte 1 101
byte 1 116
byte 1 0
align 1
LABELV $477
byte 1 0
align 1
LABELV $476
byte 1 102
byte 1 120
byte 1 70
byte 1 105
byte 1 108
byte 1 101
byte 1 0
align 1
LABELV $471
byte 1 114
byte 1 97
byte 1 110
byte 1 100
byte 1 111
byte 1 109
byte 1 0
align 1
LABELV $470
byte 1 52
byte 1 48
byte 1 48
byte 1 0
align 1
LABELV $469
byte 1 100
byte 1 101
byte 1 108
byte 1 97
byte 1 121
byte 1 0
align 1
LABELV $463
byte 1 102
byte 1 120
byte 1 95
byte 1 114
byte 1 117
byte 1 110
byte 1 110
byte 1 101
byte 1 114
byte 1 95
byte 1 108
byte 1 105
byte 1 110
byte 1 107
byte 1 58
byte 1 32
byte 1 116
byte 1 97
byte 1 114
byte 1 103
byte 1 101
byte 1 116
byte 1 32
byte 1 119
byte 1 97
byte 1 115
byte 1 32
byte 1 115
byte 1 112
byte 1 101
byte 1 99
byte 1 105
byte 1 102
byte 1 105
byte 1 101
byte 1 100
byte 1 32
byte 1 98
byte 1 117
byte 1 116
byte 1 32
byte 1 105
byte 1 115
byte 1 32
byte 1 110
byte 1 111
byte 1 116
byte 1 32
byte 1 118
byte 1 97
byte 1 108
byte 1 105
byte 1 100
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $456
byte 1 32
byte 1 32
byte 1 45
byte 1 97
byte 1 115
byte 1 115
byte 1 117
byte 1 109
byte 1 105
byte 1 110
byte 1 103
byte 1 32
byte 1 85
byte 1 80
byte 1 32
byte 1 111
byte 1 114
byte 1 105
byte 1 101
byte 1 110
byte 1 116
byte 1 97
byte 1 116
byte 1 105
byte 1 111
byte 1 110
byte 1 46
byte 1 10
byte 1 0
align 1
LABELV $455
byte 1 102
byte 1 120
byte 1 95
byte 1 114
byte 1 117
byte 1 110
byte 1 110
byte 1 101
byte 1 114
byte 1 95
byte 1 108
byte 1 105
byte 1 110
byte 1 107
byte 1 58
byte 1 32
byte 1 116
byte 1 97
byte 1 114
byte 1 103
byte 1 101
byte 1 116
byte 1 32
byte 1 115
byte 1 112
byte 1 101
byte 1 99
byte 1 105
byte 1 102
byte 1 105
byte 1 101
byte 1 100
byte 1 32
byte 1 98
byte 1 117
byte 1 116
byte 1 32
byte 1 110
byte 1 111
byte 1 116
byte 1 32
byte 1 102
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 58
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $398
byte 1 100
byte 1 109
byte 1 103
byte 1 95
byte 1 98
byte 1 111
byte 1 120
byte 1 0
align 1
LABELV $363
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 47
byte 1 112
byte 1 105
byte 1 99
byte 1 107
byte 1 117
byte 1 112
byte 1 104
byte 1 101
byte 1 97
byte 1 108
byte 1 116
byte 1 104
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $329
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 112
byte 1 108
byte 1 97
byte 1 121
byte 1 101
byte 1 114
byte 1 47
byte 1 112
byte 1 105
byte 1 99
byte 1 107
byte 1 117
byte 1 112
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $316
byte 1 47
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 115
byte 1 47
byte 1 105
byte 1 116
byte 1 101
byte 1 109
byte 1 115
byte 1 47
byte 1 112
byte 1 115
byte 1 100
byte 1 95
byte 1 98
byte 1 105
byte 1 103
byte 1 46
byte 1 109
byte 1 100
byte 1 51
byte 1 0
align 1
LABELV $315
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 109
byte 1 111
byte 1 118
byte 1 101
byte 1 114
byte 1 115
byte 1 47
byte 1 111
byte 1 98
byte 1 106
byte 1 101
byte 1 99
byte 1 116
byte 1 115
byte 1 47
byte 1 117
byte 1 115
byte 1 101
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 115
byte 1 116
byte 1 97
byte 1 116
byte 1 105
byte 1 111
byte 1 110
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $310
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 105
byte 1 110
byte 1 116
byte 1 101
byte 1 114
byte 1 102
byte 1 97
byte 1 99
byte 1 101
byte 1 47
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 99
byte 1 111
byte 1 110
byte 1 95
byte 1 101
byte 1 109
byte 1 112
byte 1 116
byte 1 121
byte 1 46
byte 1 109
byte 1 112
byte 1 51
byte 1 0
align 1
LABELV $308
byte 1 47
byte 1 109
byte 1 111
byte 1 100
byte 1 101
byte 1 108
byte 1 115
byte 1 47
byte 1 105
byte 1 116
byte 1 101
byte 1 109
byte 1 115
byte 1 47
byte 1 97
byte 1 95
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 95
byte 1 99
byte 1 111
byte 1 110
byte 1 118
byte 1 101
byte 1 114
byte 1 116
byte 1 101
byte 1 114
byte 1 46
byte 1 109
byte 1 100
byte 1 51
byte 1 0
align 1
LABELV $300
byte 1 83
byte 1 80
byte 1 95
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 95
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 95
byte 1 102
byte 1 108
byte 1 111
byte 1 111
byte 1 114
byte 1 95
byte 1 117
byte 1 110
byte 1 105
byte 1 116
byte 1 58
byte 1 32
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 95
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 95
byte 1 102
byte 1 108
byte 1 111
byte 1 111
byte 1 114
byte 1 95
byte 1 117
byte 1 110
byte 1 105
byte 1 116
byte 1 32
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 115
byte 1 111
byte 1 108
byte 1 105
byte 1 100
byte 1 32
byte 1 97
byte 1 116
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $285
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 105
byte 1 110
byte 1 116
byte 1 101
byte 1 114
byte 1 102
byte 1 97
byte 1 99
byte 1 101
byte 1 47
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 99
byte 1 111
byte 1 110
byte 1 95
byte 1 100
byte 1 111
byte 1 110
byte 1 101
byte 1 46
byte 1 109
byte 1 112
byte 1 51
byte 1 0
align 1
LABELV $268
byte 1 115
byte 1 111
byte 1 117
byte 1 110
byte 1 100
byte 1 47
byte 1 105
byte 1 110
byte 1 116
byte 1 101
byte 1 114
byte 1 102
byte 1 97
byte 1 99
byte 1 101
byte 1 47
byte 1 115
byte 1 104
byte 1 105
byte 1 101
byte 1 108
byte 1 100
byte 1 99
byte 1 111
byte 1 110
byte 1 95
byte 1 114
byte 1 117
byte 1 110
byte 1 46
byte 1 119
byte 1 97
byte 1 118
byte 1 0
align 1
LABELV $256
byte 1 99
byte 1 104
byte 1 97
byte 1 114
byte 1 103
byte 1 101
byte 1 114
byte 1 97
byte 1 116
byte 1 101
byte 1 0
align 1
LABELV $253
byte 1 99
byte 1 111
byte 1 117
byte 1 110
byte 1 116
byte 1 0
align 1
LABELV $204
byte 1 83
byte 1 80
byte 1 95
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 95
byte 1 104
byte 1 111
byte 1 108
byte 1 111
byte 1 99
byte 1 114
byte 1 111
byte 1 110
byte 1 58
byte 1 32
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 95
byte 1 104
byte 1 111
byte 1 108
byte 1 111
byte 1 99
byte 1 114
byte 1 111
byte 1 110
byte 1 32
byte 1 115
byte 1 116
byte 1 97
byte 1 114
byte 1 116
byte 1 115
byte 1 111
byte 1 108
byte 1 105
byte 1 100
byte 1 32
byte 1 97
byte 1 116
byte 1 32
byte 1 37
byte 1 115
byte 1 10
byte 1 0
align 1
LABELV $126
byte 1 48
byte 1 0
align 1
LABELV $125
byte 1 114
byte 1 111
byte 1 108
byte 1 108
byte 1 0
align 1
LABELV $109
byte 1 67
byte 1 111
byte 1 117
byte 1 108
byte 1 100
byte 1 110
byte 1 39
byte 1 116
byte 1 32
byte 1 102
byte 1 105
byte 1 110
byte 1 100
byte 1 32
byte 1 116
byte 1 97
byte 1 114
byte 1 103
byte 1 101
byte 1 116
byte 1 32
byte 1 102
byte 1 111
byte 1 114
byte 1 32
byte 1 109
byte 1 105
byte 1 115
byte 1 99
byte 1 95
byte 1 112
byte 1 97
byte 1 114
byte 1 116
byte 1 97
byte 1 108
byte 1 95
byte 1 115
byte 1 117
byte 1 114
byte 1 102
byte 1 97
byte 1 99
byte 1 101
byte 1 10
byte 1 0
