mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 09:11:48 +00:00
Merge branch 'tutorial-scenery' into 2210-pre2
This commit is contained in:
commit
8cea047097
6 changed files with 366 additions and 1 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
|
||||
{
|
||||
color = 10; // Green
|
||||
|
|
|
@ -224,6 +224,8 @@ actionpointer_t actionpointers[] =
|
|||
{{A_SetObjectFlags2}, "A_SETOBJECTFLAGS2"},
|
||||
{{A_RandomState}, "A_RANDOMSTATE"},
|
||||
{{A_RandomStateRange}, "A_RANDOMSTATERANGE"},
|
||||
{{A_StateRangeByAngle}, "A_STATERANGEBYANGLE"},
|
||||
{{A_StateRangeByParameter}, "A_STATERANGEBYPARAMETER"},
|
||||
{{A_DualAction}, "A_DUALACTION"},
|
||||
{{A_RemoteAction}, "A_REMOTEACTION"},
|
||||
{{A_ToggleFlameJet}, "A_TOGGLEFLAMEJET"},
|
||||
|
@ -1751,6 +1753,56 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
// The 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
|
||||
"S_GFZFLOWERA",
|
||||
"S_GFZFLOWERB",
|
||||
|
@ -3763,6 +3815,12 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
// The letter
|
||||
"MT_LETTER",
|
||||
|
||||
// Tutorial Scenery
|
||||
"MT_TUTORIALPLANT",
|
||||
"MT_TUTORIALLEAF",
|
||||
"MT_TUTORIALFLOWER",
|
||||
"MT_TUTORIALFLOWERF",
|
||||
|
||||
// Greenflower Scenery
|
||||
"MT_GFZFLOWER1",
|
||||
"MT_GFZFLOWER2",
|
||||
|
|
162
src/info.c
162
src/info.c
|
@ -203,6 +203,10 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
// The letter
|
||||
"LETR",
|
||||
|
||||
// Tutorial Scenery
|
||||
"TUPL",
|
||||
"TUPF",
|
||||
|
||||
// Greenflower Scenery
|
||||
"FWR1",
|
||||
"FWR2", // GFZ Sunflower
|
||||
|
@ -2117,6 +2121,56 @@ state_t states[NUMSTATES] =
|
|||
|
||||
{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
|
||||
{SPR_FWR1, FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL}, // S_GFZFLOWERA
|
||||
{SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL}, // S_GFZFLOWERB
|
||||
|
@ -9979,6 +10033,114 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
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
|
||||
800, // doomednum
|
||||
S_GFZFLOWERA, // spawnstate
|
||||
|
|
64
src/info.h
64
src/info.h
|
@ -177,6 +177,8 @@ enum actionnum
|
|||
A_SETOBJECTFLAGS2,
|
||||
A_RANDOMSTATE,
|
||||
A_RANDOMSTATERANGE,
|
||||
A_STATERANGEBYANGLE,
|
||||
A_STATERANGEBYPARAMETER,
|
||||
A_DUALACTION,
|
||||
A_REMOTEACTION,
|
||||
A_TOGGLEFLAMEJET,
|
||||
|
@ -443,6 +445,8 @@ void A_SetObjectFlags();
|
|||
void A_SetObjectFlags2();
|
||||
void A_RandomState();
|
||||
void A_RandomStateRange();
|
||||
void A_StateRangeByAngle();
|
||||
void A_StateRangeByParameter();
|
||||
void A_DualAction();
|
||||
void A_RemoteAction();
|
||||
void A_ToggleFlameJet();
|
||||
|
@ -737,6 +741,10 @@ typedef enum sprite
|
|||
// The letter
|
||||
SPR_LETR,
|
||||
|
||||
// Tutorial scenery
|
||||
SPR_TUPL,
|
||||
SPR_TUPF,
|
||||
|
||||
// Greenflower Scenery
|
||||
SPR_FWR1,
|
||||
SPR_FWR2, // GFZ Sunflower
|
||||
|
@ -2551,6 +2559,56 @@ typedef enum state
|
|||
// The 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
|
||||
S_GFZFLOWERA,
|
||||
S_GFZFLOWERB,
|
||||
|
@ -4583,6 +4641,12 @@ typedef enum mobj_type
|
|||
// The letter
|
||||
MT_LETTER,
|
||||
|
||||
// Tutorial Scenery
|
||||
MT_TUTORIALPLANT,
|
||||
MT_TUTORIALLEAF,
|
||||
MT_TUTORIALFLOWER,
|
||||
MT_TUTORIALFLOWERF,
|
||||
|
||||
// Greenflower Scenery
|
||||
MT_GFZFLOWER1,
|
||||
MT_GFZFLOWER2,
|
||||
|
|
|
@ -200,6 +200,8 @@ void A_SetObjectFlags(mobj_t *actor);
|
|||
void A_SetObjectFlags2(mobj_t *actor);
|
||||
void A_RandomState(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_RemoteAction(mobj_t *actor);
|
||||
void A_ToggleFlameJet(mobj_t *actor);
|
||||
|
@ -8292,7 +8294,7 @@ void A_Boss3ShockThink(mobj_t *actor)
|
|||
snew->angle = (actor->angle + snext->angle) >> 1;
|
||||
P_SetTarget(&snew->target, actor->target);
|
||||
snew->fuse = actor->fuse;
|
||||
|
||||
|
||||
P_SetScale(snew, actor->scale);
|
||||
snew->destscale = actor->destscale;
|
||||
snew->scalespeed = actor->scalespeed;
|
||||
|
@ -9290,6 +9292,49 @@ void A_RandomStateRange(mobj_t *actor)
|
|||
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
|
||||
//
|
||||
// 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
|
@ -7978,6 +7978,9 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
|||
P_SetScale(mobj, mobj->target->scale);
|
||||
}
|
||||
break;
|
||||
case MT_TUTORIALFLOWER:
|
||||
mobj->angle += FixedAngle(3*FRACUNIT);
|
||||
break;
|
||||
case MT_VWREF:
|
||||
case MT_VWREB:
|
||||
{
|
||||
|
@ -12827,6 +12830,25 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
|
|||
P_SpawnMobjFromMobj(mobj, -FRACUNIT, 0, 0, MT_THZTREEBRANCH)->angle = mobjangle + ANGLE_270;
|
||||
}
|
||||
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_CEZPOLE2:
|
||||
{ // Spawn the banner
|
||||
|
|
Loading…
Reference in a new issue