Implemented a skin-based linedef executor trigger
This commit is contained in:
parent
5cec737985
commit
a5074a846b
|
@ -1282,6 +1282,9 @@ static void P_LoadLineDefs2(void)
|
||||||
// Compile linedef 'text' from both sidedefs 'text' for appropriate specials.
|
// Compile linedef 'text' from both sidedefs 'text' for appropriate specials.
|
||||||
switch(ld->special)
|
switch(ld->special)
|
||||||
{
|
{
|
||||||
|
case 331: // Trigger linedef executor: Skin - Continuous
|
||||||
|
case 332: // Trigger linedef executor: Skin - Each time
|
||||||
|
case 333: // Trigger linedef executor: Skin - Once
|
||||||
case 443: // Calls a named Lua function
|
case 443: // Calls a named Lua function
|
||||||
if (sides[ld->sidenum[0]].text)
|
if (sides[ld->sidenum[0]].text)
|
||||||
{
|
{
|
||||||
|
@ -1492,6 +1495,9 @@ static void P_LoadRawSideDefs2(void *data)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 331: // Trigger linedef executor: Skin - Continuous
|
||||||
|
case 332: // Trigger linedef executor: Skin - Each time
|
||||||
|
case 333: // Trigger linedef executor: Skin - Once
|
||||||
case 443: // Calls a named Lua function
|
case 443: // Calls a named Lua function
|
||||||
case 459: // Control text prompt (named tag)
|
case 459: // Control text prompt (named tag)
|
||||||
{
|
{
|
||||||
|
|
18
src/p_spec.c
18
src/p_spec.c
|
@ -36,6 +36,7 @@
|
||||||
#include "m_cond.h" //unlock triggers
|
#include "m_cond.h" //unlock triggers
|
||||||
#include "lua_hook.h" // LUAh_LinedefExecute
|
#include "lua_hook.h" // LUAh_LinedefExecute
|
||||||
#include "f_finale.h" // control text prompt
|
#include "f_finale.h" // control text prompt
|
||||||
|
#include "r_things.h" // skins
|
||||||
|
|
||||||
#ifdef HW3SOUND
|
#ifdef HW3SOUND
|
||||||
#include "hardware/hw3sound.h"
|
#include "hardware/hw3sound.h"
|
||||||
|
@ -2008,7 +2009,12 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller
|
||||||
if (!P_CheckNightsTriggerLine(triggerline, actor))
|
if (!P_CheckNightsTriggerLine(triggerline, actor))
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
|
case 331: // continuous
|
||||||
|
case 332: // each time
|
||||||
|
case 333: // once
|
||||||
|
if (!(actor && actor->player && ((stricmp(triggerline->text, skins[actor->player->skin].name) == 0) ^ ((triggerline->flags & ML_NOCLIMB) == ML_NOCLIMB))))
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2141,6 +2147,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller
|
||||||
|| specialtype == 326 // DeNightserize - Once
|
|| specialtype == 326 // DeNightserize - Once
|
||||||
|| specialtype == 328 // Nights lap - Once
|
|| specialtype == 328 // Nights lap - Once
|
||||||
|| specialtype == 330 // Nights Bonus Time - Once
|
|| specialtype == 330 // Nights Bonus Time - Once
|
||||||
|
|| specialtype == 333 // Skin - Once
|
||||||
|| specialtype == 399) // Level Load
|
|| specialtype == 399) // Level Load
|
||||||
triggerline->special = 0; // Clear it out
|
triggerline->special = 0; // Clear it out
|
||||||
|
|
||||||
|
@ -2181,7 +2188,8 @@ void P_LinedefExecute(INT16 tag, mobj_t *actor, sector_t *caller)
|
||||||
|| lines[masterline].special == 306 // Character ability - Each time
|
|| lines[masterline].special == 306 // Character ability - Each time
|
||||||
|| lines[masterline].special == 310 // CTF Red team - Each time
|
|| lines[masterline].special == 310 // CTF Red team - Each time
|
||||||
|| lines[masterline].special == 312 // CTF Blue team - Each time
|
|| lines[masterline].special == 312 // CTF Blue team - Each time
|
||||||
|| lines[masterline].special == 322) // Trigger on X calls - Each Time
|
|| lines[masterline].special == 322 // Trigger on X calls - Each Time
|
||||||
|
|| lines[masterline].special == 332)// Skin - Each time
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (lines[masterline].special < 300
|
if (lines[masterline].special < 300
|
||||||
|
@ -7169,6 +7177,7 @@ void P_SpawnSpecials(INT32 fromnetsave)
|
||||||
case 301:
|
case 301:
|
||||||
case 310:
|
case 310:
|
||||||
case 312:
|
case 312:
|
||||||
|
case 332:
|
||||||
sec = sides[*lines[i].sidenum].sector - sectors;
|
sec = sides[*lines[i].sidenum].sector - sectors;
|
||||||
P_AddEachTimeThinker(§ors[sec], &lines[i]);
|
P_AddEachTimeThinker(§ors[sec], &lines[i]);
|
||||||
break;
|
break;
|
||||||
|
@ -7217,6 +7226,11 @@ void P_SpawnSpecials(INT32 fromnetsave)
|
||||||
case 330:
|
case 330:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// Skin trigger executors
|
||||||
|
case 331:
|
||||||
|
case 333:
|
||||||
|
break;
|
||||||
|
|
||||||
case 399: // Linedef execute on map load
|
case 399: // Linedef execute on map load
|
||||||
// This is handled in P_RunLevelLoadExecutors.
|
// This is handled in P_RunLevelLoadExecutors.
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue