void SP_worldspawn (edict_t * ent) { int i; ent->movetype = MOVETYPE_PUSH; ent->solid = SOLID_BSP; ent->inuse = true; // since the world doesn't use G_Spawn() ent->s.modelindex = 1; // world model is always index 1 // reserve some spots for dead player bodies for coop / deathmatch InitBodyQue (); // set configstrings for items SetItemNames (); if (st.nextmap) strcpy (level.nextmap, st.nextmap); // make some data visible to the server if (ent->message && ent->message[0]) { Q_strncpyz(level.level_name, ent->message, sizeof(level.level_name)); gi.configstring (CS_NAME, level.level_name); } else { strcpy(level.level_name, level.mapname); } if (st.sky && st.sky[0]) gi.configstring (CS_SKY, st.sky); else gi.configstring (CS_SKY, "unit1_"); gi.configstring(CS_SKYROTATE, va("%f", st.skyrotate)); gi.configstring(CS_SKYAXIS, va("%f %f %f", st.skyaxis[0], st.skyaxis[1], st.skyaxis[2])); gi.configstring(CS_CDTRACK, va("%i", ent->sounds)); gi.configstring(CS_MAXCLIENTS, va("%i", (int)(maxclients->value))); //FIREBLADE if (nohud->value) { gi.configstring (CS_STATUSBAR, ""); } else //FIREBLADE { // status bar program if (!deathmatch->value) { gi.configstring (CS_STATUSBAR, single_statusbar); } else if (ctf->value) { gi.configstring (CS_STATUSBAR, ctf_statusbar); //precaches gi.imageindex ("sbfctf1"); gi.imageindex ("sbfctf2"); gi.imageindex ("i_ctf1"); gi.imageindex ("i_ctf2"); gi.imageindex ("i_ctf1d"); gi.imageindex ("i_ctf2d"); gi.imageindex ("i_ctf1t"); gi.imageindex ("i_ctf2t"); } else if (noscore->value && teamplay->value) { gi.configstring (CS_STATUSBAR, dm_noscore_statusbar); } else { gi.configstring (CS_STATUSBAR, dm_statusbar); } } //--------------- // help icon for statusbar gi.imageindex ("i_help"); level.pic_health = gi.imageindex ("i_health"); gi.imageindex ("help"); gi.imageindex ("field_3"); // zucc - preload sniper stuff gi.imageindex ("scope2x"); gi.imageindex ("scope4x"); gi.imageindex ("scope6x"); //FIREBLADE gi.soundindex ("atl/lights.wav"); gi.soundindex ("atl/camera.wav"); gi.soundindex ("atl/action.wav"); gi.imageindex ("tag1"); gi.imageindex ("tag2"); gi.imageindex ("tag3"); if (teamplay->value) { for(i = TEAM1; i < TEAM_TOP; i++) { if (teams[i].skin_index[0] == 0) { gi.dprintf ("No skin was specified for team %i in config file. Exiting.\n", i); exit (1); } gi.imageindex (teams[i].skin_index); } } // AQ2:TNG - Igor adding precache for sounds gi.soundindex ("tng/no_team_wins.wav"); gi.soundindex ("tng/team1_wins.wav"); gi.soundindex ("tng/team2_wins.wav"); gi.soundindex ("tng/team3_wins.wav"); gi.soundindex ("tng/1_minute.wav"); gi.soundindex ("tng/3_minutes.wav"); gi.soundindex ("tng/1_frag.wav"); gi.soundindex ("tng/2_frags.wav"); gi.soundindex ("tng/3_frags.wav"); gi.soundindex ("tng/impressive.wav"); gi.soundindex ("tng/excellent.wav"); gi.soundindex ("tng/accuracy.wav"); gi.soundindex ("tng/clanwar.wav"); gi.soundindex ("tng/disabled.wav"); gi.soundindex ("tng/enabled.wav"); gi.soundindex ("misc/flashlight.wav"); // Caching Flashlight // AQ2:TNG - end of precache sounds gi.soundindex("boss3/bs3idle1.wav"); gi.soundindex("user/letsrock.wav"); gi.soundindex("makron/laf4.wav"); gi.soundindex("world/xian1.wav"); gi.soundindex("world/elv.wav"); gi.soundindex("misc/secret.wav"); // used for ctf swap sound PrecacheRadioSounds (); //PG BUND - Begin PrecacheUserSounds (); //AQ2:TNG - Slicer Old location support //DescListInit(level.mapname); //AQ2:TNG END TourneyInit (); vInitLevel (); //PG BUND - End if (!st.gravity) gi.cvar_set ("sv_gravity", "800"); else gi.cvar_set ("sv_gravity", st.gravity); snd_fry = gi.soundindex ("player/fry.wav"); // standing in lava / slime PrecacheItem (FindItem ("Blaster")); gi.soundindex ("player/lava1.wav"); gi.soundindex ("player/lava2.wav"); gi.soundindex ("misc/pc_up.wav"); gi.soundindex ("misc/talk1.wav"); gi.soundindex ("misc/udeath.wav"); // gibs gi.soundindex ("items/respawn1.wav"); // sexed sounds gi.soundindex ("*death1.wav"); gi.soundindex ("*death2.wav"); gi.soundindex ("*death3.wav"); gi.soundindex ("*death4.wav"); gi.soundindex ("*fall1.wav"); gi.soundindex ("*fall2.wav"); gi.soundindex ("*gurp1.wav"); // drowning damage gi.soundindex ("*gurp2.wav"); gi.soundindex ("*jump1.wav"); // player jump gi.soundindex ("*pain25_1.wav"); gi.soundindex ("*pain25_2.wav"); gi.soundindex ("*pain50_1.wav"); gi.soundindex ("*pain50_2.wav"); gi.soundindex ("*pain75_1.wav"); gi.soundindex ("*pain75_2.wav"); gi.soundindex ("*pain100_1.wav"); gi.soundindex ("*pain100_2.wav"); //------------------- // precache vwep models gi.modelindex ("#w_mk23.md2"); gi.modelindex ("#w_mp5.md2"); gi.modelindex ("#w_m4.md2"); gi.modelindex ("#w_cannon.md2"); gi.modelindex ("#w_super90.md2"); gi.modelindex ("#w_sniper.md2"); gi.modelindex ("#w_akimbo.md2"); gi.modelindex ("#w_knife.md2"); gi.modelindex ("#a_m61frag.md2"); gi.soundindex ("player/gasp1.wav"); // gasping for air gi.soundindex ("player/gasp2.wav"); // head breaking surface, not gasping gi.soundindex ("player/watr_in.wav"); // feet hitting water gi.soundindex ("player/watr_out.wav"); // feet leaving water gi.soundindex ("player/watr_un.wav"); // head going underwater gi.soundindex ("player/u_breath1.wav"); gi.soundindex ("player/u_breath2.wav"); gi.soundindex ("items/pkup.wav"); // bonus item pickup gi.soundindex ("world/land.wav"); // landing thud gi.soundindex ("misc/h2ohit1.wav"); // landing splash gi.soundindex ("items/damage.wav"); gi.soundindex ("items/protect.wav"); gi.soundindex ("items/protect4.wav"); gi.soundindex ("weapons/noammo.wav"); gi.soundindex ("infantry/inflies1.wav"); sm_meat_index = gi.modelindex ("models/objects/gibs/sm_meat/tris.md2"); gi.modelindex ("models/objects/gibs/arm/tris.md2"); gi.modelindex ("models/objects/gibs/bone/tris.md2"); gi.modelindex ("models/objects/gibs/bone2/tris.md2"); gi.modelindex ("models/objects/gibs/chest/tris.md2"); gi.modelindex ("models/objects/gibs/skull/tris.md2"); gi.modelindex ("models/objects/gibs/head2/tris.md2"); // // Setup light animation tables. 'a' is total darkness, 'z' is doublebright. // /* Darkmatch. Darkmatch has three settings: 0 - normal, no changes to lights 1 - all lights are off. 2 - dusk/dawn mode. 3 - using the day_cycle to change the lights every xx seconds as defined by day_cycle */ if (darkmatch->value == 1) gi.configstring (CS_LIGHTS + 0, "a"); // Pitch Black else if (darkmatch->value == 2) gi.configstring (CS_LIGHTS + 0, "b"); // Dusk else gi.configstring (CS_LIGHTS + 0, "m"); // 0 normal gi.configstring (CS_LIGHTS + 1, "mmnmmommommnonmmonqnmmo"); // 1 FLICKER (first variety) gi.configstring (CS_LIGHTS + 2, "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba"); // 2 SLOW STRONG PULSE gi.configstring (CS_LIGHTS + 3, "mmmmmaaaaammmmmaaaaaabcdefgabcdefg"); // 3 CANDLE (first variety) gi.configstring (CS_LIGHTS + 4, "mamamamamama"); // 4 FAST STROBE gi.configstring (CS_LIGHTS + 5, "jklmnopqrstuvwxyzyxwvutsrqponmlkj"); // 5 GENTLE PULSE 1 gi.configstring (CS_LIGHTS + 6, "nmonqnmomnmomomno"); // 6 FLICKER (second variety) gi.configstring (CS_LIGHTS + 7, "mmmaaaabcdefgmmmmaaaammmaamm"); // 7 CANDLE (second variety) gi.configstring (CS_LIGHTS + 8, "mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa"); // 8 CANDLE (third variety) gi.configstring (CS_LIGHTS + 9, "aaaaaaaazzzzzzzz"); // 9 SLOW STROBE (fourth variety) gi.configstring (CS_LIGHTS + 10, "mmamammmmammamamaaamammma"); // 10 FLUORESCENT FLICKER gi.configstring (CS_LIGHTS + 11, "abcdefghijklmnopqrrqponmlkjihgfedcba"); // 11 SLOW PULSE NOT FADE TO BLACK // styles 32-62 are assigned by the light program for switchable lights gi.configstring (CS_LIGHTS + 63, "a"); // 63 testing //FB 6/2/99 if (took_damage != NULL) gi.TagFree (took_damage); took_damage = (int *)gi.TagMalloc (sizeof (int) * game.maxclients, TAG_GAME); //FB 6/2/99 }
/*QUAKED worldspawn (0 0 0) ? Only used for the world. "sky" environment map name "skyaxis" vector axis for rotating sky "skyrotate" speed of rotation in degrees/second "sounds" music cd track number "gravity" 800 is default gravity "message" text to print at user logon */ void SP_worldspawn (edict_t *ent) { ent->movetype = MOVETYPE_PUSH; ent->solid = SOLID_BSP; ent->inuse = true; // since the world doesn't use G_Spawn() ent->s.modelindex = 1; // world model is always index 1 //--------------- // reserve some spots for dead player bodies for coop / deathmatch InitBodyQue (); // set configstrings for items SetItemNames (); if (st.nextmap) strcpy (level.nextmap, st.nextmap); // make some data visible to the server if (ent->message && ent->message[0]) { gi.configstring (CS_NAME, ent->message); strncpy (level.level_name, ent->message, sizeof(level.level_name)); } else strncpy (level.level_name, level.mapname, sizeof(level.level_name)); if (st.sky && st.sky[0]) gi.configstring (CS_SKY, st.sky); else gi.configstring (CS_SKY, "unit1_"); gi.configstring (CS_SKYROTATE, va("%f", st.skyrotate) ); gi.configstring (CS_SKYAXIS, va("%f %f %f", st.skyaxis[0], st.skyaxis[1], st.skyaxis[2]) ); gi.configstring (CS_CDTRACK, va("%i", ent->sounds) ); gi.configstring (CS_MAXCLIENTS, va("%i", (int)(maxclients->value) ) ); //FIREBLADE if (nohud->value) { gi.configstring(CS_STATUSBAR, ""); } else //FIREBLADE { // status bar program if (deathmatch->value) //FIREBLADE { if (noscore->value && teamplay->value) { gi.configstring (CS_STATUSBAR, dm_noscore_statusbar); } else { gi.configstring (CS_STATUSBAR, dm_statusbar); } } //FIREBLADE else gi.configstring (CS_STATUSBAR, single_statusbar); } //--------------- // help icon for statusbar gi.imageindex ("i_help"); level.pic_health = gi.imageindex ("i_health"); gi.imageindex ("help"); gi.imageindex ("field_3"); // zucc - preload sniper stuff gi.imageindex ("scope2x"); gi.imageindex ("scope4x"); gi.imageindex ("scope6x"); //FIREBLADE gi.soundindex("atl/lights.wav"); gi.soundindex("atl/camera.wav"); gi.soundindex("atl/action.wav"); gi.imageindex("tag1"); gi.imageindex("tag2"); gi.imageindex("tag3"); if (teamplay->value) { if (team1_skin_index[0] == 0) { gi.dprintf("No skin was specified for team 1 in config file. Exiting.\n"); exit(1); } gi.imageindex(team1_skin_index); if (team2_skin_index[0] == 0) { gi.dprintf("No skin was specified for team 2 in config file. Exiting.\n"); exit(1); } gi.imageindex(team2_skin_index); } PrecacheRadioSounds(); team_round_going = 0; lights_camera_action = 0; holding_on_tie_check = 0; team_round_countdown = 0; //FIREBLADE if (!st.gravity) gi.cvar_set("sv_gravity", "800"); else gi.cvar_set("sv_gravity", st.gravity); snd_fry = gi.soundindex ("player/fry.wav"); // standing in lava / slime PrecacheItem (FindItem ("Blaster")); gi.soundindex ("player/lava1.wav"); gi.soundindex ("player/lava2.wav"); gi.soundindex ("misc/pc_up.wav"); gi.soundindex ("misc/talk1.wav"); gi.soundindex ("misc/udeath.wav"); // gibs gi.soundindex ("items/respawn1.wav"); // sexed sounds gi.soundindex ("*death1.wav"); gi.soundindex ("*death2.wav"); gi.soundindex ("*death3.wav"); gi.soundindex ("*death4.wav"); gi.soundindex ("*fall1.wav"); gi.soundindex ("*fall2.wav"); gi.soundindex ("*gurp1.wav"); // drowning damage gi.soundindex ("*gurp2.wav"); gi.soundindex ("*jump1.wav"); // player jump gi.soundindex ("*pain25_1.wav"); gi.soundindex ("*pain25_2.wav"); gi.soundindex ("*pain50_1.wav"); gi.soundindex ("*pain50_2.wav"); gi.soundindex ("*pain75_1.wav"); gi.soundindex ("*pain75_2.wav"); gi.soundindex ("*pain100_1.wav"); gi.soundindex ("*pain100_2.wav"); //------------------- // precache vwep models gi.modelindex( "#w_mk23.md2"); gi.modelindex( "#w_mp5.md2"); gi.modelindex( "#w_m4.md2"); gi.modelindex( "#w_cannon.md2"); gi.modelindex( "#w_super90.md2"); gi.modelindex( "#w_sniper.md2"); gi.modelindex( "#w_akimbo.md2"); gi.modelindex( "#w_knife.md2"); gi.modelindex( "#a_m61frag.md2"); gi.soundindex ("player/gasp1.wav"); // gasping for air gi.soundindex ("player/gasp2.wav"); // head breaking surface, not gasping gi.soundindex ("player/watr_in.wav"); // feet hitting water gi.soundindex ("player/watr_out.wav"); // feet leaving water gi.soundindex ("player/watr_un.wav"); // head going underwater gi.soundindex ("player/u_breath1.wav"); gi.soundindex ("player/u_breath2.wav"); gi.soundindex ("items/pkup.wav"); // bonus item pickup gi.soundindex ("world/land.wav"); // landing thud gi.soundindex ("misc/h2ohit1.wav"); // landing splash gi.soundindex ("items/damage.wav"); gi.soundindex ("items/protect.wav"); gi.soundindex ("items/protect4.wav"); gi.soundindex ("weapons/noammo.wav"); gi.soundindex ("infantry/inflies1.wav"); sm_meat_index = gi.modelindex ("models/objects/gibs/sm_meat/tris.md2"); gi.modelindex ("models/objects/gibs/arm/tris.md2"); gi.modelindex ("models/objects/gibs/bone/tris.md2"); gi.modelindex ("models/objects/gibs/bone2/tris.md2"); gi.modelindex ("models/objects/gibs/chest/tris.md2"); gi.modelindex ("models/objects/gibs/skull/tris.md2"); gi.modelindex ("models/objects/gibs/head2/tris.md2"); // // Setup light animation tables. 'a' is total darkness, 'z' is doublebright. // // 0 normal gi.configstring(CS_LIGHTS+0, "m"); // 1 FLICKER (first variety) gi.configstring(CS_LIGHTS+1, "mmnmmommommnonmmonqnmmo"); // 2 SLOW STRONG PULSE gi.configstring(CS_LIGHTS+2, "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba"); // 3 CANDLE (first variety) gi.configstring(CS_LIGHTS+3, "mmmmmaaaaammmmmaaaaaabcdefgabcdefg"); // 4 FAST STROBE gi.configstring(CS_LIGHTS+4, "mamamamamama"); // 5 GENTLE PULSE 1 gi.configstring(CS_LIGHTS+5,"jklmnopqrstuvwxyzyxwvutsrqponmlkj"); // 6 FLICKER (second variety) gi.configstring(CS_LIGHTS+6, "nmonqnmomnmomomno"); // 7 CANDLE (second variety) gi.configstring(CS_LIGHTS+7, "mmmaaaabcdefgmmmmaaaammmaamm"); // 8 CANDLE (third variety) gi.configstring(CS_LIGHTS+8, "mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa"); // 9 SLOW STROBE (fourth variety) gi.configstring(CS_LIGHTS+9, "aaaaaaaazzzzzzzz"); // 10 FLUORESCENT FLICKER gi.configstring(CS_LIGHTS+10, "mmamammmmammamamaaamammma"); // 11 SLOW PULSE NOT FADE TO BLACK gi.configstring(CS_LIGHTS+11, "abcdefghijklmnopqrrqponmlkjihgfedcba"); // styles 32-62 are assigned by the light program for switchable lights // 63 testing gi.configstring(CS_LIGHTS+63, "a"); //FB 6/2/99 if (took_damage != NULL) gi.TagFree(took_damage); took_damage = (int *)gi.TagMalloc(sizeof(int) * game.maxclients, TAG_GAME); //FB 6/2/99 }