/* ============ InitGame This will be called when the dll is first loaded, which only happens when a new game is started or a save game is loaded. ============ */ void InitGame (void) { gi.dprintf ("==== InitGame (Lazarus) ====\n"); gi.dprintf("by Mr. Hyde & Mad Dog\ne-mail: [email protected]\n\n"); // Knightmare- init cvars lithium_defaults(); gun_x = gi.cvar ("gun_x", "0", 0); gun_y = gi.cvar ("gun_y", "0", 0); gun_z = gi.cvar ("gun_z", "0", 0); //FIXME: sv_ prefix is wrong for these sv_rollspeed = gi.cvar ("sv_rollspeed", "200", 0); sv_rollangle = gi.cvar ("sv_rollangle", "2", 0); sv_maxvelocity = gi.cvar ("sv_maxvelocity", "2000", 0); sv_gravity = gi.cvar ("sv_gravity", "800", 0); // noset vars dedicated = gi.cvar ("dedicated", "0", CVAR_NOSET); // latched vars sv_cheats = gi.cvar ("cheats", "0", CVAR_SERVERINFO|CVAR_LATCH); gi.cvar ("gamename", GAMEVERSION , CVAR_SERVERINFO | CVAR_LATCH); gi.cvar ("gamedate", __DATE__ , CVAR_SERVERINFO | CVAR_LATCH); maxclients = gi.cvar ("maxclients", "4", CVAR_SERVERINFO | CVAR_LATCH); maxspectators = gi.cvar ("maxspectators", "4", CVAR_SERVERINFO); deathmatch = gi.cvar ("deathmatch", "0", CVAR_LATCH); coop = gi.cvar ("coop", "0", CVAR_LATCH); skill = gi.cvar ("skill", "1", CVAR_LATCH); commentary = gi.cvar ("commentary", "0", CVAR_LATCH); // Knightmare- increase maxentities //maxentities = gi.cvar ("maxentities", "1024", CVAR_LATCH); maxentities = gi.cvar ("maxentities", va("%i",MAX_EDICTS), CVAR_LATCH); // change anytime vars dmflags = gi.cvar ("dmflags", "0", CVAR_SERVERINFO); fraglimit = gi.cvar ("fraglimit", "0", CVAR_SERVERINFO); timelimit = gi.cvar ("timelimit", "0", CVAR_SERVERINFO); //ZOID capturelimit = gi.cvar ("capturelimit", "0", CVAR_SERVERINFO); instantweap = gi.cvar ("instantweap", "0", CVAR_SERVERINFO); //ZOID password = gi.cvar ("password", "", CVAR_USERINFO); spectator_password = gi.cvar ("spectator_password", "", CVAR_USERINFO); needpass = gi.cvar ("needpass", "0", CVAR_SERVERINFO); filterban = gi.cvar ("filterban", "1", 0); g_select_empty = gi.cvar ("g_select_empty", "0", CVAR_ARCHIVE); run_pitch = gi.cvar ("run_pitch", "0.002", 0); run_roll = gi.cvar ("run_roll", "0.005", 0); bob_up = gi.cvar ("bob_up", "0.005", 0); bob_pitch = gi.cvar ("bob_pitch", "0.002", 0); bob_roll = gi.cvar ("bob_roll", "0.002", 0); // flood control flood_msgs = gi.cvar ("flood_msgs", "4", 0); flood_persecond = gi.cvar ("flood_persecond", "4", 0); flood_waitdelay = gi.cvar ("flood_waitdelay", "10", 0); // dm map list sv_maplist = gi.cvar ("sv_maplist", "", 0); // Lazarus actorchicken = gi.cvar("actorchicken", "1", CVAR_SERVERINFO|CVAR_LATCH); actorjump = gi.cvar("actorjump", "1", CVAR_SERVERINFO|CVAR_LATCH); actorscram = gi.cvar("actorscram", "1", CVAR_SERVERINFO|CVAR_LATCH); alert_sounds = gi.cvar("alert_sounds", "0", CVAR_SERVERINFO|CVAR_LATCH); allow_fog = gi.cvar ("allow_fog", "1", CVAR_ARCHIVE); // set to 0 to bypass target_changelevel clear inventory flag // because some user maps have this erroneously set allow_clear_inventory = gi.cvar ("allow_clear_inventory", "1", CVAR_ARCHIVE); cd_loopcount = gi.cvar("cd_loopcount","4",0); cl_gun = gi.cvar("cl_gun", "1", 0); cl_3dcam = gi.cvar("cl_3dcam", "0", 0); // Knightmare added corpse_fade = gi.cvar("corpse_fade", "0", CVAR_SERVERINFO|CVAR_LATCH); corpse_fadetime = gi.cvar("corpse_fadetime", "20", 0); crosshair = gi.cvar("crosshair", "1", 0); footstep_sounds = gi.cvar("footstep_sounds", "0", CVAR_SERVERINFO|CVAR_LATCH); fov = gi.cvar("fov", "90", 0); hand = gi.cvar("hand", "0", 0); jetpack_weenie = gi.cvar("jetpack_weenie", "0", CVAR_SERVERINFO); joy_pitchsensitivity = gi.cvar("joy_pitchsensitivity", "1", 0); joy_yawsensitivity = gi.cvar("joy_yawsensitivity", "-1", 0); jump_kick = gi.cvar("jump_kick", "0", CVAR_SERVERINFO|CVAR_LATCH); lights = gi.cvar("lights", "1", 0); lightsmin = gi.cvar("lightsmin", "a", CVAR_SERVERINFO); m_pitch = gi.cvar("m_pitch", "0.022", 0); m_yaw = gi.cvar("m_yaw", "0.022", 0); monsterjump = gi.cvar("monsterjump", "1", CVAR_SERVERINFO|CVAR_LATCH); rocket_strafe = gi.cvar("rocket_strafe", "0", 0); s_primary = gi.cvar("s_primary", "0", 0); #ifdef KMQUAKE2_ENGINE_MOD sv_maxgibs = gi.cvar("sv_maxgibs", "160", CVAR_SERVERINFO); #else sv_maxgibs = gi.cvar("sv_maxgibs", "20", CVAR_SERVERINFO); #endif turn_rider = gi.cvar("turn_rider", "1", CVAR_SERVERINFO); zoomrate = gi.cvar("zoomrate", "80", CVAR_ARCHIVE); zoomsnap = gi.cvar("zoomsnap", "20", CVAR_ARCHIVE); // shift_ and rotate_distance only used for debugging stuff - this is the distance // an entity will be moved by "item_left", "item_right", etc. shift_distance = gi.cvar("shift_distance", "1", CVAR_SERVERINFO); rotate_distance = gi.cvar("rotate_distance", "1", CVAR_SERVERINFO); // GL stuff gl_clear = gi.cvar("gl_clear", "0", 0); // Lazarus saved cvars that we may or may not manipulate, but need to // restore to original values upon map exit. lazarus_cd_loop = gi.cvar("lazarus_cd_loop", "0", 0); lazarus_gl_clear= gi.cvar("lazarus_gl_clear","0", 0); lazarus_pitch = gi.cvar("lazarus_pitch", "0", 0); lazarus_yaw = gi.cvar("lazarus_yaw", "0", 0); lazarus_joyp = gi.cvar("lazarus_joyp", "0", 0); lazarus_joyy = gi.cvar("lazarus_joyy", "0", 0); lazarus_cl_gun = gi.cvar("lazarus_cl_gun", "0", 0); lazarus_crosshair = gi.cvar("lazarus_crosshair", "0", 0); /*if(lazarus_gl_clear->value) gi.cvar_forceset("gl_clear", va("%d",lazarus_gl_clear->value)); else gi.cvar_forceset("lazarus_gl_clear", va("%d",gl_clear->value));*/ if(!deathmatch->value && !coop->value) { /*if(lazarus_pitch->value) { gi.cvar_forceset("cd_loopcount", va("%d",(int)(lazarus_cd_loop->value))); gi.cvar_forceset("m_pitch", va("%f",lazarus_pitch->value)); gi.cvar_forceset("m_yaw", va("%f",lazarus_yaw->value)); gi.cvar_forceset("cl_gun", va("%d",(int)(lazarus_cl_gun->value))); gi.cvar_forceset("crosshair", va("%d",(int)(lazarus_crosshair->value))); } else {*/ gi.cvar_forceset("lazarus_cd_loop", va("%d",(int)(cd_loopcount->value))); #ifndef KMQUAKE2_ENGINE_MOD // engine has zoom autosensitivity gi.cvar_forceset("lazarus_pitch", va("%f",m_pitch->value)); gi.cvar_forceset("lazarus_yaw", va("%f",m_yaw->value)); gi.cvar_forceset("lazarus_joyp", va("%f",joy_pitchsensitivity->value)); gi.cvar_forceset("lazarus_joyy", va("%f",joy_yawsensitivity->value)); #endif gi.cvar_forceset("lazarus_cl_gun", va("%d",(int)(cl_gun->value))); gi.cvar_forceset("lazarus_crosshair", va("%d",(int)(crosshair->value))); //} } tpp = gi.cvar ("tpp", "0", CVAR_ARCHIVE); tpp_auto = gi.cvar ("tpp_auto", "1", 0); crossh = gi.cvar ("crossh", "1", 0); allow_download = gi.cvar("allow_download", "0", 0); blaster_color = gi.cvar("blaster_color", "1", 0); // Knightmare added // If this is an SP game and "readout" is not set, force allow_download off // so we don't get the annoying "Refusing to download path with .." messages // due to misc_actor sounds. if(allow_download->value && !readout->value && !deathmatch->value) gi.cvar_forceset("allow_download", "0"); bounce_bounce = gi.cvar("bounce_bounce", "0.5", 0); bounce_minv = gi.cvar("bounce_minv", "60", 0); // items InitItems (); Com_sprintf (game.helpmessage1, sizeof(game.helpmessage1), ""); Com_sprintf (game.helpmessage2, sizeof(game.helpmessage2), ""); // initialize all entities for this game game.maxentities = maxentities->value; g_edicts = gi.TagMalloc (game.maxentities * sizeof(g_edicts[0]), TAG_GAME); globals.edicts = g_edicts; globals.max_edicts = game.maxentities; // initialize all clients for this game game.maxclients = maxclients->value; game.clients = gi.TagMalloc (game.maxclients * sizeof(game.clients[0]), TAG_GAME); globals.num_edicts = game.maxclients+1; //ZOID CTFInit(); //ZOID }
/* * This will be called when the dll is first loaded, * which only happens when a new game is started or * a save game is loaded. */ void InitGame (void) { gi.dprintf ("\n==== InitGame ====\n"); #ifdef Q2VR_ENGINE_MOD { int i; gi.dprintf("Initializing hash tables..."); for (i = 0; mmoveList[i].mmoveStr; i++) { mmoveList[i].mmoveHash = Hash32(mmoveList[i].mmoveStr, strlen(mmoveList[i].mmoveStr)); } for (i = 0; functionList[i].funcStr; i++) { functionList[i].funcHash = Hash32(functionList[i].funcStr, strlen(functionList[i].funcStr)); } gi.dprintf(" Done!\n"); } #endif gi.dprintf("Sorting tables..."); funcListSize = sizeof(functionList) / sizeof(functionList[0]) - 1; qsort(functionList,funcListSize, sizeof(functionList[0]), funcsort); mmoveListSize = (sizeof(mmoveList) / sizeof(mmoveList[0])) - 1; qsort(mmoveList,mmoveListSize, sizeof(mmoveList[0]), mmovesort); gi.dprintf(" Done!\n"); //Knightmare lithium_defaults(); gun_x = gi.cvar ("gun_x", "0", 0); gun_y = gi.cvar ("gun_y", "0", 0); gun_z = gi.cvar ("gun_z", "0", 0); //FIXME: sv_ prefix is wrong for these sv_rollspeed = gi.cvar ("sv_rollspeed", "200", 0); sv_rollangle = gi.cvar ("sv_rollangle", "2", 0); sv_maxvelocity = gi.cvar ("sv_maxvelocity", "2000", 0); sv_gravity = gi.cvar ("sv_gravity", "800", 0); sv_stopspeed = gi.cvar ("sv_stopspeed", "100", 0); // PGM - was #define in g_phys.c //ROGUE g_showlogic = gi.cvar ("g_showlogic", "0", 0); huntercam = gi.cvar ("huntercam", "1", CVAR_SERVERINFO|CVAR_LATCH); strong_mines = gi.cvar ("strong_mines", "0", 0); randomrespawn = gi.cvar ("randomrespawn", "0", 0); //ROGUE // noset vars dedicated = gi.cvar ("dedicated", "0", CVAR_NOSET); // latched vars sv_cheats = gi.cvar ("cheats", "0", CVAR_SERVERINFO|CVAR_LATCH); gi.cvar ("gamename", GAMEVERSION , CVAR_SERVERINFO | CVAR_LATCH); gi.cvar ("gamedate", __DATE__ , CVAR_SERVERINFO | CVAR_LATCH); gamedir = gi.cvar("gamedir","",CVAR_SERVERINFO | CVAR_LATCH); maxclients = gi.cvar ("maxclients", "4", CVAR_SERVERINFO | CVAR_LATCH); maxspectators = gi.cvar ("maxspectators", "4", CVAR_SERVERINFO); deathmatch = gi.cvar ("deathmatch", "0", CVAR_LATCH); coop = gi.cvar ("coop", "0", CVAR_LATCH); skill = gi.cvar ("skill", "1", CVAR_LATCH); //Knightmare- increase maxentities //maxentities = gi.cvar ("maxentities", "1024", CVAR_LATCH); maxentities = gi.cvar ("maxentities", va("%i",MAX_EDICTS), CVAR_LATCH); gamerules = gi.cvar ("gamerules", "0", CVAR_LATCH); //PGM // change anytime vars dmflags = gi.cvar ("dmflags", "0", CVAR_SERVERINFO); fraglimit = gi.cvar ("fraglimit", "0", CVAR_SERVERINFO); timelimit = gi.cvar ("timelimit", "0", CVAR_SERVERINFO); password = gi.cvar ("password", "", CVAR_USERINFO); spectator_password = gi.cvar ("spectator_password", "", CVAR_USERINFO); filterban = gi.cvar ("filterban", "1", 0); g_select_empty = gi.cvar ("g_select_empty", "0", CVAR_ARCHIVE); run_pitch = gi.cvar ("run_pitch", "0.002", 0); run_roll = gi.cvar ("run_roll", "0.005", 0); bob_up = gi.cvar ("bob_up", "0.005", 0); bob_pitch = gi.cvar ("bob_pitch", "0.002", 0); bob_roll = gi.cvar ("bob_roll", "0.002", 0); // flood control flood_msgs = gi.cvar ("flood_msgs", "4", 0); flood_persecond = gi.cvar ("flood_persecond", "4", 0); flood_waitdelay = gi.cvar ("flood_waitdelay", "10", 0); // dm map list sv_maplist = gi.cvar ("sv_maplist", "", 0); // Lazarus actorchicken = gi.cvar("actorchicken", "1", CVAR_SERVERINFO|CVAR_LATCH); actorjump = gi.cvar("actorjump", "1", CVAR_SERVERINFO|CVAR_LATCH); actorscram = gi.cvar("actorscram", "1", CVAR_SERVERINFO|CVAR_LATCH); alert_sounds = gi.cvar("alert_sounds", "0", CVAR_ARCHIVE); allow_fog = gi.cvar ("allow_fog", "1", CVAR_ARCHIVE); // set to 0 to bypass target_changelevel clear inventory flag // because some user maps have this erroneously set allow_clear_inventory = gi.cvar ("allow_clear_inventory", "1", CVAR_ARCHIVE); cd_loopcount = gi.cvar("cd_loopcount","4",0); cl_gun = gi.cvar("cl_gun", "1", 0); cl_thirdperson = gi.cvar(CLIENT_THIRDPERSON_CVAR, "0", 0); // Knightmare added corpse_fade = gi.cvar("corpse_fade", "0", CVAR_ARCHIVE); corpse_fadetime = gi.cvar("corpse_fadetime", "20", CVAR_ARCHIVE); crosshair = gi.cvar("crosshair", "1", 0); footstep_sounds = gi.cvar("footstep_sounds", "0", CVAR_SERVERINFO|CVAR_LATCH); fov = gi.cvar("fov", "90", 0); hand = gi.cvar("hand", "0", 0); jetpack_weenie = gi.cvar("jetpack_weenie", "0", CVAR_SERVERINFO); joy_pitchsensitivity = gi.cvar("joy_pitchsensitivity", "1", 0); joy_yawsensitivity = gi.cvar("joy_yawsensitivity", "-1", 0); jump_kick = gi.cvar("jump_kick", "0", CVAR_SERVERINFO|CVAR_LATCH); lights = gi.cvar("lights", "1", 0); lightsmin = gi.cvar("lightsmin", "a", CVAR_SERVERINFO); m_pitch = gi.cvar("m_pitch", "0.022", 0); m_yaw = gi.cvar("m_yaw", "0.022", 0); monsterjump = gi.cvar("monsterjump", "1", CVAR_SERVERINFO|CVAR_LATCH); rocket_strafe = gi.cvar("rocket_strafe", "0", 0); #ifdef KMQUAKE2_ENGINE_MOD sv_maxgibs = gi.cvar("sv_maxgibs", "160", CVAR_SERVERINFO); #else sv_maxgibs = gi.cvar("sv_maxgibs", "20", CVAR_SERVERINFO); #endif turn_rider = gi.cvar("turn_rider", "1", CVAR_SERVERINFO); zoomrate = gi.cvar("zoomrate", "80", CVAR_ARCHIVE); zoomsnap = gi.cvar("zoomsnap", "20", CVAR_ARCHIVE); // shift_ and rotate_distance only used for debugging stuff - this is the distance // an entity will be moved by "item_left", "item_right", etc. shift_distance = gi.cvar("shift_distance", "1", CVAR_SERVERINFO); rotate_distance = gi.cvar("rotate_distance", "1", CVAR_SERVERINFO); // GL stuff gl_clear = gi.cvar("gl_clear", "0", 0); // Lazarus saved cvars that we may or may not manipulate, but need to // restore to original values upon map exit. lazarus_cd_loop = gi.cvar("lazarus_cd_loop", "0", 0); lazarus_gl_clear= gi.cvar("lazarus_gl_clear","0", 0); lazarus_pitch = gi.cvar("lazarus_pitch", "0", 0); lazarus_yaw = gi.cvar("lazarus_yaw", "0", 0); lazarus_joyp = gi.cvar("lazarus_joyp", "0", 0); lazarus_joyy = gi.cvar("lazarus_joyy", "0", 0); lazarus_cl_gun = gi.cvar("lazarus_cl_gun", "0", 0); lazarus_crosshair = gi.cvar("lazarus_crosshair", "0", 0); /*if(lazarus_gl_clear->value) gi.cvar_forceset("gl_clear", va("%d",lazarus_gl_clear->value)); else gi.cvar_forceset("lazarus_gl_clear", va("%d",gl_clear->value));*/ if(!deathmatch->value && !coop->value) { /*if(lazarus_pitch->value) { gi.cvar_forceset("cd_loopcount", va("%d",(int)(lazarus_cd_loop->value))); #ifndef KMQUAKE2_ENGINE_MOD // engine has zoom autosensitivity gi.cvar_forceset("m_pitch", va("%f",lazarus_pitch->value)); gi.cvar_forceset("m_yaw", va("%f",lazarus_yaw->value)); #endif //gi.cvar_forceset("cl_gun", va("%d",(int)(lazarus_cl_gun->value))); //gi.cvar_forceset("crosshair", va("%d",(int)(lazarus_crosshair->value))); } else {*/ gi.cvar_forceset("lazarus_cd_loop", va("%d",(int)(cd_loopcount->value))); #ifndef KMQUAKE2_ENGINE_MOD // engine has zoom autosensitivity gi.cvar_forceset("lazarus_pitch", va("%f",m_pitch->value)); gi.cvar_forceset("lazarus_yaw", va("%f",m_yaw->value)); gi.cvar_forceset("lazarus_joyp", va("%f",joy_pitchsensitivity->value)); gi.cvar_forceset("lazarus_joyy", va("%f",joy_yawsensitivity->value)); #endif gi.cvar_forceset("lazarus_cl_gun", va("%d",(int)(cl_gun->value))); gi.cvar_forceset("lazarus_crosshair", va("%d",(int)(crosshair->value))); //} } tpp = gi.cvar ("tpp", "0", CVAR_ARCHIVE); tpp_auto = gi.cvar ("tpp_auto", "1", 0); crossh = gi.cvar ("crossh", "1", 0); allow_download = gi.cvar("allow_download", "0", 0); // If this is an SP game and "readout" is not set, force allow_download off // so we don't get the annoying "Refusing to download path with .." messages // due to misc_actor sounds. if(allow_download->value && !readout->value && !deathmatch->value) gi.cvar_forceset("allow_download", "0"); bounce_bounce = gi.cvar("bounce_bounce", "0.5", 0); bounce_minv = gi.cvar("bounce_minv", "60", 0); // items InitItems (); Com_sprintf (game.helpmessage1, sizeof(game.helpmessage1), ""); Com_sprintf (game.helpmessage2, sizeof(game.helpmessage2), ""); // initialize all entities for this game game.maxentities = maxentities->value; g_edicts = gi.TagMalloc (game.maxentities * sizeof(g_edicts[0]), TAG_GAME); globals.edicts = g_edicts; globals.max_edicts = game.maxentities; // initialize all clients for this game game.maxclients = maxclients->value; g_clients = gi.TagMalloc (game.maxclients * sizeof(game.clients[0]), TAG_GAME); game.clients = g_clients; globals.num_edicts = game.maxclients+1; //====== //ROGUE if(gamerules) { InitGameRules(); // if there are game rules to set up, do so now. } //ROGUE //====== }