heretic2-sdk/Toolkit/Programming/GameCode/game/g_spawn.c
1998-11-24 00:00:00 +00:00

770 lines
No EOL
30 KiB
C

#include "g_local.h"
typedef struct
{
char *name;
void (*spawn)(edict_t *ent);
int CID;
} spawn_t;
void SP_info_player_start (edict_t *ent);
void SP_info_player_deathmatch (edict_t *ent);
void SP_info_player_coop (edict_t *ent);
void SP_info_player_intermission (edict_t *ent);
void SP_info_buoy (edict_t *ent);
void SP_func_plat (edict_t *ent);
void SP_func_rotating (edict_t *ent);
void SP_func_button (edict_t *ent);
void SP_func_door (edict_t *ent);
void SP_func_door_secret (edict_t *ent);
void SP_func_door_rotating (edict_t *ent);
void SP_func_water (edict_t *ent);
void SP_func_train (edict_t *ent);
void SP_func_wall (edict_t *self);
void SP_func_object (edict_t *self);
void SP_func_timer (edict_t *self);
void SP_func_areaportal (edict_t *ent);
void SP_func_monsterspawner (edict_t *ent);
void SP_trigger_Activate(edict_t *self);
void SP_trigger_Always (edict_t *ent);
void SP_trigger_Counter (edict_t *ent);
void SP_trigger_Damage(edict_t *self);
void SP_trigger_Deactivate(edict_t *self);
void SP_trigger_Elevator (edict_t *ent);
//void SP_trigger_flamethrower (edict_t *ent);
void SP_trigger_fogdensity(edict_t *self);
void SP_trigger_Gravity(edict_t *self);
void SP_trigger_mappercentage(edict_t *self);
void SP_trigger_quit_to_menu(edict_t *self);
void SP_trigger_mission_give(edict_t *self);
void SP_trigger_mission_take(edict_t *self);
void SP_trigger_MonsterJump(edict_t *self);
void SP_trigger_goto_buoy(edict_t *self);
void SP_trigger_Multiple (edict_t *ent);
void SP_trigger_Once (edict_t *ent);
void SP_trigger_PlayerPushButton (edict_t *ent);
void SP_trigger_PlayerPushLever (edict_t *ent);
void SP_trigger_PlayerUsePuzzle (edict_t *ent);
void SP_trigger_push(edict_t *self);
void SP_trigger_puzzle (edict_t *ent);
void SP_trigger_quake (edict_t *ent);
void SP_trigger_Relay (edict_t *ent);
void SP_trigger_lightning (edict_t *ent);
void SP_trigger_farclip (edict_t *ent);
void SP_trigger_endgame(edict_t *self);
void SP_choose_CDTrack(edict_t *self);
void SP_target_explosion (edict_t *ent);
void SP_target_changelevel (edict_t *ent);
void SP_target_crosslevel_trigger (edict_t *ent);
void SP_target_crosslevel_target (edict_t *ent);
void SP_target_lightramp (edict_t *self);
void SP_target_earthquake (edict_t *ent);
void SP_worldspawn (edict_t *ent);
void SP_light (edict_t *self);
void SP_info_null (edict_t *self);
void SP_info_notnull (edict_t *self);
void SP_path_corner (edict_t *self);
void SP_point_combat (edict_t *self);
void SP_misc_teleporter (edict_t *self);
void SP_misc_teleporter_dest (edict_t *self);
void misc_update_spawner (edict_t *self);
void SP_misc_remote_camera (edict_t *self);
void SP_misc_magic_portal (edict_t *self);
void SP_misc_fire_sparker (edict_t *ent);
void SP_Monster_Gkrokon(edict_t *Self);
void SP_misc_flag (edict_t *ent);
void SP_monster_gorgon (edict_t *self);
void SP_monster_gorgon_leader (edict_t *self);
void SP_monster_rat (edict_t *self);
void SP_monster_rat_giant (edict_t *self);
void SP_monster_chicken (edict_t *self);
void SP_monster_plagueElf(edict_t *self);
void SP_monster_palace_plague_guard(edict_t *self);
void SP_monster_palace_plague_guard_invisible(edict_t *self);
void SP_monster_fish (edict_t *self);
void SP_monster_harpy (edict_t *self);
void SP_monster_spreader (edict_t *self);
void SP_monster_elflord (edict_t *self);
void SP_monster_plague_ssithra (edict_t *self);
void SP_monster_mssithra (edict_t *self);
void SP_monster_chkroktk (edict_t *self);
void SP_monster_tcheckrik_male (edict_t *self);
void SP_monster_tcheckrik_female (edict_t *self);
void SP_monster_tcheckrik_mothers (edict_t *self);
void SP_monster_high_priestess (edict_t *self);
void SP_monster_ogle (edict_t *self);
void SP_monster_seraph_overlord (edict_t *self);
void SP_monster_seraph_guard (edict_t *self);
void SP_monster_assassin (edict_t *self);
void SP_monster_morcalavin (edict_t *self);
void SP_monster_trial_beast (edict_t *self);
void SP_monster_imp (edict_t *self);
void SP_monster_bee (edict_t *self);
void SP_character_corvus1 (edict_t *self);
void SP_character_corvus2 (edict_t *self);
void SP_character_corvus3 (edict_t *self);
void SP_character_corvus4 (edict_t *self);
void SP_character_corvus5 (edict_t *self);
void SP_character_corvus6 (edict_t *self);
void SP_character_corvus7 (edict_t *self);
void SP_character_corvus8 (edict_t *self);
void SP_character_corvus9 (edict_t *self);
void SP_character_dranor (edict_t *self);
void SP_character_elflord (edict_t *self);
void SP_character_highpriestess (edict_t *self);
void SP_character_highpriestess2 (edict_t *self);
void SP_character_morcalavin (edict_t *self);
void SP_character_sidhe_guard (edict_t *self);
void SP_character_siernan1 (edict_t *self);
void SP_character_siernan2 (edict_t *self);
void SP_character_ssithra_scout (edict_t *self);
void SP_character_ssithra_victim (edict_t *self);
void SP_character_tome (edict_t *self);
void SP_breakable_brush (edict_t *ent);
void SP_light_walltorch (edict_t *ent);
//void SP_light_flame (edict_t *ent);
void SP_light_floortorch (edict_t *ent);
void SP_light_torch1(edict_t *ent);
void SP_light_gem2(edict_t *ent);
void SP_light_chandelier1 (edict_t *ent);
void SP_light_chandelier2 (edict_t *ent);
void SP_light_chandelier3 (edict_t *ent);
void SP_light_lantern1 (edict_t *ent);
void SP_light_lantern2 (edict_t *ent);
void SP_light_lantern3 (edict_t *ent);
void SP_light_lantern4 (edict_t *ent);
void SP_light_lantern5 (edict_t *ent);
void SP_light_buglight (edict_t *ent);
void SP_env_fire (edict_t *self);
void SP_env_dust (edict_t *self);
void SP_env_smoke (edict_t *self);
void SP_env_mist(edict_t *self);
void SP_env_bubbler(edict_t *self);
void SP_env_water_drip(edict_t *self);
void SP_env_water_fountain(edict_t *self);
void SP_env_waterfall_base(edict_t *self);
void SP_env_sun1(edict_t *ent);
void SP_env_muck(edict_t *ent);
//void SP_env_galaxy (edict_t *ent);
void SP_sound_ambient_silverspring (edict_t *ent);
void SP_sound_ambient_swampcanyon (edict_t *ent);
void SP_sound_ambient_andoria (edict_t *ent);
void SP_sound_ambient_hive (edict_t *ent);
void SP_sound_ambient_mine (edict_t *ent);
void SP_sound_ambient_cloudfortress (edict_t *ent);
// Object stuff
void SP_obj_andwallhanging(edict_t *ent);
void SP_obj_banner(edict_t *ent);
void SP_obj_banneronpole(edict_t *ent);
void SP_obj_barrel(edict_t *ent);
void SP_obj_barrel_explosive(edict_t *ent);
void SP_obj_barrel_metal(edict_t *ent);
void SP_obj_basket(edict_t *ent);
void SP_obj_bench(edict_t *ent);
void SP_obj_bigcrystal(edict_t *self);
void SP_obj_biotank (edict_t *self);
void SP_obj_bloodsplat(edict_t *ent);
void SP_obj_bookclosed(edict_t *ent);
void SP_obj_bookopen(edict_t *ent);
void SP_obj_bottle1(edict_t *ent);
void SP_obj_broom (edict_t *ent);
void SP_obj_bucket (edict_t *ent);
void SP_obj_bush1 (edict_t *ent);
void SP_obj_bush2 (edict_t *ent);
void SP_obj_cactus (edict_t *ent);
void SP_obj_cactus3 (edict_t *ent);
void SP_obj_cactus4 (edict_t *ent);
void SP_obj_cauldron(edict_t *ent);
void SP_obj_chair1(edict_t *ent);
void SP_obj_chair2(edict_t *ent);
void SP_obj_chair3(edict_t *ent);
void SP_obj_chest1(edict_t *ent);
void SP_obj_chest2(edict_t *ent);
void SP_obj_chest3(edict_t *ent);
void SP_obj_choppeddude(edict_t *ent);
void SP_obj_claybowl (edict_t *ent);
void SP_obj_clayjar (edict_t *ent);
void SP_obj_cocoon(edict_t *ent);
void SP_obj_cocoonopen(edict_t *ent);
void SP_obj_cog1(edict_t *ent);
void SP_obj_corpse1(edict_t *self);
void SP_obj_corpse2(edict_t *self);
void SP_obj_corpse_ogle(edict_t *self);
void SP_obj_corpse_ssithra(edict_t *self);
void SP_obj_dying_elf(edict_t *self);
void SP_obj_eggpan(edict_t *ent);
void SP_obj_eyeball_jar(edict_t *ent);
void SP_obj_firepot(edict_t *ent);
void SP_obj_fishhead1(edict_t *ent);
void SP_obj_fishhead2(edict_t *ent);
void SP_obj_fishtrap (edict_t *ent);
void SP_obj_flagonpole (edict_t *ent);
void SP_obj_floor_candelabrum(edict_t *ent);
void SP_obj_fountain_fish(edict_t *ent);
void SP_obj_frypan(edict_t *ent);
void SP_obj_gascan(edict_t *ent);
void SP_obj_gorgonbones(edict_t *ent);
void SP_obj_grass(edict_t *ent);
void SP_obj_hangingdude(edict_t *ent);
void SP_obj_hanging_ogle(edict_t *ent);
void SP_obj_hivepriestessssymbol (edict_t *self);
void SP_obj_jawbone(edict_t *ent);
void SP_obj_jug1(edict_t *ent);
void SP_obj_kettle(edict_t *ent);
void SP_obj_lab_parts_container(edict_t *ent);
void SP_obj_lab_tray(edict_t *ent);
void SP_obj_larva(edict_t *ent);
void SP_obj_larvabrokenegg(edict_t *ent);
void SP_obj_larvaegg(edict_t *ent);
void SP_obj_lever1 (edict_t *ent);
void SP_obj_lever2 (edict_t *ent);
void SP_obj_lever3 (edict_t *ent);
void SP_obj_metalchunk1(edict_t *ent);
void SP_obj_metalchunk2(edict_t *ent);
void SP_obj_metalchunk3(edict_t *ent);
void SP_obj_minecart(edict_t *ent);
void SP_obj_minecart2(edict_t *ent);
void SP_obj_minecart3(edict_t *ent);
void SP_obj_moss1(edict_t *self);
void SP_obj_moss2(edict_t *self);
void SP_obj_moss3(edict_t *self);
void SP_obj_moss4(edict_t *self);
void SP_obj_moss5(edict_t *self);
void SP_obj_nest(edict_t *self);
void SP_obj_pick(edict_t *ent);
void SP_obj_pipe1(edict_t *ent);
void SP_obj_pipe2(edict_t *ent);
void SP_obj_pipewheel(edict_t *ent);
void SP_obj_plant1(edict_t *ent);
void SP_obj_plant2(edict_t *ent);
void SP_obj_plant3(edict_t *ent);
void SP_obj_pot1(edict_t *ent);
void SP_obj_pot2(edict_t *ent);
void SP_obj_pottedplant(edict_t *ent);
void SP_obj_pushcart(edict_t *ent);
void SP_obj_queenchair(edict_t *ent);
void SP_obj_queenthrone(edict_t *ent);
void SP_obj_ring_plaque2 (edict_t *ent);
void SP_obj_rocks1(edict_t *ent);
void SP_obj_rocks2(edict_t *ent);
void SP_obj_rope(edict_t *ent);
void SP_obj_ropechain (edict_t *ent);
void SP_obj_scroll(edict_t *ent);
void SP_obj_seasonglobe(edict_t *ent);
void SP_obj_shovel(edict_t *ent);
void SP_obj_shrine(edict_t *ent);
void SP_obj_sign1(edict_t *ent);
void SP_obj_sign4(edict_t *ent);
void SP_obj_skullpole(edict_t *ent);
void SP_obj_spellbook(edict_t *ent);
void SP_obj_stalactite1(edict_t *ent);
void SP_obj_stalactite2(edict_t *ent);
void SP_obj_stalactite3(edict_t *ent);
void SP_obj_stalagmite1(edict_t *ent);
void SP_obj_stalagmite2(edict_t *ent);
void SP_obj_stalagmite3(edict_t *ent);
void SP_obj_statue_corvus (edict_t *ent);
void SP_obj_statue_boulderfish (edict_t *ent);
void SP_obj_statue_dolphin1(edict_t *ent);
void SP_obj_statue_dolphin2(edict_t *ent);
void SP_obj_statue_dolphin3(edict_t *ent);
void SP_obj_statue_dolphin4(edict_t *ent);
void SP_obj_statue_dragon (edict_t *ent);
void SP_obj_statue_dragonhead (edict_t *ent);
void SP_obj_statue_duckbill1(edict_t *ent);
void SP_obj_statue_duckbill2(edict_t *ent);
void SP_obj_statue_guardian(edict_t *ent);
void SP_obj_statue_saraphbust(edict_t *ent);
void SP_obj_statue_sariph(edict_t *ent);
void SP_obj_statue_sithraguard(edict_t *ent);
void SP_obj_statue_tchecktrik_bust (edict_t *self);
void SP_obj_statue_techeckrikleft (edict_t *self);
void SP_obj_statue_techeckrikright (edict_t *self);
void SP_obj_statue_techeckriktomb (edict_t *self);
void SP_obj_stein(edict_t *ent);
void SP_obj_swampflat_top(edict_t *ent);
void SP_obj_swampflat_bottom(edict_t *ent);
void SP_obj_table1(edict_t *ent);
void SP_obj_table2(edict_t *ent);
void SP_obj_tapper(edict_t *ent);
void SP_obj_throne (edict_t *ent);
void SP_obj_torture_bed (edict_t *ent);
void SP_obj_torture_ironmaiden (edict_t *ent);
void SP_obj_torture_rack (edict_t *ent);
void SP_obj_torture_table (edict_t *ent);
void SP_obj_torture_wallring (edict_t *ent);
void SP_obj_tree(edict_t *ent);
void SP_obj_tree2(edict_t *ent);
void SP_obj_tree3(edict_t *ent);
void SP_obj_treefallen(edict_t *ent);
void SP_obj_treestump(edict_t *ent);
void SP_obj_treetall(edict_t *ent);
void SP_obj_treetop(edict_t *ent);
void SP_obj_urn (edict_t *ent);
void SP_obj_venusflytrap(edict_t *ent);
void SP_obj_wallringplaque(edict_t *ent);
void SP_obj_web(edict_t *ent);
void SP_obj_wheelbarrow(edict_t *ent);
void SP_obj_wheelbarrowdamaged(edict_t *ent);
void SP_obj_woodpile(edict_t *ent);
void SP_obj_morcalavin_barrier(edict_t *ent);
void SP_flamethrower(edict_t *ent);
void SP_item_spitter(edict_t *ent);
// shrine stuff
void shrine_heal (edict_t *ent);
void shrine_armor (edict_t *ent);
void shrine_armor_gold (edict_t *ent);
void shrine_staff (edict_t *ent);
void shrine_lung (edict_t *ent);
void shrine_light (edict_t *ent);
void shrine_mana (edict_t *ent);
void shrine_ghost (edict_t *ent);
void shrine_reflect (edict_t *ent);
void shrine_powerup (edict_t *ent);
void shrine_random (edict_t *ent);
void shrine_speed (edict_t *ent);
void SP_script_runner (edict_t *ent);
spawn_t spawns[]=
{
// Quake2 specific spawns.
{"info_player_start", SP_info_player_start,-1},
{"info_player_deathmatch", SP_info_player_deathmatch,-1},
{"info_player_coop", SP_info_player_coop,-1},
{"info_player_intermission", SP_info_player_intermission,-1},
{"func_plat", SP_func_plat,-1},
{"func_button", SP_func_button,CID_BUTTON},
{"func_door", SP_func_door,CID_FUNC_DOOR},
{"func_door_secret", SP_func_door_secret,-1},
{"func_door_rotating", SP_func_door_rotating,CID_FUNC_ROTATE},
{"func_rotating", SP_func_rotating,CID_FUNC_ROTATE},
{"func_train", SP_func_train,-1},
{"func_water", SP_func_water,-1},
{"func_areaportal", SP_func_areaportal,-1},
{"func_monsterspawner", SP_func_monsterspawner,-1},
{"func_wall", SP_func_wall,-1},
{"func_object", SP_func_object,-1},
{"func_timer", SP_func_timer,-1},
{"trigger_Activate", SP_trigger_Activate,CID_TRIGGER},
{"trigger_always", SP_trigger_Always,CID_TRIGGER},
{"trigger_Damage", SP_trigger_Damage,CID_TRIG_DAMAGE},
{"trigger_Deactivate", SP_trigger_Deactivate,CID_TRIGGER},
{"trigger_counter", SP_trigger_Counter,CID_TRIGGER},
{"trigger_elevator", SP_trigger_Elevator,CID_TRIGGER},
// {"trigger_flamethrower", SP_trigger_flamethrower,CID_TRIGGER},
{"trigger_fogdensity", SP_trigger_fogdensity,CID_TRIGGER},
{"trigger_Gravity", SP_trigger_Gravity,-1},
{"trigger_lightning", SP_trigger_lightning,CID_TRIGGER},
{"trigger_mappercentage", SP_trigger_mappercentage,CID_TRIGGER},
{"trigger_quit_to_menu", SP_trigger_quit_to_menu,CID_TRIGGER},
{"trigger_mission_give", SP_trigger_mission_give,CID_TRIGGER},
{"trigger_mission_take", SP_trigger_mission_take,CID_TRIGGER},
{"trigger_MonsterJump", SP_trigger_MonsterJump,-1},
{"trigger_goto_buoy", SP_trigger_goto_buoy,-1},
{"trigger_multiple", SP_trigger_Multiple,CID_TRIGGER},
{"trigger_playerpushbutton", SP_trigger_PlayerPushButton,CID_TRIGGER},
{"trigger_playerpushlever", SP_trigger_PlayerPushLever,CID_TRIGGER},
{"trigger_playerusepuzzle", SP_trigger_PlayerUsePuzzle,CID_TRIGGER},
{"trigger_push", SP_trigger_push,CID_TRIG_PUSH},
{"trigger_puzzle", SP_trigger_puzzle,CID_TRIGGER},
{"trigger_once", SP_trigger_Once,CID_TRIGGER},
{"trigger_quake", SP_trigger_quake,CID_TRIGGER},
{"trigger_relay", SP_trigger_Relay,CID_TRIGGER},
{"trigger_farclip", SP_trigger_farclip,CID_TRIGGER},
{"trigger_endgame", SP_trigger_endgame,CID_TRIGGER},
{"choose_CDTrack", SP_choose_CDTrack,-1},
{"target_explosion", SP_target_explosion,-1},
{"target_changelevel", SP_target_changelevel,-1},
{"target_crosslevel_trigger", SP_target_crosslevel_trigger,-1},
{"target_crosslevel_target", SP_target_crosslevel_target,-1},
//{"target_actor", SP_target_actor,-1},
{"target_lightramp", SP_target_lightramp,-1},
{"target_earthquake", SP_target_earthquake,-1},
{"worldspawn", SP_worldspawn,-1},
{"light", SP_light,-1},
{"info_null", SP_info_null,-1},
{"func_group", SP_info_null,-1},
{"info_notnull", SP_info_notnull,-1},
{"path_corner", SP_path_corner,-1},
{"point_combat", SP_point_combat,-1},
//{"misc_actor", SP_misc_actor,-1},
{"misc_teleporter", SP_misc_teleporter,CID_TELEPORTER},
{"misc_teleporter_dest", SP_misc_teleporter_dest,-1},
{"misc_update_spawner", misc_update_spawner, CID_TRIGGER},
{"misc_remote_camera", SP_misc_remote_camera,-1},
{"misc_magic_portal", SP_misc_magic_portal, -1},
{"misc_fire_sparker", SP_misc_fire_sparker, -1},
{"misc_flag", SP_misc_flag,-1},
{"monster_gorgon",SP_monster_gorgon,CID_GORGON},
{"monster_rat",SP_monster_rat,CID_RAT},
{"monster_plagueElf", SP_monster_plagueElf,CID_PLAGUEELF},
{"monster_fish", SP_monster_fish,CID_FISH},
{"monster_harpy", SP_monster_harpy,CID_HARPY},
{"monster_spreader", SP_monster_spreader,CID_SPREADER},
{"monster_assassin",SP_monster_assassin,CID_ASSASSIN},
{"monster_chicken",SP_monster_chicken,CID_CHICKEN},
{"monster_tcheckrik_male",SP_monster_tcheckrik_male,CID_TCHECKRIK},
{"monster_gkrokon", SP_Monster_Gkrokon,CID_GKROKON},
#if !DEMO_CODE
{"monster_gorgon_leader",SP_monster_gorgon_leader,CID_GORGON},
{"monster_rat_giant",SP_monster_rat_giant,CID_RAT},
{"monster_palace_plague_guard", SP_monster_palace_plague_guard,CID_PLAGUEELF},
{"monster_palace_plague_guard_invisible", SP_monster_palace_plague_guard_invisible,CID_PLAGUEELF},
{"monster_elflord", SP_monster_elflord,CID_ELFLORD},
{"monster_ssithra",SP_monster_plague_ssithra,CID_SSITHRA},
{"monster_mssithra",SP_monster_mssithra,CID_MSSITHRA},
{"monster_chkroktk",SP_monster_chkroktk,CID_RAT},
{"monster_tcheckrik_female",SP_monster_tcheckrik_female,CID_TCHECKRIK},
{"monster_tcheckrik_mothers",SP_monster_tcheckrik_mothers,CID_MOTHER},
{"monster_high_priestess",SP_monster_high_priestess,CID_HIGHPRIESTESS},
{"monster_ogle",SP_monster_ogle,CID_OGLE},
{"monster_seraph_overlord",SP_monster_seraph_overlord,CID_SERAPH_OVERLORD},
{"monster_seraph_guard",SP_monster_seraph_guard,CID_SERAPH_GUARD},
{"monster_bee",SP_monster_bee,CID_BEE},
{"monster_morcalavin",SP_monster_morcalavin,CID_MORK},
{"monster_trial_beast",SP_monster_trial_beast,CID_TBEAST},
{"monster_imp", SP_monster_imp,CID_IMP},
#endif
{"character_corvus1",SP_character_corvus1,CID_CORVUS},
{"character_corvus2",SP_character_corvus2,CID_CORVUS2},
{"character_corvus3",SP_character_corvus3,CID_CORVUS3},
{"character_corvus4",SP_character_corvus4,CID_CORVUS4},
{"character_corvus5",SP_character_corvus5,CID_CORVUS5},
{"character_corvus6",SP_character_corvus6,CID_CORVUS6},
{"character_corvus7",SP_character_corvus7,CID_CORVUS7},
{"character_corvus8",SP_character_corvus8,CID_CORVUS8},
{"character_corvus9",SP_character_corvus9,CID_CORVUS9},
{"character_dranor",SP_character_dranor,CID_DRANOR},
{"character_elflord",SP_character_elflord,CID_C_ELFLORD},
{"character_highpriestess",SP_character_highpriestess,CID_C_HIGHPRIESTESS},
{"character_highpriestess2",SP_character_highpriestess2,CID_C_HIGHPRIESTESS2},
{"character_morcalavin",SP_character_morcalavin,CID_C_MORCALAVIN},
{"character_sidhe_guard",SP_character_sidhe_guard,CID_PLAGUEELF},
{"character_siernan1",SP_character_siernan1,CID_C_SIERNAN1},
{"character_siernan2",SP_character_siernan2,CID_C_SIERNAN2},
{"character_ssithra_scout",SP_character_ssithra_scout,CID_SSITHRA_SCOUT},
{"character_ssithra_victim",SP_character_ssithra_victim,CID_SSITHRA_VICTIM},
{"character_tome",SP_character_tome,CID_C_TOME},
// Heretic2 specific spawns.
{"breakable_brush",SP_breakable_brush,CID_BBRUSH},
{"light_walltorch",SP_light_walltorch,CID_LIGHT},
{"light_floortorch",SP_light_floortorch,CID_LIGHT},
// {"light_flame",SP_light_flame,CID_LIGHT},
{"light_torch1",SP_light_torch1,CID_LIGHT},
{"light_gem2",SP_light_gem2,CID_LIGHT},
{"light_chandelier1",SP_light_chandelier1,CID_LIGHT},
{"light_chandelier2",SP_light_chandelier2,CID_LIGHT},
{"light_chandelier3",SP_light_chandelier3,CID_LIGHT},
{"light_lantern1",SP_light_lantern1,CID_LIGHT},
{"light_lantern2",SP_light_lantern2,CID_LIGHT},
{"light_lantern3",SP_light_lantern3,CID_LIGHT},
{"light_lantern4",SP_light_lantern4,CID_LIGHT},
{"light_lantern5",SP_light_lantern5,CID_LIGHT},
{"light_buglight",SP_light_buglight,CID_LIGHT},
{"env_fire",SP_env_fire,CID_OBJECT},
{"env_dust",SP_env_dust,CID_OBJECT},
{"env_smoke",SP_env_smoke,CID_OBJECT},
{"env_mist",SP_env_mist,CID_OBJECT},
{"env_bubbler",SP_env_bubbler,CID_OBJECT},
{"env_water_drip",SP_env_water_drip,CID_OBJECT},
{"env_water_fountain",SP_env_water_fountain,CID_OBJECT},
{"env_waterfall_base",SP_env_waterfall_base,CID_OBJECT},
{"env_sun1",SP_env_sun1,CID_OBJECT},
{"env_muck",SP_env_muck,CID_OBJECT},
// {"env_galaxy",SP_env_galaxy,CID_OBJECT},
{"sound_ambient_silverspring",SP_sound_ambient_silverspring,-1},
{"sound_ambient_swampcanyon",SP_sound_ambient_swampcanyon,-1},
{"sound_ambient_andoria",SP_sound_ambient_andoria,-1},
{"sound_ambient_hive",SP_sound_ambient_hive,-1},
{"sound_ambient_mine",SP_sound_ambient_mine,-1},
{"sound_ambient_cloudfortress",SP_sound_ambient_cloudfortress,-1},
{"obj_andwallhanging",SP_obj_andwallhanging,CID_OBJECT},
{"obj_banner",SP_obj_banner,CID_OBJECT},
{"obj_banneronpole",SP_obj_banneronpole,CID_OBJECT},
{"obj_barrel",SP_obj_barrel,CID_OBJECT},
{"obj_barrel_explosive",SP_obj_barrel_explosive,CID_OBJECT},
{"obj_barrel_metal",SP_obj_barrel_metal,CID_OBJECT},
{"obj_basket",SP_obj_basket,CID_OBJECT},
{"obj_bench",SP_obj_bench,CID_OBJECT},
{"obj_bigcrystal",SP_obj_bigcrystal,CID_OBJECT},
{"obj_biotank",SP_obj_biotank,CID_OBJECT},
{"obj_bloodsplat",SP_obj_bloodsplat,CID_OBJECT},
{"obj_bookclosed",SP_obj_bookclosed,CID_OBJECT},
{"obj_bookopen",SP_obj_bookopen,CID_OBJECT},
{"obj_bottle1",SP_obj_bottle1,CID_OBJECT},
{"obj_broom",SP_obj_broom,CID_OBJECT},
{"obj_bucket",SP_obj_bucket,CID_OBJECT},
{"obj_bush1",SP_obj_bush1,CID_OBJECT},
{"obj_bush2",SP_obj_bush2,CID_OBJECT},
{"obj_cactus",SP_obj_cactus,CID_OBJECT},
{"obj_cactus3",SP_obj_cactus3,CID_OBJECT},
{"obj_cactus4",SP_obj_cactus4,CID_OBJECT},
{"obj_cauldron",SP_obj_cauldron,CID_OBJECT},
{"obj_chair1",SP_obj_chair1,CID_OBJECT},
{"obj_chair2",SP_obj_chair2,CID_OBJECT},
{"obj_chair3",SP_obj_chair3,CID_OBJECT},
{"obj_chest1",SP_obj_chest1,CID_OBJECT},
{"obj_chest2",SP_obj_chest2,CID_OBJECT},
{"obj_chest3",SP_obj_chest3,CID_OBJECT},
{"obj_choppeddude",SP_obj_choppeddude,CID_OBJECT},
{"obj_claybowl",SP_obj_claybowl,CID_OBJECT},
{"obj_clayjar",SP_obj_clayjar,CID_OBJECT},
{"obj_cocoon",SP_obj_cocoon,CID_OBJECT},
{"obj_cocoonopen",SP_obj_cocoonopen,CID_OBJECT},
{"obj_cog1",SP_obj_cog1,CID_OBJECT},
{"obj_corpse1",SP_obj_corpse1,CID_OBJECT},
{"obj_corpse2",SP_obj_corpse2,CID_OBJECT},
{"obj_corpse_ogle",SP_obj_corpse_ogle,CID_OBJECT},
{"obj_corpse_ssithra",SP_obj_corpse_ssithra,CID_OBJECT},
{"obj_dying_elf",SP_obj_dying_elf,CID_OBJECT},
{"obj_eggpan",SP_obj_eggpan,CID_OBJECT},
{"obj_eyeball_jar",SP_obj_eyeball_jar,CID_OBJECT},
{"obj_firepot",SP_obj_firepot,CID_OBJECT},
{"obj_fishhead1",SP_obj_fishhead1,CID_OBJECT},
{"obj_fishhead2",SP_obj_fishhead2,CID_OBJECT},
{"obj_fishtrap",SP_obj_fishtrap,CID_OBJECT},
{"obj_flagonpole",SP_obj_flagonpole,CID_OBJECT},
{"obj_floor_candelabrum",SP_obj_floor_candelabrum,CID_OBJECT},
{"obj_fountain_fish",SP_obj_fountain_fish,CID_OBJECT},
{"obj_frypan",SP_obj_frypan,CID_OBJECT},
{"obj_gascan",SP_obj_gascan,CID_OBJECT},
{"obj_gorgonbones",SP_obj_gorgonbones,CID_OBJECT},
{"obj_grass",SP_obj_grass,CID_OBJECT},
{"obj_hangingdude",SP_obj_hangingdude,CID_OBJECT},
{"obj_hanging_ogle",SP_obj_hanging_ogle,CID_OBJECT},
{"obj_hivepriestessssymbol",SP_obj_hivepriestessssymbol,CID_OBJECT},
{"obj_jawbone",SP_obj_jawbone,CID_OBJECT},
{"obj_jug1",SP_obj_jug1,CID_OBJECT},
{"obj_kettle",SP_obj_kettle,CID_OBJECT},
{"obj_lab_parts_container",SP_obj_lab_parts_container,CID_OBJECT},
{"obj_lab_tray",SP_obj_lab_tray,CID_OBJECT},
{"obj_larva",SP_obj_larva,CID_OBJECT},
{"obj_larvabrokenegg",SP_obj_larvabrokenegg,CID_OBJECT},
{"obj_larvaegg",SP_obj_larvaegg,CID_OBJECT},
{"obj_lever1",SP_obj_lever1,CID_LEVER},
{"obj_lever2",SP_obj_lever2,CID_LEVER},
{"obj_lever3",SP_obj_lever3,CID_LEVER},
{"obj_metalchunk1",SP_obj_metalchunk1,CID_OBJECT},
{"obj_metalchunk2",SP_obj_metalchunk2,CID_OBJECT},
{"obj_metalchunk3",SP_obj_metalchunk3,CID_OBJECT},
{"obj_minecart",SP_obj_minecart,CID_OBJECT},
{"obj_minecart2",SP_obj_minecart2,CID_OBJECT},
{"obj_minecart3",SP_obj_minecart3,CID_OBJECT},
{"obj_moss1",SP_obj_moss1,CID_OBJECT},
{"obj_moss2",SP_obj_moss2,CID_OBJECT},
{"obj_moss3",SP_obj_moss3,CID_OBJECT},
{"obj_moss4",SP_obj_moss4,CID_OBJECT},
{"obj_moss5",SP_obj_moss5,CID_OBJECT},
{"obj_nest",SP_obj_nest,CID_OBJECT},
{"obj_pick",SP_obj_pick,CID_OBJECT},
{"obj_pipe1",SP_obj_pipe1,CID_OBJECT},
{"obj_pipe2",SP_obj_pipe2,CID_OBJECT},
{"obj_pipewheel",SP_obj_pipewheel,CID_OBJECT},
{"obj_plant1",SP_obj_plant1,CID_OBJECT},
{"obj_plant2",SP_obj_plant2,CID_OBJECT},
{"obj_plant3",SP_obj_plant3,CID_OBJECT},
{"obj_pot1",SP_obj_pot1,CID_OBJECT},
{"obj_pot2",SP_obj_pot2,CID_OBJECT},
{"obj_pottedplant",SP_obj_pottedplant,CID_OBJECT},
{"obj_pushcart",SP_obj_pushcart,CID_OBJECT},
{"obj_queenthrone",SP_obj_queenthrone,CID_OBJECT},
{"obj_queenchair",SP_obj_queenchair,CID_OBJECT},
{"obj_ring_plaque2",SP_obj_ring_plaque2,CID_OBJECT},
{"obj_rocks1",SP_obj_rocks1,CID_OBJECT},
{"obj_rocks2",SP_obj_rocks2,CID_OBJECT},
{"obj_rope",SP_obj_rope,CID_OBJECT},
{"obj_ropechain",SP_obj_ropechain,CID_OBJECT},
{"obj_scroll",SP_obj_scroll,CID_OBJECT},
{"obj_seasonglobe",SP_obj_seasonglobe,CID_OBJECT},
{"obj_shovel",SP_obj_shovel,CID_OBJECT},
{"obj_shrine",SP_obj_shrine,CID_OBJECT},
{"obj_sign1",SP_obj_sign1,CID_OBJECT},
{"obj_sign4",SP_obj_sign4,CID_OBJECT},
{"obj_skullpole",SP_obj_skullpole,CID_OBJECT},
{"obj_spellbook",SP_obj_spellbook,CID_OBJECT},
{"obj_stalactite1",SP_obj_stalactite1,CID_OBJECT},
{"obj_stalactite2",SP_obj_stalactite2,CID_OBJECT},
{"obj_stalactite3",SP_obj_stalactite3,CID_OBJECT},
{"obj_stalagmite1",SP_obj_stalagmite1,CID_OBJECT},
{"obj_stalagmite2",SP_obj_stalagmite2,CID_OBJECT},
{"obj_stalagmite3",SP_obj_stalagmite3,CID_OBJECT},
{"obj_statue_boulderfish",SP_obj_statue_boulderfish,CID_OBJECT},
{"obj_statue_corvus",SP_obj_statue_corvus,CID_OBJECT},
{"obj_statue_dolphin1",SP_obj_statue_dolphin1,CID_OBJECT},
{"obj_statue_dolphin2",SP_obj_statue_dolphin2,CID_OBJECT},
{"obj_statue_dolphin3",SP_obj_statue_dolphin3,CID_OBJECT},
{"obj_statue_dolphin4",SP_obj_statue_dolphin4,CID_OBJECT},
{"obj_statue_dragon",SP_obj_statue_dragon,CID_OBJECT},
{"obj_statue_dragonhead",SP_obj_statue_dragonhead,CID_OBJECT},
{"obj_statue_duckbill1",SP_obj_statue_duckbill1,CID_OBJECT},
{"obj_statue_duckbill2",SP_obj_statue_duckbill2,CID_OBJECT},
{"obj_statue_guardian",SP_obj_statue_guardian,CID_OBJECT},
{"obj_statue_saraphbust",SP_obj_statue_saraphbust,CID_OBJECT},
{"obj_statue_sariph",SP_obj_statue_sariph,CID_OBJECT},
{"obj_statue_sithraguard",SP_obj_statue_sithraguard,CID_OBJECT},
{"obj_statue_tchecktrik_bust",SP_obj_statue_tchecktrik_bust,CID_OBJECT},
{"obj_statue_techeckrikleft",SP_obj_statue_techeckrikleft,CID_OBJECT},
{"obj_statue_techeckrikright",SP_obj_statue_techeckrikright,CID_OBJECT},
{"obj_statue_techeckriktomb",SP_obj_statue_techeckriktomb,CID_OBJECT},
{"obj_stein",SP_obj_stein,CID_OBJECT},
{"obj_swampflat_top",SP_obj_swampflat_top,CID_OBJECT},
{"obj_swampflat_bottom",SP_obj_swampflat_bottom,CID_OBJECT},
{"obj_table1",SP_obj_table1,CID_OBJECT},
{"obj_table2",SP_obj_table2,CID_OBJECT},
{"obj_tapper",SP_obj_tapper,CID_OBJECT},
{"obj_throne",SP_obj_throne,CID_OBJECT},
{"obj_torture_bed",SP_obj_torture_bed,CID_OBJECT},
{"obj_torture_ironmaiden",SP_obj_torture_ironmaiden,CID_OBJECT},
{"obj_torture_rack",SP_obj_torture_rack,CID_OBJECT},
{"obj_torture_table",SP_obj_torture_table,CID_OBJECT},
{"obj_torture_wallring",SP_obj_torture_wallring,CID_OBJECT},
{"obj_tree",SP_obj_tree,CID_OBJECT},
{"obj_tree2",SP_obj_tree2,CID_OBJECT},
{"obj_tree3",SP_obj_tree3,CID_OBJECT},
{"obj_treefallen",SP_obj_treefallen,CID_OBJECT},
{"obj_treestump",SP_obj_treestump,CID_OBJECT},
{"obj_treetall",SP_obj_treetall,CID_OBJECT},
{"obj_treetop",SP_obj_treetop,CID_OBJECT},
{"obj_urn",SP_obj_urn,CID_OBJECT},
{"obj_venusflytrap",SP_obj_venusflytrap,CID_OBJECT},
{"obj_wallringplaque",SP_obj_wallringplaque,CID_OBJECT},
{"obj_web",SP_obj_web,CID_OBJECT},
{"obj_wheelbarrow",SP_obj_wheelbarrow,CID_OBJECT},
{"obj_wheelbarrowdamaged",SP_obj_wheelbarrowdamaged,CID_OBJECT},
{"obj_woodpile",SP_obj_woodpile,CID_OBJECT},
{"obj_morcalavin_barrier",SP_obj_morcalavin_barrier,CID_OBJECT},
{"flamethrower",SP_flamethrower,CID_FLAMETHROWER},
{"item_spitter", SP_item_spitter,-1},
{"info_buoy", SP_info_buoy,-1},
{"shrine_heal", shrine_heal, CID_TRIGGER},
{"shrine_armor", shrine_armor, CID_TRIGGER},
{"shrine_staff", shrine_staff, CID_TRIGGER},
{"shrine_lung", shrine_lung, CID_TRIGGER},
{"shrine_armor_gold", shrine_armor_gold, CID_TRIGGER},
{"shrine_light", shrine_light, CID_TRIGGER},
{"shrine_mana", shrine_mana, CID_TRIGGER},
{"shrine_ghost", shrine_ghost, CID_TRIGGER},
{"shrine_reflect", shrine_reflect, CID_TRIGGER},
{"shrine_powerup", shrine_powerup, CID_TRIGGER},
{"shrine_speed", shrine_speed, CID_TRIGGER},
{"shrine_random", shrine_random, CID_TRIGGER},
{"script_runner", SP_script_runner, CID_TRIGGER},
{NULL, NULL,-1}
};
/*
===============
ED_CallSpawn
Finds the spawn function for the entity and calls it
===============
*/
void ED_CallSpawn (edict_t *ent)
{
extern qboolean loadingBaseEnts;
spawn_t *s;
gitem_t *item;
if (!ent->classname)
{
gi.dprintf ("ED_CallSpawn: NULL classname\n");
return;
}
if(item = IsItem(ent))
{
SpawnItem(ent, item);
return;
}
// check normal spawn functions
for (s=spawns ; s->name ; s++)
{
if (!strcmp(s->name, ent->classname))
{ // found it
if((s->CID != -1) && !Cid_init[s->CID]) // Need to call once per level that item is on
{
classStaticsInits[s->CID]();
Cid_init[s->CID] = -1;
ent->classID = s->CID; // Make sure classID is set
}
ent->classID = 0;
if(s->CID != -1)
{
ent->classID = s->CID;
}
s->spawn (ent); // Need to call for every item
return;
}
}
gi.dprintf ("%s doesn't have a spawn function\n", ent->classname);
}
// end