「G_Bullethell」CVARの名前を「G_Danmaku」に変更し、目に見えないバグを修正しようとしました

This commit is contained in:
2025-07-07 20:58:14 -03:00
parent df20a08dbe
commit 22b5e9119d
11 changed files with 62 additions and 43 deletions

View File

@@ -80,16 +80,18 @@ ifndef GENERATE_DEPENDENCIES
GENERATE_DEPENDENCIES=1
endif
ifndef BUILD_GAME_SO
BUILD_GAME_SO=1
ifneq ($(MOD_OA),1)
ifneq ($(MOD_Q3),0)
MOD_Q3=1
CFLAGS+=-DMOD_Q3A
endif
endif
ifndef BUILD_GAME_QVM
BUILD_GAME_QVM=1
endif
ifdef BUILD_WRAPPER
BUILD_WRAPPER=1
ifneq ($(MOD_Q3),1)
ifneq ($(MOD_OA),0)
MOD_OA=1
CFLAGS+=-DMOD_OA
endif
endif
#############################################################################
@@ -516,6 +518,7 @@ ifneq ($(BUILD_GAME_QVM),0)
$(B)/baseia/vm/cgame.qvm \
$(B)/baseia/vm/qagame.qvm \
$(B)/baseia/vm/ui.qvm \
$(B)/baseia/description.txt \
$(B)/baseia/pak1.pk3
endif
endif
@@ -1016,6 +1019,9 @@ $(B)/baseia/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC)
#############################################################################
## GAME PAK
#############################################################################
$(B)/baseia/description.txt:
$(echo_cmd) "GEN $@"
@echo "Illusion Arena $(shell git rev-list --all | wc -l)" > $@
$(B)/baseia/productid.txt:
$(echo_cmd) "GEN $@"
@echo "Illusion Arena $(shell git rev-list --all | wc -l)" > $@

View File

@@ -345,7 +345,7 @@ void CG_ParseServerinfo( void ) {
cgs.timelimit = atoi( Info_ValueForKey( info, "timelimit" ) );
cgs.maxclients = atoi( Info_ValueForKey( info, "sv_maxclients" ) );
cgs.roundtime = atoi( Info_ValueForKey( info, "elimination_roundtime" ) );
cgs.nopickup = atoi( Info_ValueForKey( info, "g_rockets" ) ) + atoi( Info_ValueForKey( info, "g_instantgib" ) ) + atoi( Info_ValueForKey( info, "g_elimination" ) ) + atoi( Info_ValueForKey( info, "g_bullethell" ) );
cgs.nopickup = atoi( Info_ValueForKey( info, "g_rockets" ) ) + atoi( Info_ValueForKey( info, "g_instantgib" ) ) + atoi( Info_ValueForKey( info, "g_elimination" ) ) + atoi( Info_ValueForKey( info, "g_danmaku" ) );
cgs.lms_mode = atoi( Info_ValueForKey( info, "g_lms_mode" ) );
cgs.multiKill = atoi( Info_ValueForKey( info, "g_multiKill" ) );
mapname = Info_ValueForKey( info, "mapname" );

View File

@@ -1674,6 +1674,8 @@ void BotChooseWeapon(bot_state_t *bs) {
newweaponnum = WP_RAILGUN;
else if(g_rockets.integer)
newweaponnum = WP_ROCKET_LAUNCHER;
else if(g_danmaku.integer)
newweaponnum = WP_MACHINEGUN;
else
newweaponnum = trap_BotChooseBestFightWeapon(bs->ws, bs->inventory);
if (bs->weaponnum != newweaponnum) bs->weaponchange_time = FloatTime();

View File

@@ -188,7 +188,7 @@ int BotAI_GetEntityState( int entityNum, entityState_t *state ) {
memset( state, 0, sizeof(entityState_t) );
if (!ent->inuse) return qfalse;
if (!ent->r.linked) return qfalse;
if ( !(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS ||g_instantgib.integer || g_rockets.integer || g_bullethell.integer || g_elimination_allgametypes.integer || g_gametype.integer==GT_CTF_ELIMINATION)
if ( !(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS ||g_instantgib.integer || g_rockets.integer || g_danmaku.integer || g_elimination_allgametypes.integer || g_gametype.integer==GT_CTF_ELIMINATION)
&& (ent->r.svFlags & SVF_NOCLIENT) ) return qfalse;
memcpy( state, &ent->s, sizeof(entityState_t) );
return qtrue;
@@ -1498,7 +1498,7 @@ int BotAIStartFrame(int time) {
trap_BotLibUpdateEntity(i, NULL);
continue;
}
if ( !(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS ||g_instantgib.integer || g_rockets.integer || g_bullethell.integer || g_elimination_allgametypes.integer || g_gametype.integer==GT_CTF_ELIMINATION)
if ( !(g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS ||g_instantgib.integer || g_rockets.integer || g_danmaku.integer || g_elimination_allgametypes.integer || g_gametype.integer==GT_CTF_ELIMINATION)
&& ent->r.svFlags & SVF_NOCLIENT) {
trap_BotLibUpdateEntity(i, NULL);
continue;

View File

@@ -2010,7 +2010,7 @@ else
client->ps.ammo[WP_ROCKET_LAUNCHER] = -1;
}
// True Bullet Hell (all weapons w/ inf. ammo)
if(g_bullethell.integer) {
if(g_danmaku.integer) {
client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GAUNTLET );
client->ps.ammo[WP_GAUNTLET] = -1;
client->ps.ammo[WP_GRAPPLING_HOOK] = -1;

View File

@@ -130,7 +130,7 @@ void TossClientItems( gentity_t *self ) {
}
}
if (g_instantgib.integer || g_rockets.integer || g_bullethell.integer || g_gametype.integer == GT_CTF_ELIMINATION || g_elimination_allgametypes.integer){
if (g_instantgib.integer || g_rockets.integer || g_danmaku.integer || g_gametype.integer == GT_CTF_ELIMINATION || g_elimination_allgametypes.integer){
//Nothing!
}
else

View File

@@ -416,7 +416,7 @@ void Touch_Item (gentity_t *ent, gentity_t *other, trace_t *trace) {
qboolean predict;
//instant gib
if ((g_instantgib.integer || g_rockets.integer || g_bullethell.integer || g_gametype.integer == GT_CTF_ELIMINATION || g_elimination_allgametypes.integer)
if ((g_instantgib.integer || g_rockets.integer || g_danmaku.integer || g_gametype.integer == GT_CTF_ELIMINATION || g_elimination_allgametypes.integer)
&& ent->item->giType != IT_TEAM)
return;
@@ -710,7 +710,7 @@ void FinishSpawningItem( gentity_t *ent ) {
// powerups don't spawn in for a while (but not in elimination)
if(g_gametype.integer != GT_ELIMINATION && g_gametype.integer != GT_CTF_ELIMINATION && g_gametype.integer != GT_LMS && !g_instantgib.integer && !g_elimination_allgametypes.integer && !g_rockets.integer && !g_bullethell.integer )
if(g_gametype.integer != GT_ELIMINATION && g_gametype.integer != GT_CTF_ELIMINATION && g_gametype.integer != GT_LMS && !g_instantgib.integer && !g_elimination_allgametypes.integer && !g_rockets.integer && !g_danmaku.integer )
if ( ent->item->giType == IT_POWERUP ) {
float respawn;
@@ -829,7 +829,7 @@ void ClearRegisteredItems( void ) {
RegisterItem( BG_FindItemForWeapon( WP_ROCKET_LAUNCHER ) );
}
else
if(g_bullethell.integer) {
if(g_danmaku.integer) {
RegisterItem( BG_FindItemForWeapon( WP_GAUNTLET ) );
RegisterItem( BG_FindItemForWeapon( WP_MACHINEGUN ) );
RegisterItem( BG_FindItemForWeapon( WP_SHOTGUN ) );
@@ -974,7 +974,7 @@ void G_SpawnItem (gentity_t *ent, gitem_t *item) {
ent->physicsBounce = 0.50; // items are bouncy
if (g_gametype.integer == GT_ELIMINATION || g_gametype.integer == GT_LMS ||
( item->giType != IT_TEAM && (g_instantgib.integer || g_rockets.integer || g_bullethell.integer || g_elimination_allgametypes.integer || g_gametype.integer==GT_CTF_ELIMINATION) ) ) {
( item->giType != IT_TEAM && (g_instantgib.integer || g_rockets.integer || g_danmaku.integer || g_elimination_allgametypes.integer || g_gametype.integer==GT_CTF_ELIMINATION) ) ) {
ent->s.eFlags |= EF_NODRAW; //Invisible in elimination
ent->r.svFlags |= SVF_NOCLIENT; //Don't broadcast
}

View File

@@ -1072,7 +1072,7 @@ extern vmCvar_t g_elimination_lockspectator;
extern vmCvar_t g_rockets;
// True Bullet Hell
extern vmCvar_t g_bullethell;
extern vmCvar_t g_danmaku;
//new in elimination Beta2
extern vmCvar_t g_instantgib;

View File

@@ -127,7 +127,7 @@ vmCvar_t g_elimination_lockspectator;
vmCvar_t g_rockets;
// True Bullet Hell
vmCvar_t g_bullethell;
vmCvar_t g_danmaku;
//dmn_clowns suggestions (with my idea of implementing):
vmCvar_t g_instantgib;
@@ -337,6 +337,8 @@ static cvarTable_t gameCvarTable[] = {
{ &g_rockets, "g_rockets", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_NORESTART, 0, qfalse },
// Instagib
{ &g_instantgib, "g_instantgib", "0", CVAR_SERVERINFO | CVAR_LATCH, 0, qfalse },
// True Bullet Hell
{ &g_danmaku, "g_danmaku", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_NORESTART, 0, qtrue },
// Vampire
{ &g_vampire, "g_vampire", "0.0", CVAR_NORESTART, 0, qtrue },
{ &g_vampireMaxHealth, "g_vampire_max_health", "500", CVAR_NORESTART, 0, qtrue },
@@ -347,10 +349,8 @@ static cvarTable_t gameCvarTable[] = {
{ &g_lms_mode, "g_lms_mode", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
// Catch-up
{ &g_catchup, "g_catchup", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue},
// True Bullet Hell
{ &g_bullethell, "g_bullethell", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_NORESTART, 0, qfalse },
{ &g_autonextmap, "g_autonextmap", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qfalse},
{ &g_autonextmap, "g_autonextmap", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qfalse},
{ &g_mappools, "g_mappools", "0\\maps_dm.cfg\\1\\maps_tourney.cfg\\3\\maps_tdm.cfg\\4\\maps_ctf.cfg\\5\\maps_oneflag.cfg\\6\\maps_obelisk.cfg\
\\7\\maps_harvester.cfg\\8\\maps_elimination.cfg\\9\\maps_ctf.cfg\\10\\maps_lms.cfg\\11\\maps_dd.cfg\\12\\maps_dom.cfg\\", CVAR_ARCHIVE | CVAR_NORESTART, 0, qfalse},
{ &g_humanplayers, "g_humanplayers", "0", CVAR_ROM | CVAR_NORESTART, 0, qfalse },
@@ -586,7 +586,7 @@ void G_UpdateCvars( void ) {
VoteParseCustomVotes();
//Here comes the cvars that must trigger a map_restart
if (cv->vmCvar == &g_instantgib || cv->vmCvar == &g_rockets || cv->vmCvar == &g_bullethell || cv->vmCvar == &g_elimination_allgametypes) {
if (cv->vmCvar == &g_instantgib || cv->vmCvar == &g_rockets || cv->vmCvar == &g_danmaku || cv->vmCvar == &g_elimination_allgametypes) {
trap_Cvar_Set("sv_dorestart","1");
}
@@ -668,13 +668,12 @@ void G_InitGame( int levelTime, int randomSeed, int restart ) {
G_UpdateTimestamp();
//disable unwanted cvars
if( g_gametype.integer == GT_SINGLE_PLAYER )
{
g_instantgib.integer = 0;
g_rockets.integer = 0;
g_bullethell.integer = 0;
g_vampire.value = 0.0f;
}
if( g_gametype.integer == GT_SINGLE_PLAYER ) {
g_instantgib.integer = 0;
g_rockets.integer = 0;
g_danmaku.integer = 0;
g_vampire.value = 0.0f;
}
G_ProcessIPBans();

View File

@@ -734,7 +734,7 @@ typedef struct {
menuradiobutton_s oneway;
menuradiobutton_s instantgib;
menuradiobutton_s rockets;
menuradiobutton_s bullethell;
menuradiobutton_s danmaku;
menulist_s lmsMode;
menulist_s botSkill;
@@ -848,7 +848,7 @@ static void ServerOptions_Start( void ) {
int lan;
int instantgib;
int rockets;
int bullethell;
int danmaku;
int oneway;
int lmsMode;
int skill;
@@ -866,7 +866,7 @@ static void ServerOptions_Start( void ) {
pmove = s_serveroptions.pmove.curvalue;
instantgib = s_serveroptions.instantgib.curvalue;
rockets = s_serveroptions.rockets.curvalue;
bullethell = s_serveroptions.bullethell.curvalue;
danmaku = s_serveroptions.danmaku.curvalue;
oneway = s_serveroptions.oneway.curvalue;
//Sago: For some reason you need to add 1 to curvalue to get the UI to show the right thing (fixed?)
lmsMode = s_serveroptions.lmsMode.curvalue; //+1;
@@ -959,7 +959,7 @@ static void ServerOptions_Start( void ) {
trap_Cvar_SetValue( "sv_lanForceRate", lan );
trap_Cvar_SetValue( "g_instantgib", instantgib );
trap_Cvar_SetValue( "g_rockets", rockets );
trap_Cvar_SetValue( "g_bullethell", bullethell );
trap_Cvar_SetValue( "g_danmaku", danmaku );
trap_Cvar_SetValue( "g_lms_mode", lmsMode);
trap_Cvar_SetValue( "elimination_ctf_oneway", oneway );
switch(pmove) {
@@ -1475,7 +1475,7 @@ static void ServerOptions_SetMenuItems( void ) {
s_serveroptions.lan.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "sv_lanforcerate" ) );
s_serveroptions.instantgib.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "g_instantgib" ) );
s_serveroptions.rockets.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "g_rockets" ) );
s_serveroptions.bullethell.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "g_bullethell" ) );
s_serveroptions.danmaku.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "g_danmaku" ) );
s_serveroptions.lmsMode.curvalue = Com_Clamp( 0, 3, trap_Cvar_VariableValue("g_lms_mode") );
s_serveroptions.oneway.curvalue = Com_Clamp( 0, 1, trap_Cvar_VariableValue( "elimination_ctf_oneway" ) );
s_serveroptions.pmove.curvalue = 0;
@@ -1684,12 +1684,12 @@ static void ServerOptions_MenuInit( qboolean multiplayer ) {
// True Bullet Hell
y += BIGCHAR_HEIGHT+2;
s_serveroptions.bullethell.generic.type = MTYPE_RADIOBUTTON;
s_serveroptions.bullethell.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
s_serveroptions.bullethell.generic.x = OPTIONS_X;
s_serveroptions.bullethell.generic.y = y;
s_serveroptions.bullethell.generic.name = "Bullet hell:";
s_serveroptions.bullethell.generic.statusbar = ServerOptions_StatusBar_BulletHell;
s_serveroptions.danmaku.generic.type = MTYPE_RADIOBUTTON;
s_serveroptions.danmaku.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
s_serveroptions.danmaku.generic.x = OPTIONS_X;
s_serveroptions.danmaku.generic.y = y;
s_serveroptions.danmaku.generic.name = "Bullet hell:";
s_serveroptions.danmaku.generic.statusbar = ServerOptions_StatusBar_BulletHell;
if( s_serveroptions.gametype == GT_LMS ) {
@@ -1838,7 +1838,7 @@ static void ServerOptions_MenuInit( qboolean multiplayer ) {
Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.pure );
Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.instantgib );
Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.rockets );
Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.bullethell );
Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.danmaku );
if( s_serveroptions.gametype == GT_LMS) {
Menu_AddItem( &s_serveroptions.menu, &s_serveroptions.lmsMode );
}

View File

@@ -26,10 +26,22 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
// q_shared.h -- included first by ALL program modules.
// A user mod should never modify this file
#if defined(MOD_OA)
#define PRODUCT_NAME "ioq3+oa"
#define BASEGAME "baseoa"
#define CLIENT_WINDOW_TITLE "OpenArena"
#define CLIENT_WINDOW_MIN_TITLE "OA"
#elif defined(MOD_Q3A)
#define PRODUCT_NAME "ioq3"
#define BASEGAME "baseq3"
#define CLIENT_WINDOW_TITLE "ioquake3"
#define CLIENT_WINDOW_MIN_TITLE "ioq3"
#else
#define PRODUCT_NAME "ioq3+ia"
#define BASEGAME "baseia"
#define CLIENT_WINDOW_TITLE "Illusion Arena"
#define CLIENT_WINDOW_MIN_TITLE "IA"
#endif
#ifdef _MSC_VER
#define PRODUCT_VERSION "1.35"