mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-25 05:41:42 +00:00
Merge branch 'tutorial-scenery' into 'next'
Tutorial scenery See merge request STJr/SRB2!1722
This commit is contained in:
commit
ab711128c7
6 changed files with 365 additions and 0 deletions
|
@ -6880,6 +6880,20 @@ thingtypes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tutorial
|
||||||
|
{
|
||||||
|
color = 10; // Green
|
||||||
|
title = "Tutorial";
|
||||||
|
|
||||||
|
799
|
||||||
|
{
|
||||||
|
title = "Tutorial Plant";
|
||||||
|
sprite = "TUPFH0";
|
||||||
|
width = 40;
|
||||||
|
height = 144;
|
||||||
|
parametertext = "Start frame";
|
||||||
|
}
|
||||||
|
|
||||||
flickies
|
flickies
|
||||||
{
|
{
|
||||||
color = 10; // Green
|
color = 10; // Green
|
||||||
|
|
|
@ -224,6 +224,8 @@ actionpointer_t actionpointers[] =
|
||||||
{{A_SetObjectFlags2}, "A_SETOBJECTFLAGS2"},
|
{{A_SetObjectFlags2}, "A_SETOBJECTFLAGS2"},
|
||||||
{{A_RandomState}, "A_RANDOMSTATE"},
|
{{A_RandomState}, "A_RANDOMSTATE"},
|
||||||
{{A_RandomStateRange}, "A_RANDOMSTATERANGE"},
|
{{A_RandomStateRange}, "A_RANDOMSTATERANGE"},
|
||||||
|
{{A_StateRangeByAngle}, "A_STATERANGEBYANGLE"},
|
||||||
|
{{A_StateRangeByParameter}, "A_STATERANGEBYPARAMETER"},
|
||||||
{{A_DualAction}, "A_DUALACTION"},
|
{{A_DualAction}, "A_DUALACTION"},
|
||||||
{{A_RemoteAction}, "A_REMOTEACTION"},
|
{{A_RemoteAction}, "A_REMOTEACTION"},
|
||||||
{{A_ToggleFlameJet}, "A_TOGGLEFLAMEJET"},
|
{{A_ToggleFlameJet}, "A_TOGGLEFLAMEJET"},
|
||||||
|
@ -1751,6 +1753,56 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
||||||
// The letter
|
// The letter
|
||||||
"S_LETTER",
|
"S_LETTER",
|
||||||
|
|
||||||
|
// Tutorial Scenery
|
||||||
|
"S_TUTORIALLEAF1",
|
||||||
|
"S_TUTORIALLEAF2",
|
||||||
|
"S_TUTORIALLEAF3",
|
||||||
|
"S_TUTORIALLEAF4",
|
||||||
|
"S_TUTORIALLEAF5",
|
||||||
|
"S_TUTORIALLEAF6",
|
||||||
|
"S_TUTORIALLEAF7",
|
||||||
|
"S_TUTORIALLEAF8",
|
||||||
|
"S_TUTORIALLEAF9",
|
||||||
|
"S_TUTORIALLEAF10",
|
||||||
|
"S_TUTORIALLEAF11",
|
||||||
|
"S_TUTORIALLEAF12",
|
||||||
|
"S_TUTORIALLEAF13",
|
||||||
|
"S_TUTORIALLEAF14",
|
||||||
|
"S_TUTORIALLEAF15",
|
||||||
|
"S_TUTORIALLEAF16",
|
||||||
|
"S_TUTORIALFLOWER1",
|
||||||
|
"S_TUTORIALFLOWER2",
|
||||||
|
"S_TUTORIALFLOWER3",
|
||||||
|
"S_TUTORIALFLOWER4",
|
||||||
|
"S_TUTORIALFLOWER5",
|
||||||
|
"S_TUTORIALFLOWER6",
|
||||||
|
"S_TUTORIALFLOWER7",
|
||||||
|
"S_TUTORIALFLOWER8",
|
||||||
|
"S_TUTORIALFLOWER9",
|
||||||
|
"S_TUTORIALFLOWER10",
|
||||||
|
"S_TUTORIALFLOWER11",
|
||||||
|
"S_TUTORIALFLOWER12",
|
||||||
|
"S_TUTORIALFLOWER13",
|
||||||
|
"S_TUTORIALFLOWER14",
|
||||||
|
"S_TUTORIALFLOWER15",
|
||||||
|
"S_TUTORIALFLOWER16",
|
||||||
|
"S_TUTORIALFLOWERF1",
|
||||||
|
"S_TUTORIALFLOWERF2",
|
||||||
|
"S_TUTORIALFLOWERF3",
|
||||||
|
"S_TUTORIALFLOWERF4",
|
||||||
|
"S_TUTORIALFLOWERF5",
|
||||||
|
"S_TUTORIALFLOWERF6",
|
||||||
|
"S_TUTORIALFLOWERF7",
|
||||||
|
"S_TUTORIALFLOWERF8",
|
||||||
|
"S_TUTORIALFLOWERF9",
|
||||||
|
"S_TUTORIALFLOWERF10",
|
||||||
|
"S_TUTORIALFLOWERF11",
|
||||||
|
"S_TUTORIALFLOWERF12",
|
||||||
|
"S_TUTORIALFLOWERF13",
|
||||||
|
"S_TUTORIALFLOWERF14",
|
||||||
|
"S_TUTORIALFLOWERF15",
|
||||||
|
"S_TUTORIALFLOWERF16",
|
||||||
|
|
||||||
// GFZ flowers
|
// GFZ flowers
|
||||||
"S_GFZFLOWERA",
|
"S_GFZFLOWERA",
|
||||||
"S_GFZFLOWERB",
|
"S_GFZFLOWERB",
|
||||||
|
@ -3763,6 +3815,12 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
||||||
// The letter
|
// The letter
|
||||||
"MT_LETTER",
|
"MT_LETTER",
|
||||||
|
|
||||||
|
// Tutorial Scenery
|
||||||
|
"MT_TUTORIALPLANT",
|
||||||
|
"MT_TUTORIALLEAF",
|
||||||
|
"MT_TUTORIALFLOWER",
|
||||||
|
"MT_TUTORIALFLOWERF",
|
||||||
|
|
||||||
// Greenflower Scenery
|
// Greenflower Scenery
|
||||||
"MT_GFZFLOWER1",
|
"MT_GFZFLOWER1",
|
||||||
"MT_GFZFLOWER2",
|
"MT_GFZFLOWER2",
|
||||||
|
|
162
src/info.c
162
src/info.c
|
@ -203,6 +203,10 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
// The letter
|
// The letter
|
||||||
"LETR",
|
"LETR",
|
||||||
|
|
||||||
|
// Tutorial Scenery
|
||||||
|
"TUPL",
|
||||||
|
"TUPF",
|
||||||
|
|
||||||
// Greenflower Scenery
|
// Greenflower Scenery
|
||||||
"FWR1",
|
"FWR1",
|
||||||
"FWR2", // GFZ Sunflower
|
"FWR2", // GFZ Sunflower
|
||||||
|
@ -2117,6 +2121,56 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
{SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_LETTER
|
{SPR_LETR, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_LETTER
|
||||||
|
|
||||||
|
// Tutorial scenery
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF2}, // S_TUTORIALLEAF1
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF3}, // S_TUTORIALLEAF2
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF4}, // S_TUTORIALLEAF3
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF5}, // S_TUTORIALLEAF4
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF6}, // S_TUTORIALLEAF5
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF7}, // S_TUTORIALLEAF6
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF8}, // S_TUTORIALLEAF7
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF9}, // S_TUTORIALLEAF8
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALLEAF10}, // S_TUTORIALLEAF9
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALLEAF11}, // S_TUTORIALLEAF10
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALLEAF12}, // S_TUTORIALLEAF11
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALLEAF13}, // S_TUTORIALLEAF12
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALLEAF14}, // S_TUTORIALLEAF13
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALLEAF15}, // S_TUTORIALLEAF14
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALLEAF16}, // S_TUTORIALLEAF15
|
||||||
|
{SPR_TUPL, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALLEAF1}, // S_TUTORIALLEAF16
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER2}, // S_TUTORIALFLOWER1
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER3}, // S_TUTORIALFLOWER2
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER4}, // S_TUTORIALFLOWER3
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER5}, // S_TUTORIALFLOWER4
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER6}, // S_TUTORIALFLOWER5
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER7}, // S_TUTORIALFLOWER6
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER8}, // S_TUTORIALFLOWER7
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER9}, // S_TUTORIALFLOWER8
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWER10}, // S_TUTORIALFLOWER9
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWER11}, // S_TUTORIALFLOWER10
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWER12}, // S_TUTORIALFLOWER11
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWER13}, // S_TUTORIALFLOWER12
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWER14}, // S_TUTORIALFLOWER13
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWER15}, // S_TUTORIALFLOWER14
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWER16}, // S_TUTORIALFLOWER15
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_PAPERSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWER1}, // S_TUTORIALFLOWER16
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF2}, // S_TUTORIALFLOWERF1
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF3}, // S_TUTORIALFLOWERF2
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF4}, // S_TUTORIALFLOWERF3
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF5}, // S_TUTORIALFLOWERF4
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF6}, // S_TUTORIALFLOWERF5
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF7}, // S_TUTORIALFLOWERF6
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF8}, // S_TUTORIALFLOWERF7
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF9}, // S_TUTORIALFLOWERF8
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|7, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF10}, // S_TUTORIALFLOWERF9
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|6, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF11}, // S_TUTORIALFLOWERF10
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|5, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF12}, // S_TUTORIALFLOWERF11
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|4, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF13}, // S_TUTORIALFLOWERF12
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|3, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF14}, // S_TUTORIALFLOWERF13
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|2, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF15}, // S_TUTORIALFLOWERF14
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|1, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF16}, // S_TUTORIALFLOWERF15
|
||||||
|
{SPR_TUPF, FF_SEMIBRIGHT|FF_ADD|FF_FLOORSPRITE|0, 3, {NULL}, 0, 0, S_TUTORIALFLOWERF1}, // S_TUTORIALFLOWERF16
|
||||||
|
|
||||||
// GFZ flowers
|
// GFZ flowers
|
||||||
{SPR_FWR1, FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL}, // S_GFZFLOWERA
|
{SPR_FWR1, FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL}, // S_GFZFLOWERA
|
||||||
{SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL}, // S_GFZFLOWERB
|
{SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL}, // S_GFZFLOWERB
|
||||||
|
@ -9979,6 +10033,114 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_TUTORIALPLANT
|
||||||
|
799, // doomednum
|
||||||
|
S_NULL, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // reactiontime
|
||||||
|
sfx_None, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_None, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_NULL, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
0, // speed
|
||||||
|
32*FRACUNIT, // radius
|
||||||
|
32*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_TUTORIALLEAF
|
||||||
|
-1, // doomednum
|
||||||
|
S_TUTORIALLEAF1, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // reactiontime
|
||||||
|
sfx_None, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_None, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_NULL, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
0, // speed
|
||||||
|
32*FRACUNIT, // radius
|
||||||
|
32*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_TUTORIALFLOWER
|
||||||
|
-1, // doomednum
|
||||||
|
S_TUTORIALFLOWER1, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // reactiontime
|
||||||
|
sfx_None, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_None, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_NULL, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
0, // speed
|
||||||
|
32*FRACUNIT, // radius
|
||||||
|
32*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_TUTORIALFLOWERF
|
||||||
|
-1, // doomednum
|
||||||
|
S_TUTORIALFLOWERF1, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // reactiontime
|
||||||
|
sfx_None, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_None, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_NULL, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
0, // speed
|
||||||
|
32*FRACUNIT, // radius
|
||||||
|
32*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_GFZFLOWER1
|
{ // MT_GFZFLOWER1
|
||||||
800, // doomednum
|
800, // doomednum
|
||||||
S_GFZFLOWERA, // spawnstate
|
S_GFZFLOWERA, // spawnstate
|
||||||
|
|
64
src/info.h
64
src/info.h
|
@ -177,6 +177,8 @@ enum actionnum
|
||||||
A_SETOBJECTFLAGS2,
|
A_SETOBJECTFLAGS2,
|
||||||
A_RANDOMSTATE,
|
A_RANDOMSTATE,
|
||||||
A_RANDOMSTATERANGE,
|
A_RANDOMSTATERANGE,
|
||||||
|
A_STATERANGEBYANGLE,
|
||||||
|
A_STATERANGEBYPARAMETER,
|
||||||
A_DUALACTION,
|
A_DUALACTION,
|
||||||
A_REMOTEACTION,
|
A_REMOTEACTION,
|
||||||
A_TOGGLEFLAMEJET,
|
A_TOGGLEFLAMEJET,
|
||||||
|
@ -443,6 +445,8 @@ void A_SetObjectFlags();
|
||||||
void A_SetObjectFlags2();
|
void A_SetObjectFlags2();
|
||||||
void A_RandomState();
|
void A_RandomState();
|
||||||
void A_RandomStateRange();
|
void A_RandomStateRange();
|
||||||
|
void A_StateRangeByAngle();
|
||||||
|
void A_StateRangeByParameter();
|
||||||
void A_DualAction();
|
void A_DualAction();
|
||||||
void A_RemoteAction();
|
void A_RemoteAction();
|
||||||
void A_ToggleFlameJet();
|
void A_ToggleFlameJet();
|
||||||
|
@ -737,6 +741,10 @@ typedef enum sprite
|
||||||
// The letter
|
// The letter
|
||||||
SPR_LETR,
|
SPR_LETR,
|
||||||
|
|
||||||
|
// Tutorial scenery
|
||||||
|
SPR_TUPL,
|
||||||
|
SPR_TUPF,
|
||||||
|
|
||||||
// Greenflower Scenery
|
// Greenflower Scenery
|
||||||
SPR_FWR1,
|
SPR_FWR1,
|
||||||
SPR_FWR2, // GFZ Sunflower
|
SPR_FWR2, // GFZ Sunflower
|
||||||
|
@ -2551,6 +2559,56 @@ typedef enum state
|
||||||
// The letter
|
// The letter
|
||||||
S_LETTER,
|
S_LETTER,
|
||||||
|
|
||||||
|
// Tutorial scenery
|
||||||
|
S_TUTORIALLEAF1,
|
||||||
|
S_TUTORIALLEAF2,
|
||||||
|
S_TUTORIALLEAF3,
|
||||||
|
S_TUTORIALLEAF4,
|
||||||
|
S_TUTORIALLEAF5,
|
||||||
|
S_TUTORIALLEAF6,
|
||||||
|
S_TUTORIALLEAF7,
|
||||||
|
S_TUTORIALLEAF8,
|
||||||
|
S_TUTORIALLEAF9,
|
||||||
|
S_TUTORIALLEAF10,
|
||||||
|
S_TUTORIALLEAF11,
|
||||||
|
S_TUTORIALLEAF12,
|
||||||
|
S_TUTORIALLEAF13,
|
||||||
|
S_TUTORIALLEAF14,
|
||||||
|
S_TUTORIALLEAF15,
|
||||||
|
S_TUTORIALLEAF16,
|
||||||
|
S_TUTORIALFLOWER1,
|
||||||
|
S_TUTORIALFLOWER2,
|
||||||
|
S_TUTORIALFLOWER3,
|
||||||
|
S_TUTORIALFLOWER4,
|
||||||
|
S_TUTORIALFLOWER5,
|
||||||
|
S_TUTORIALFLOWER6,
|
||||||
|
S_TUTORIALFLOWER7,
|
||||||
|
S_TUTORIALFLOWER8,
|
||||||
|
S_TUTORIALFLOWER9,
|
||||||
|
S_TUTORIALFLOWER10,
|
||||||
|
S_TUTORIALFLOWER11,
|
||||||
|
S_TUTORIALFLOWER12,
|
||||||
|
S_TUTORIALFLOWER13,
|
||||||
|
S_TUTORIALFLOWER14,
|
||||||
|
S_TUTORIALFLOWER15,
|
||||||
|
S_TUTORIALFLOWER16,
|
||||||
|
S_TUTORIALFLOWERF1,
|
||||||
|
S_TUTORIALFLOWERF2,
|
||||||
|
S_TUTORIALFLOWERF3,
|
||||||
|
S_TUTORIALFLOWERF4,
|
||||||
|
S_TUTORIALFLOWERF5,
|
||||||
|
S_TUTORIALFLOWERF6,
|
||||||
|
S_TUTORIALFLOWERF7,
|
||||||
|
S_TUTORIALFLOWERF8,
|
||||||
|
S_TUTORIALFLOWERF9,
|
||||||
|
S_TUTORIALFLOWERF10,
|
||||||
|
S_TUTORIALFLOWERF11,
|
||||||
|
S_TUTORIALFLOWERF12,
|
||||||
|
S_TUTORIALFLOWERF13,
|
||||||
|
S_TUTORIALFLOWERF14,
|
||||||
|
S_TUTORIALFLOWERF15,
|
||||||
|
S_TUTORIALFLOWERF16,
|
||||||
|
|
||||||
// GFZ flowers
|
// GFZ flowers
|
||||||
S_GFZFLOWERA,
|
S_GFZFLOWERA,
|
||||||
S_GFZFLOWERB,
|
S_GFZFLOWERB,
|
||||||
|
@ -4583,6 +4641,12 @@ typedef enum mobj_type
|
||||||
// The letter
|
// The letter
|
||||||
MT_LETTER,
|
MT_LETTER,
|
||||||
|
|
||||||
|
// Tutorial Scenery
|
||||||
|
MT_TUTORIALPLANT,
|
||||||
|
MT_TUTORIALLEAF,
|
||||||
|
MT_TUTORIALFLOWER,
|
||||||
|
MT_TUTORIALFLOWERF,
|
||||||
|
|
||||||
// Greenflower Scenery
|
// Greenflower Scenery
|
||||||
MT_GFZFLOWER1,
|
MT_GFZFLOWER1,
|
||||||
MT_GFZFLOWER2,
|
MT_GFZFLOWER2,
|
||||||
|
|
|
@ -200,6 +200,8 @@ void A_SetObjectFlags(mobj_t *actor);
|
||||||
void A_SetObjectFlags2(mobj_t *actor);
|
void A_SetObjectFlags2(mobj_t *actor);
|
||||||
void A_RandomState(mobj_t *actor);
|
void A_RandomState(mobj_t *actor);
|
||||||
void A_RandomStateRange(mobj_t *actor);
|
void A_RandomStateRange(mobj_t *actor);
|
||||||
|
void A_StateRangeByAngle(mobj_t *actor);
|
||||||
|
void A_StateRangeByParameter(mobj_t *actor);
|
||||||
void A_DualAction(mobj_t *actor);
|
void A_DualAction(mobj_t *actor);
|
||||||
void A_RemoteAction(mobj_t *actor);
|
void A_RemoteAction(mobj_t *actor);
|
||||||
void A_ToggleFlameJet(mobj_t *actor);
|
void A_ToggleFlameJet(mobj_t *actor);
|
||||||
|
@ -9274,6 +9276,49 @@ void A_RandomStateRange(mobj_t *actor)
|
||||||
P_SetMobjState(actor, P_RandomRange(locvar1, locvar2));
|
P_SetMobjState(actor, P_RandomRange(locvar1, locvar2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Function: A_StateRangeByAngle
|
||||||
|
//
|
||||||
|
// Description: Chooses a state within the range supplied, depending on the actor's angle.
|
||||||
|
//
|
||||||
|
// var1 = Minimum state number to use.
|
||||||
|
// var2 = Maximum state number to use. The difference will act as a modulo operator.
|
||||||
|
//
|
||||||
|
void A_StateRangeByAngle(mobj_t *actor)
|
||||||
|
{
|
||||||
|
INT32 locvar1 = var1;
|
||||||
|
INT32 locvar2 = var2;
|
||||||
|
|
||||||
|
if (LUA_CallAction(A_STATERANGEBYANGLE, actor))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (locvar2 - locvar1 < 0)
|
||||||
|
return; // invalid range
|
||||||
|
|
||||||
|
P_SetMobjState(actor, locvar1 + (AngleFixed(actor->angle)>>FRACBITS % (1 + locvar2 - locvar1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function: A_StateRangeByParameter
|
||||||
|
//
|
||||||
|
// Description: Chooses a state within the range supplied, depending on the actor's parameter/extrainfo value.
|
||||||
|
//
|
||||||
|
// var1 = Minimum state number to use.
|
||||||
|
// var2 = Maximum state number to use. The difference will act as a modulo operator.
|
||||||
|
//
|
||||||
|
void A_StateRangeByParameter(mobj_t *actor)
|
||||||
|
{
|
||||||
|
INT32 locvar1 = var1;
|
||||||
|
INT32 locvar2 = var2;
|
||||||
|
UINT8 parameter = (actor->spawnpoint ? actor->spawnpoint->extrainfo : 0);
|
||||||
|
|
||||||
|
if (LUA_CallAction(A_STATERANGEBYPARAMETER, actor))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (locvar2 - locvar1 < 0)
|
||||||
|
return; // invalid range
|
||||||
|
|
||||||
|
P_SetMobjState(actor, locvar1 + (parameter % (1 + locvar2 - locvar1)));
|
||||||
|
}
|
||||||
|
|
||||||
// Function: A_DualAction
|
// Function: A_DualAction
|
||||||
//
|
//
|
||||||
// Description: Calls two actions. Be careful, if you reference the same state this action is called from, you can create an infinite loop.
|
// Description: Calls two actions. Be careful, if you reference the same state this action is called from, you can create an infinite loop.
|
||||||
|
|
22
src/p_mobj.c
22
src/p_mobj.c
|
@ -7936,6 +7936,9 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
||||||
P_SetScale(mobj, mobj->target->scale);
|
P_SetScale(mobj, mobj->target->scale);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MT_TUTORIALFLOWER:
|
||||||
|
mobj->angle += FixedAngle(3*FRACUNIT);
|
||||||
|
break;
|
||||||
case MT_VWREF:
|
case MT_VWREF:
|
||||||
case MT_VWREB:
|
case MT_VWREB:
|
||||||
{
|
{
|
||||||
|
@ -12833,6 +12836,25 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
|
||||||
P_SpawnMobjFromMobj(mobj, -FRACUNIT, 0, 0, MT_THZTREEBRANCH)->angle = mobjangle + ANGLE_270;
|
P_SpawnMobjFromMobj(mobj, -FRACUNIT, 0, 0, MT_THZTREEBRANCH)->angle = mobjangle + ANGLE_270;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MT_TUTORIALPLANT:
|
||||||
|
{
|
||||||
|
INT32 i;
|
||||||
|
mobj_t *segment;
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
segment = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_TUTORIALLEAF);
|
||||||
|
segment->angle = mobj->angle + FixedAngle(i*60*FRACUNIT);
|
||||||
|
P_SetMobjState(segment, S_TUTORIALLEAF1 + mthing->extrainfo);
|
||||||
|
}
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
segment = P_SpawnMobjFromMobj(mobj, 0, 0, 112*FRACUNIT, MT_TUTORIALFLOWER);
|
||||||
|
segment->angle = mobj->angle + FixedAngle(i*120*FRACUNIT);
|
||||||
|
P_SetMobjState(segment, S_TUTORIALFLOWER1 + mthing->extrainfo);
|
||||||
|
}
|
||||||
|
P_SetMobjState(P_SpawnMobjFromMobj(mobj, 0, 0, 112*FRACUNIT, MT_TUTORIALFLOWERF), S_TUTORIALFLOWERF1 + mthing->extrainfo);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MT_CEZPOLE1:
|
case MT_CEZPOLE1:
|
||||||
case MT_CEZPOLE2:
|
case MT_CEZPOLE2:
|
||||||
{ // Spawn the banner
|
{ // Spawn the banner
|
||||||
|
|
Loading…
Reference in a new issue