From 72e2c24fdb714698f1a3c23f1c9035e5a387d3b4 Mon Sep 17 00:00:00 2001 From: MascaraSnake <jonassauer27@gmail.com> Date: Mon, 20 Dec 2021 23:28:18 +0100 Subject: [PATCH] Adapt some reserved tags to UDMF --- extras/conf/udb/Includes/SRB222_things.cfg | 15 +++++++++ src/info.c | 2 +- src/info.h | 2 ++ src/p_enemy.c | 36 +++++++++++++++++++++- src/p_inter.c | 3 +- src/p_setup.c | 9 ++++++ 6 files changed, 64 insertions(+), 3 deletions(-) diff --git a/extras/conf/udb/Includes/SRB222_things.cfg b/extras/conf/udb/Includes/SRB222_things.cfg index 86fe6b1a5..0efe006fb 100644 --- a/extras/conf/udb/Includes/SRB222_things.cfg +++ b/extras/conf/udb/Includes/SRB222_things.cfg @@ -258,6 +258,11 @@ doom sprite = "TRETA1"; width = 16; height = 32; + arg0 + { + title = "Death trigger tag"; + type = 15; + } } 111 { @@ -2704,6 +2709,11 @@ doom sprite = "KOOPA0"; width = 16; height = 48; + arg0 + { + title = "Death trigger tag"; + type = 15; + } } 1807 { @@ -2711,6 +2721,11 @@ doom sprite = "MAXEA0"; width = 8; height = 16; + arg0 + { + title = "Death trigger tag"; + type = 15; + } } 1808 { diff --git a/src/info.c b/src/info.c index f44659bda..d456d2afe 100644 --- a/src/info.c +++ b/src/info.c @@ -899,7 +899,7 @@ state_t states[NUMSTATES] = {SPR_TRET, FF_FULLBRIGHT|2, 7, {A_Pain}, 0, 0, S_TURRETSHOCK7}, // S_TURRETSHOCK6 {SPR_TRET, FF_FULLBRIGHT|3, 7, {NULL}, 0, 0, S_TURRETSHOCK8}, // S_TURRETSHOCK7 {SPR_TRET, FF_FULLBRIGHT|4, 7, {NULL}, 0, 0, S_TURRETSHOCK9}, // S_TURRETSHOCK8 - {SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecute}, LE_TURRET, 0, S_XPLD1}, // S_TURRETSHOCK9 + {SPR_TRET, FF_FULLBRIGHT|4, 7, {A_LinedefExecuteFromArg}, 0, 0, S_XPLD1}, // S_TURRETSHOCK9 {SPR_TURR, 0, 1, {A_Look}, 1, 0, S_TURRETPOPDOWN8}, // S_TURRETLOOK {SPR_TURR, 0, 0, {A_FaceTarget}, 0, 0, S_TURRETPOPUP1}, // S_TURRETSEE diff --git a/src/info.h b/src/info.h index 28965f4b3..d5fcc8504 100644 --- a/src/info.h +++ b/src/info.h @@ -150,6 +150,7 @@ enum actionnum A_BOSS3PATH, A_BOSS3SHOCKTHINK, A_LINEDEFEXECUTE, + A_LINEDEFEXECUTEFROMARG, A_PLAYSEESOUND, A_PLAYATTACKSOUND, A_PLAYACTIVESOUND, @@ -409,6 +410,7 @@ void A_Boss3TakeDamage(); void A_Boss3Path(); void A_Boss3ShockThink(); void A_LinedefExecute(); +void A_LinedefExecuteFromArg(); void A_PlaySeeSound(); void A_PlayAttackSound(); void A_PlayActiveSound(); diff --git a/src/p_enemy.c b/src/p_enemy.c index c02ca38be..a4607b497 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -173,6 +173,7 @@ void A_Boss3TakeDamage(mobj_t *actor); void A_Boss3Path(mobj_t *actor); void A_Boss3ShockThink(mobj_t *actor); void A_LinedefExecute(mobj_t *actor); +void A_LinedefExecuteFromArg(mobj_t *actor); void A_PlaySeeSound(mobj_t *actor); void A_PlayAttackSound(mobj_t *actor); void A_PlayActiveSound(mobj_t *actor); @@ -4049,7 +4050,8 @@ bossjustdie: } case MT_KOOPA: { - EV_DoCeiling(LE_KOOPA, NULL, raiseToHighest); + if (mo->spawnpoint) + EV_DoCeiling(mo->spawnpoint->args[0], NULL, raiseToHighest); return; } case MT_FANG: @@ -8307,6 +8309,38 @@ void A_LinedefExecute(mobj_t *actor) P_LinedefExecute((INT16)tagnum, actor, actor->subsector->sector); } +// Function: A_LinedefExecuteFromArg +// +// Description: Object's location is used to set the calling sector. The tag used is the spawnpoint mapthing's args[var1]. +// +// var1 = mapthing arg to take tag from +// var2 = unused +// +void A_LinedefExecuteFromArg(mobj_t *actor) +{ + INT32 tagnum; + INT32 locvar1 = var1; + + if (LUA_CallAction(A_LINEDEFEXECUTEFROMARG, actor)) + return; + + if (!actor->spawnpoint) + return; + + if (locvar1 < 0 || locvar1 > NUMMAPTHINGARGS) + { + CONS_Debug(DBG_GAMELOGIC, "A_LinedefExecuteFromArg: Invalid mapthing arg %d\n", locvar1); + return; + } + + tagnum = actor->spawnpoint->args[locvar1]; + + CONS_Debug(DBG_GAMELOGIC, "A_LinedefExecuteFromArg: Running mobjtype %d's sector with tag %d\n", actor->type, tagnum); + + // tag 32768 displayed in map editors is actually tag -32768, tag 32769 is -32767, 65535 is -1 etc. + P_LinedefExecute((INT16)tagnum, actor, actor->subsector->sector); +} + // Function: A_PlaySeeSound // // Description: Plays the object's seesound. diff --git a/src/p_inter.c b/src/p_inter.c index d84cb8ce5..62f6080bc 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1387,7 +1387,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (player->bot && player->bot != BOT_MPAI) return; - EV_DoElevator(LE_AXE, NULL, bridgeFall); + if (special->spawnpoint) + EV_DoElevator(special->spawnpoint->args[0], NULL, bridgeFall); // scan the remaining thinkers to find koopa for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) diff --git a/src/p_setup.c b/src/p_setup.c index 25250b449..46b47100c 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -4873,6 +4873,9 @@ static void P_ConvertBinaryMap(void) { switch (mapthings[i].type) { + case 110: //THZ Turret + mapthings[i].args[0] = LE_TURRET; + break; case 754: //Push point case 755: //Pull point { @@ -5048,6 +5051,12 @@ static void P_ConvertBinaryMap(void) case 1714: //Ideya anchor point mapthings[i].args[0] = mapthings[i].extrainfo; break; + case 1806: //King Bowser + mapthings[i].args[0] = LE_KOOPA; + break; + case 1807: //Axe + mapthings[i].args[0] = LE_AXE; + break; default: break; }