mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-22 02:00:11 +00:00
Merge branch 'banana-vfx' into 'master'
Banana visuals Closes #308 See merge request KartKrew/Kart!772
This commit is contained in:
commit
996e3c97ef
14 changed files with 263 additions and 146 deletions
|
|
@ -386,7 +386,6 @@ consvar_t cv_gardentop = CVAR_INIT ("gardentop", "On", CV_NETVAR, CV_OnOff,
|
|||
consvar_t cv_dualsneaker = CVAR_INIT ("dualsneaker", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
consvar_t cv_triplesneaker = CVAR_INIT ("triplesneaker", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
consvar_t cv_triplebanana = CVAR_INIT ("triplebanana", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
consvar_t cv_decabanana = CVAR_INIT ("decabanana", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
consvar_t cv_tripleorbinaut = CVAR_INIT ("tripleorbinaut", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
consvar_t cv_quadorbinaut = CVAR_INIT ("quadorbinaut", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
consvar_t cv_dualjawz = CVAR_INIT ("dualjawz", "On", CV_NETVAR, CV_OnOff, NULL);
|
||||
|
|
|
|||
|
|
@ -100,7 +100,6 @@ extern consvar_t
|
|||
cv_dualsneaker,
|
||||
cv_triplesneaker,
|
||||
cv_triplebanana,
|
||||
cv_decabanana,
|
||||
cv_tripleorbinaut,
|
||||
cv_quadorbinaut,
|
||||
cv_dualjawz;
|
||||
|
|
|
|||
|
|
@ -168,7 +168,6 @@ typedef enum
|
|||
KRITEM_DUALSNEAKER = NUMKARTITEMS,
|
||||
KRITEM_TRIPLESNEAKER,
|
||||
KRITEM_TRIPLEBANANA,
|
||||
KRITEM_TENFOLDBANANA,
|
||||
KRITEM_TRIPLEORBINAUT,
|
||||
KRITEM_QUADORBINAUT,
|
||||
KRITEM_DUALJAWZ,
|
||||
|
|
|
|||
|
|
@ -3488,6 +3488,11 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_BANANA",
|
||||
"S_BANANA_DEAD",
|
||||
|
||||
"S_BANANA_SPARK",
|
||||
"S_BANANA_SPARK2",
|
||||
"S_BANANA_SPARK3",
|
||||
"S_BANANA_SPARK4",
|
||||
|
||||
//{ Orbinaut
|
||||
"S_ORBINAUT1",
|
||||
"S_ORBINAUT2",
|
||||
|
|
@ -5311,6 +5316,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
|
||||
"MT_BANANA", // Banana Stuff
|
||||
"MT_BANANA_SHIELD",
|
||||
"MT_BANANA_SPARK",
|
||||
|
||||
"MT_ORBINAUT", // Orbinaut stuff
|
||||
"MT_ORBINAUT_SHIELD",
|
||||
|
|
@ -5628,7 +5634,7 @@ const char *const MOBJFLAG_LIST[] = {
|
|||
"SLIDEME",
|
||||
"NOCLIP",
|
||||
"FLOAT",
|
||||
"BOXICON",
|
||||
"SLOPE",
|
||||
"MISSILE",
|
||||
"SPRING",
|
||||
"MONITOR",
|
||||
|
|
@ -6763,7 +6769,6 @@ struct int_const_s const INT_CONST[] = {
|
|||
{"KRITEM_DUALSNEAKER",KRITEM_DUALSNEAKER}, // Additional roulette IDs (not usable for much in Lua besides K_GetItemPatch)
|
||||
{"KRITEM_TRIPLESNEAKER",KRITEM_TRIPLESNEAKER},
|
||||
{"KRITEM_TRIPLEBANANA",KRITEM_TRIPLEBANANA},
|
||||
{"KRITEM_TENFOLDBANANA",KRITEM_TENFOLDBANANA},
|
||||
{"KRITEM_TRIPLEORBINAUT",KRITEM_TRIPLEORBINAUT},
|
||||
{"KRITEM_QUADORBINAUT",KRITEM_QUADORBINAUT},
|
||||
{"KRITEM_DUALJAWZ",KRITEM_DUALJAWZ},
|
||||
|
|
|
|||
101
src/info.c
101
src/info.c
|
|
@ -557,6 +557,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"RSHE", // Rocket sneaker
|
||||
"FITM", // Eggman Monitor
|
||||
"BANA", // Banana Peel
|
||||
"BAND", // Banana Peel death particles
|
||||
"ORBN", // Orbinaut
|
||||
"JAWZ", // Jawz
|
||||
"SSMN", // SS Mine
|
||||
|
|
@ -4077,7 +4078,12 @@ state_t states[NUMSTATES] =
|
|||
{SPR_FITM, 24|FF_FULLBRIGHT, 175, {NULL}, 0, 0, S_NULL}, // S_EGGMANITEM_DEAD
|
||||
|
||||
{SPR_BANA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BANANA
|
||||
{SPR_BANA, 0, 175, {NULL}, 0, 0, S_NULL}, // S_BANANA_DEAD
|
||||
{SPR_BANA, 1, 175, {NULL}, 0, 0, S_NULL}, // S_BANANA_DEAD
|
||||
|
||||
{SPR_BAND, 0, -1, {NULL}, 0, 0, S_BANANA_SPARK2}, // S_BANANA_SPARK
|
||||
{SPR_BAND, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BANANA_SPARK3}, // S_BANANA_SPARK2
|
||||
{SPR_BAND, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_BANANA_SPARK4}, // S_BANANA_SPARK3
|
||||
{SPR_BAND, 3|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BANANA_SPARK4
|
||||
|
||||
{SPR_ORBN, 0, 1, {NULL}, 0, 0, S_ORBINAUT2}, // S_ORBINAUT1
|
||||
{SPR_ORBN, 1, 1, {NULL}, 0, 0, S_ORBINAUT3}, // S_ORBINAUT2
|
||||
|
|
@ -5289,7 +5295,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
1000, // mass
|
||||
MT_THOK, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SOLID|MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
(statenum_t)MT_THOK // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -5316,7 +5322,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
1000, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SOLID|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -9986,7 +9992,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10013,7 +10019,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10040,7 +10046,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10067,7 +10073,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10094,7 +10100,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10121,7 +10127,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10148,7 +10154,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10175,7 +10181,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10202,7 +10208,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10229,7 +10235,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10256,7 +10262,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10283,7 +10289,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10310,7 +10316,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10337,7 +10343,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10364,7 +10370,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10391,7 +10397,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10418,7 +10424,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10445,7 +10451,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -10472,7 +10478,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23090,7 +23096,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_peel, // activesound
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23117,7 +23123,34 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BANANA_SPARK
|
||||
-1, // doomednum
|
||||
S_BANANA_SPARK, // 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_BANANA_SPARK2,// deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
4*FRACUNIT, // radius
|
||||
8*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_DONTENCOREMAP|MF_NOCLIPTHING|MF_NOSQUISH, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23144,7 +23177,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_s3k96, // activesound
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23171,7 +23204,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23198,7 +23231,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_s3kc0s, // activesound
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23225,7 +23258,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23279,7 +23312,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_s3k5c, // activesound
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23306,7 +23339,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23414,7 +23447,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
0, // mass
|
||||
0, // damage
|
||||
sfx_s3k5c, // activesound
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SHOOTABLE|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23441,7 +23474,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_s3k96, // activesound
|
||||
MF_SPECIAL|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SPECIAL|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -23468,7 +23501,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SPECIAL|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_SPECIAL|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
@ -24089,7 +24122,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
1, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN, // flags
|
||||
MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP|MF_APPLYTERRAIN|MF_SLOPE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -1103,6 +1103,7 @@ typedef enum sprite
|
|||
SPR_RSHE, // Rocket sneaker
|
||||
SPR_FITM, // Eggman Monitor
|
||||
SPR_BANA, // Banana Peel
|
||||
SPR_BAND, // Banana Peel death particles
|
||||
SPR_ORBN, // Orbinaut
|
||||
SPR_JAWZ, // Jawz
|
||||
SPR_SSMN, // SS Mine
|
||||
|
|
@ -4500,6 +4501,11 @@ typedef enum state
|
|||
S_BANANA,
|
||||
S_BANANA_DEAD,
|
||||
|
||||
S_BANANA_SPARK,
|
||||
S_BANANA_SPARK2,
|
||||
S_BANANA_SPARK3,
|
||||
S_BANANA_SPARK4,
|
||||
|
||||
//{ Orbinaut
|
||||
S_ORBINAUT1,
|
||||
S_ORBINAUT2,
|
||||
|
|
@ -6359,6 +6365,7 @@ typedef enum mobj_type
|
|||
|
||||
MT_BANANA, // Banana Stuff
|
||||
MT_BANANA_SHIELD,
|
||||
MT_BANANA_SPARK,
|
||||
|
||||
MT_ORBINAUT, // Orbinaut stuff
|
||||
MT_ORBINAUT_SHIELD,
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2)
|
|||
S_StartSound(t2, t2->info->deathsound);
|
||||
P_KillMobj(t2, t1, t1, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(t2, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(t2, 24*FRACUNIT, false);
|
||||
P_InstaThrust(t2, bounceangle, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(t2->x/2 + t1->x/2, t2->y/2 + t1->y/2, t2->z/2 + t1->z/2, MT_ITEMCLASH);
|
||||
|
|
@ -122,7 +122,7 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2)
|
|||
S_StartSound(t1, t1->info->deathsound);
|
||||
P_KillMobj(t1, t2, t2, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(t1, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(t1, 24*FRACUNIT, false);
|
||||
P_InstaThrust(t1, bounceangle, 16*FRACUNIT);
|
||||
}
|
||||
|
||||
|
|
@ -351,7 +351,7 @@ boolean K_MineCollide(mobj_t *t1, mobj_t *t2)
|
|||
S_StartSound(t2, t2->info->deathsound);
|
||||
P_KillMobj(t2, t1, t1, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(t2, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(t2, 24*FRACUNIT, false);
|
||||
P_InstaThrust(t2, bounceangle, 16*FRACUNIT);
|
||||
}
|
||||
else if (t2->flags & MF_SHOOTABLE)
|
||||
|
|
@ -414,7 +414,7 @@ boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2)
|
|||
S_StartSound(t2, t2->info->deathsound);
|
||||
P_KillMobj(t2, t1, t1, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(t2, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(t2, 24*FRACUNIT, false);
|
||||
P_InstaThrust(t2, bounceangle, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(t2->x/2 + t1->x/2, t2->y/2 + t1->y/2, t2->z/2 + t1->z/2, MT_ITEMCLASH);
|
||||
|
|
|
|||
|
|
@ -660,7 +660,6 @@ const char *K_GetItemPatch(UINT8 item, boolean tiny)
|
|||
return (tiny ? "K_ISINV1" : "K_ITINV1");
|
||||
case KITEM_BANANA:
|
||||
case KRITEM_TRIPLEBANANA:
|
||||
case KRITEM_TENFOLDBANANA:
|
||||
return (tiny ? "K_ISBANA" : "K_ITBANA");
|
||||
case KITEM_EGGMAN:
|
||||
return (tiny ? "K_ISEGGM" : "K_ITEGGM");
|
||||
|
|
@ -4541,7 +4540,6 @@ static void K_drawDistributionDebugger(void)
|
|||
kp_sneaker[1],
|
||||
kp_sneaker[1],
|
||||
kp_banana[1],
|
||||
kp_banana[1],
|
||||
kp_orbinaut[4],
|
||||
kp_orbinaut[4],
|
||||
kp_jawz[1]
|
||||
|
|
|
|||
36
src/k_kart.c
36
src/k_kart.c
|
|
@ -305,7 +305,6 @@ void K_RegisterKartStuff(void)
|
|||
CV_RegisterVar(&cv_dualsneaker);
|
||||
CV_RegisterVar(&cv_triplesneaker);
|
||||
CV_RegisterVar(&cv_triplebanana);
|
||||
CV_RegisterVar(&cv_decabanana);
|
||||
CV_RegisterVar(&cv_tripleorbinaut);
|
||||
CV_RegisterVar(&cv_quadorbinaut);
|
||||
CV_RegisterVar(&cv_dualjawz);
|
||||
|
|
@ -409,7 +408,6 @@ consvar_t *KartItemCVars[NUMKARTRESULTS-1] =
|
|||
&cv_dualsneaker,
|
||||
&cv_triplesneaker,
|
||||
&cv_triplebanana,
|
||||
&cv_decabanana,
|
||||
&cv_tripleorbinaut,
|
||||
&cv_quadorbinaut,
|
||||
&cv_dualjawz
|
||||
|
|
@ -428,7 +426,7 @@ static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][8] =
|
|||
{ 1, 2, 0, 0, 0, 0, 0, 0 }, // Eggman Monitor
|
||||
{ 5, 5, 2, 2, 0, 0, 0, 0 }, // Orbinaut
|
||||
{ 0, 4, 2, 1, 0, 0, 0, 0 }, // Jawz
|
||||
{ 0, 3, 3, 1, 0, 0, 0, 0 }, // Mine
|
||||
{ 0, 3, 3, 2, 0, 0, 0, 0 }, // Mine
|
||||
{ 3, 0, 0, 0, 0, 0, 0, 0 }, // Land Mine
|
||||
{ 0, 0, 2, 2, 0, 0, 0, 0 }, // Ballhog
|
||||
{ 0, 0, 0, 0, 0, 2, 4, 0 }, // Self-Propelled Bomb
|
||||
|
|
@ -446,7 +444,6 @@ static UINT8 K_KartItemOddsRace[NUMKARTRESULTS-1][8] =
|
|||
{ 0, 0, 2, 2, 2, 0, 0, 0 }, // Sneaker x2
|
||||
{ 0, 0, 0, 0, 4, 4, 4, 0 }, // Sneaker x3
|
||||
{ 0, 1, 1, 0, 0, 0, 0, 0 }, // Banana x3
|
||||
{ 0, 0, 0, 1, 0, 0, 0, 0 }, // Banana x10
|
||||
{ 0, 0, 1, 0, 0, 0, 0, 0 }, // Orbinaut x3
|
||||
{ 0, 0, 0, 2, 0, 0, 0, 0 }, // Orbinaut x4
|
||||
{ 0, 0, 1, 2, 1, 0, 0, 0 } // Jawz x2
|
||||
|
|
@ -480,7 +477,6 @@ static UINT8 K_KartItemOddsBattle[NUMKARTRESULTS][2] =
|
|||
{ 0, 0 }, // Sneaker x2
|
||||
{ 0, 1 }, // Sneaker x3
|
||||
{ 0, 0 }, // Banana x3
|
||||
{ 1, 1 }, // Banana x10
|
||||
{ 2, 0 }, // Orbinaut x3
|
||||
{ 1, 1 }, // Orbinaut x4
|
||||
{ 5, 1 } // Jawz x2
|
||||
|
|
@ -516,7 +512,6 @@ static UINT8 K_KartItemOddsSpecial[NUMKARTRESULTS-1][4] =
|
|||
{ 0, 1, 1, 0 }, // Sneaker x2
|
||||
{ 0, 0, 1, 1 }, // Sneaker x3
|
||||
{ 0, 0, 0, 0 }, // Banana x3
|
||||
{ 0, 0, 0, 0 }, // Banana x10
|
||||
{ 0, 1, 1, 0 }, // Orbinaut x3
|
||||
{ 0, 0, 1, 1 }, // Orbinaut x4
|
||||
{ 0, 0, 1, 1 } // Jawz x2
|
||||
|
|
@ -577,7 +572,6 @@ SINT8 K_ItemResultToType(SINT8 getitem)
|
|||
return KITEM_SNEAKER;
|
||||
|
||||
case KRITEM_TRIPLEBANANA:
|
||||
case KRITEM_TENFOLDBANANA:
|
||||
return KITEM_BANANA;
|
||||
|
||||
case KRITEM_TRIPLEORBINAUT:
|
||||
|
|
@ -615,9 +609,6 @@ UINT8 K_ItemResultToAmount(SINT8 getitem)
|
|||
case KITEM_BALLHOG: // Not a special result, but has a special amount
|
||||
return 5;
|
||||
|
||||
case KRITEM_TENFOLDBANANA:
|
||||
return 10;
|
||||
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -891,7 +882,6 @@ INT32 K_KartGetItemOdds(
|
|||
break;
|
||||
|
||||
case KRITEM_TRIPLEBANANA:
|
||||
case KRITEM_TENFOLDBANANA:
|
||||
powerItem = true;
|
||||
notNearEnd = true;
|
||||
break;
|
||||
|
|
@ -6133,6 +6123,7 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing,
|
|||
{
|
||||
// Shoot forward
|
||||
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, mapthing);
|
||||
mo->angle = player->mo->angle;
|
||||
|
||||
// These are really weird so let's make it a very specific case to make SURE it works...
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
|
|
@ -6147,7 +6138,6 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing,
|
|||
|
||||
S_StartSound(player->mo, mo->info->seesound);
|
||||
|
||||
if (mo)
|
||||
{
|
||||
angle_t fa = player->mo->angle>>ANGLETOFINESHIFT;
|
||||
fixed_t HEIGHT = ((20 + (dir*10)) * FRACUNIT) + (FixedDiv(player->mo->momz, mapobjectscale)*P_MobjFlip(player->mo)); // Also intentionally not player scale
|
||||
|
|
@ -6155,14 +6145,20 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing,
|
|||
P_SetObjectMomZ(mo, HEIGHT, false);
|
||||
mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), PROJSPEED*dir);
|
||||
mo->momy = player->mo->momy + FixedMul(FINESINE(fa), PROJSPEED*dir);
|
||||
}
|
||||
|
||||
mo->extravalue2 = dir;
|
||||
mo->extravalue2 = dir;
|
||||
|
||||
if (mo->eflags & MFE_UNDERWATER)
|
||||
mo->momz = (117 * mo->momz) / 200;
|
||||
if (mo->eflags & MFE_UNDERWATER)
|
||||
mo->momz = (117 * mo->momz) / 200;
|
||||
|
||||
P_SetScale(mo, finalscale);
|
||||
mo->destscale = finalscale;
|
||||
P_SetScale(mo, finalscale);
|
||||
mo->destscale = finalscale;
|
||||
|
||||
if (mapthing == MT_BANANA)
|
||||
{
|
||||
mo->angle = FixedAngle(P_RandomRange(PR_DECORATION, -180, 180) << FRACBITS);
|
||||
mo->rollangle = FixedAngle(P_RandomRange(PR_DECORATION, -180, 180) << FRACBITS);
|
||||
}
|
||||
|
||||
// this is the small graphic effect that plops in you when you throw an item:
|
||||
|
|
@ -6247,6 +6243,8 @@ mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing,
|
|||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
mo->eflags |= MFE_VERTICALFLIP;
|
||||
|
||||
mo->angle = newangle;
|
||||
|
||||
if (mapthing == MT_SSMINE)
|
||||
mo->extravalue1 = 49; // Pads the start-up length from 21 frames to a full 2 seconds
|
||||
else if (mapthing == MT_BUBBLESHIELDTRAP)
|
||||
|
|
@ -6662,7 +6660,7 @@ killnext:
|
|||
S_StartSound(banana, banana->info->deathsound);
|
||||
P_KillMobj(banana, inflictor, source, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(banana, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(banana, 24*FRACUNIT, false);
|
||||
if (inflictor)
|
||||
P_InstaThrust(banana, R_PointToAngle2(inflictor->x, inflictor->y, banana->x, banana->y)+ANGLE_90, 16*FRACUNIT);
|
||||
}
|
||||
|
|
@ -7063,7 +7061,7 @@ void K_DropRocketSneaker(player_t *player)
|
|||
flingangle = ANG60;
|
||||
|
||||
S_StartSound(shoe, shoe->info->deathsound);
|
||||
P_SetObjectMomZ(shoe, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(shoe, 24*FRACUNIT, false);
|
||||
P_InstaThrust(shoe, R_PointToAngle2(shoe->target->x, shoe->target->y, shoe->x, shoe->y)+flingangle, 16*FRACUNIT);
|
||||
shoe->momx += shoe->target->momx;
|
||||
shoe->momy += shoe->target->momy;
|
||||
|
|
|
|||
|
|
@ -1071,7 +1071,6 @@ menuitem_t OPTIONS_GameplayItems[] =
|
|||
|
||||
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas", NULL, {.routine = M_HandleItemToggles}, KITEM_BANANA, 0},
|
||||
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas x3", NULL, {.routine = M_HandleItemToggles}, KRITEM_TRIPLEBANANA, 0},
|
||||
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas x10", NULL, {.routine = M_HandleItemToggles}, KRITEM_TENFOLDBANANA, 0},
|
||||
{IT_KEYHANDLER | IT_NOTHING, NULL, "Proximity Mines", NULL, {.routine = M_HandleItemToggles}, KITEM_MINE, 0},
|
||||
|
||||
{IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts", NULL, {.routine = M_HandleItemToggles}, KITEM_ORBINAUT, 0},
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ boolean Obj_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2)
|
|||
S_StartSound(t2, t2->info->deathsound);
|
||||
P_KillMobj(t2, t1, t1, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(t2, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(t2, 24*FRACUNIT, false);
|
||||
P_InstaThrust(t2, bounceangle, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(t2->x/2 + t1->x/2, t2->y/2 + t1->y/2, t2->z/2 + t1->z/2, MT_ITEMCLASH);
|
||||
|
|
@ -254,7 +254,7 @@ boolean Obj_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2)
|
|||
S_StartSound(t1, t1->info->deathsound);
|
||||
P_KillMobj(t1, t2, t2, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(t1, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(t1, 24*FRACUNIT, false);
|
||||
P_InstaThrust(t1, bounceangle, 16*FRACUNIT);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1585,6 +1585,32 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
target->fuse = 1;
|
||||
break;
|
||||
|
||||
case MT_BANANA:
|
||||
case MT_BANANA_SHIELD:
|
||||
{
|
||||
const UINT8 numParticles = 8;
|
||||
const angle_t diff = ANGLE_MAX / numParticles;
|
||||
UINT8 i;
|
||||
|
||||
for (i = 0; i < numParticles; i++)
|
||||
{
|
||||
mobj_t *spark = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_BANANA_SPARK);
|
||||
spark->angle = (diff * i) - (diff / 2);
|
||||
|
||||
if (inflictor != NULL && P_MobjWasRemoved(inflictor) == false)
|
||||
{
|
||||
spark->angle += K_MomentumAngle(inflictor);
|
||||
spark->momx += inflictor->momx / 2;
|
||||
spark->momy += inflictor->momy / 2;
|
||||
spark->momz += inflictor->momz / 2;
|
||||
}
|
||||
|
||||
P_SetObjectMomZ(spark, (12 + P_RandomRange(PR_DECORATION, -4, 4)) * FRACUNIT, true);
|
||||
P_Thrust(spark, spark->angle, (12 + P_RandomRange(PR_DECORATION, -4, 4)) * spark->scale);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
206
src/p_mobj.c
206
src/p_mobj.c
|
|
@ -1158,66 +1158,68 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
gravityadd = -gravityadd;
|
||||
}
|
||||
}
|
||||
else //Otherwise, sort through the other exceptions.
|
||||
|
||||
// Sort through the other exceptions.
|
||||
switch (mo->type)
|
||||
{
|
||||
switch (mo->type)
|
||||
{
|
||||
case MT_FLINGRING:
|
||||
case MT_FLINGCOIN:
|
||||
case MT_FLINGBLUESPHERE:
|
||||
case MT_FLINGNIGHTSCHIP:
|
||||
case MT_BOUNCERING:
|
||||
case MT_RAILRING:
|
||||
case MT_INFINITYRING:
|
||||
case MT_AUTOMATICRING:
|
||||
case MT_EXPLOSIONRING:
|
||||
case MT_SCATTERRING:
|
||||
case MT_GRENADERING:
|
||||
case MT_BOUNCEPICKUP:
|
||||
case MT_RAILPICKUP:
|
||||
case MT_AUTOPICKUP:
|
||||
case MT_EXPLODEPICKUP:
|
||||
case MT_SCATTERPICKUP:
|
||||
case MT_GRENADEPICKUP:
|
||||
case MT_REDFLAG:
|
||||
case MT_BLUEFLAG:
|
||||
if (mo->target)
|
||||
case MT_FLINGRING:
|
||||
case MT_FLINGCOIN:
|
||||
case MT_FLINGBLUESPHERE:
|
||||
case MT_FLINGNIGHTSCHIP:
|
||||
case MT_BOUNCERING:
|
||||
case MT_RAILRING:
|
||||
case MT_INFINITYRING:
|
||||
case MT_AUTOMATICRING:
|
||||
case MT_EXPLOSIONRING:
|
||||
case MT_SCATTERRING:
|
||||
case MT_GRENADERING:
|
||||
case MT_BOUNCEPICKUP:
|
||||
case MT_RAILPICKUP:
|
||||
case MT_AUTOPICKUP:
|
||||
case MT_EXPLODEPICKUP:
|
||||
case MT_SCATTERPICKUP:
|
||||
case MT_GRENADEPICKUP:
|
||||
case MT_REDFLAG:
|
||||
case MT_BLUEFLAG:
|
||||
if (mo->target)
|
||||
{
|
||||
// Flung items copy the gravity of their tosser.
|
||||
if ((mo->target->eflags & MFE_VERTICALFLIP) && !(mo->eflags & MFE_VERTICALFLIP))
|
||||
{
|
||||
// Flung items copy the gravity of their tosser.
|
||||
if ((mo->target->eflags & MFE_VERTICALFLIP) && !(mo->eflags & MFE_VERTICALFLIP))
|
||||
{
|
||||
gravityadd = -gravityadd;
|
||||
mo->eflags |= MFE_VERTICALFLIP;
|
||||
}
|
||||
gravityadd = -gravityadd;
|
||||
mo->eflags |= MFE_VERTICALFLIP;
|
||||
}
|
||||
break;
|
||||
case MT_WATERDROP:
|
||||
case MT_BATTLEBUMPER:
|
||||
gravityadd /= 2;
|
||||
break;
|
||||
case MT_BANANA:
|
||||
case MT_EGGMANITEM:
|
||||
case MT_SSMINE:
|
||||
case MT_LANDMINE:
|
||||
case MT_DROPTARGET:
|
||||
case MT_SINK:
|
||||
case MT_EMERALD:
|
||||
}
|
||||
break;
|
||||
case MT_WATERDROP:
|
||||
case MT_BATTLEBUMPER:
|
||||
gravityadd /= 2;
|
||||
break;
|
||||
case MT_BANANA:
|
||||
case MT_EGGMANITEM:
|
||||
case MT_SSMINE:
|
||||
case MT_LANDMINE:
|
||||
case MT_DROPTARGET:
|
||||
case MT_SINK:
|
||||
case MT_EMERALD:
|
||||
if (mo->health > 0)
|
||||
{
|
||||
if (mo->extravalue2 > 0)
|
||||
{
|
||||
gravityadd *= mo->extravalue2;
|
||||
}
|
||||
|
||||
gravityadd = (5*gravityadd)/2;
|
||||
break;
|
||||
case MT_KARMAFIREWORK:
|
||||
gravityadd /= 3;
|
||||
break;
|
||||
case MT_ITEM_DEBRIS:
|
||||
gravityadd *= 6;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MT_KARMAFIREWORK:
|
||||
gravityadd /= 3;
|
||||
break;
|
||||
case MT_ITEM_DEBRIS:
|
||||
gravityadd *= 6;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1261,6 +1263,11 @@ void P_CheckGravity(mobj_t *mo, boolean affect)
|
|||
//
|
||||
void P_SetPitchRollFromSlope(mobj_t *mo, pslope_t *slope)
|
||||
{
|
||||
if (!(mo->flags & MF_SLOPE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (slope)
|
||||
{
|
||||
fixed_t tempz = slope->normal.z;
|
||||
|
|
@ -1764,7 +1771,7 @@ void P_XYMovement(mobj_t *mo)
|
|||
S_StartSound(mo, mo->info->deathsound);
|
||||
P_KillMobj(mo, NULL, NULL, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(mo, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(mo, 24*FRACUNIT, false);
|
||||
P_InstaThrust(mo, R_PointToAngle2(mo->x, mo->y, mo->x + xmove, mo->y + ymove)+ANGLE_90, 16*FRACUNIT);
|
||||
}
|
||||
break;
|
||||
|
|
@ -6486,8 +6493,26 @@ static boolean P_MobjDeadThink(mobj_t *mobj)
|
|||
P_SetObjectMomZ(mobj, -2*FRACUNIT/3, true);
|
||||
}
|
||||
break;
|
||||
case MT_ORBINAUT:
|
||||
case MT_BANANA:
|
||||
{
|
||||
angle_t spin = FixedMul(FixedDiv(abs(mobj->momz), 8 * mobj->scale), ANGLE_67h);
|
||||
mobj->angle -= spin;
|
||||
mobj->rollangle += spin;
|
||||
|
||||
if (P_IsObjectOnGround(mobj) && mobj->momz * P_MobjFlip(mobj) <= 0)
|
||||
{
|
||||
P_RemoveMobj(mobj);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MT_BANANA_SPARK:
|
||||
{
|
||||
angle_t spin = FixedMul(FixedDiv(abs(mobj->momz), 8 * mobj->scale), ANGLE_22h);
|
||||
mobj->rollangle += spin;
|
||||
}
|
||||
break;
|
||||
case MT_ORBINAUT:
|
||||
case MT_EGGMANITEM:
|
||||
case MT_LANDMINE:
|
||||
//case MT_DROPTARGET:
|
||||
|
|
@ -6927,16 +6952,61 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
}
|
||||
}
|
||||
|
||||
if (P_IsObjectOnGround(mobj) && mobj->health > 1)
|
||||
if (P_IsObjectOnGround(mobj))
|
||||
{
|
||||
S_StartSound(mobj, mobj->info->activesound);
|
||||
mobj->momx = mobj->momy = 0;
|
||||
mobj->health = 1;
|
||||
//mobj->rollangle = 0;
|
||||
|
||||
if (mobj->health > 1)
|
||||
{
|
||||
S_StartSound(mobj, mobj->info->activesound);
|
||||
mobj->momx = mobj->momy = 0;
|
||||
mobj->health = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// tilt n tumble
|
||||
angle_t spin = FixedMul(FixedDiv(abs(mobj->momz), 8 * mobj->scale), ANGLE_67h);
|
||||
mobj->angle += spin;
|
||||
mobj->rollangle -= spin;
|
||||
}
|
||||
|
||||
if (mobj->threshold > 0)
|
||||
mobj->threshold--;
|
||||
break;
|
||||
case MT_BANANA_SPARK:
|
||||
{
|
||||
if (leveltime & 1)
|
||||
{
|
||||
mobj->spritexscale = mobj->spriteyscale = FRACUNIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((leveltime / 2) & 1)
|
||||
{
|
||||
mobj->spriteyscale = 3*FRACUNIT/2;
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj->spritexscale = 3*FRACUNIT/2;
|
||||
}
|
||||
}
|
||||
|
||||
if (P_IsObjectOnGround(mobj) == true && mobj->momz * P_MobjFlip(mobj) <= 0)
|
||||
{
|
||||
P_SetObjectMomZ(mobj, 8*FRACUNIT, false);
|
||||
|
||||
if (mobj->health > 0)
|
||||
{
|
||||
mobj->tics = 1;
|
||||
mobj->destscale = 0;
|
||||
mobj->spritexscale = mobj->spriteyscale = FRACUNIT;
|
||||
mobj->health = 0;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case MT_SPB:
|
||||
{
|
||||
Obj_SPBThink(mobj);
|
||||
|
|
@ -9473,7 +9543,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
S_StartSound(mobj, mobj->info->deathsound);
|
||||
P_KillMobj(mobj, NULL, NULL, DMG_NORMAL);
|
||||
|
||||
P_SetObjectMomZ(mobj, 8*FRACUNIT, false);
|
||||
P_SetObjectMomZ(mobj, 24*FRACUNIT, false);
|
||||
P_InstaThrust(mobj, R_PointToAngle2(0, 0, mobj->momx, mobj->momy) + ANGLE_90, 16*FRACUNIT);
|
||||
}
|
||||
|
||||
|
|
@ -9700,24 +9770,6 @@ void P_PushableThinker(mobj_t *mobj)
|
|||
// Quick, optimized function for scenery
|
||||
void P_SceneryThinker(mobj_t *mobj)
|
||||
{
|
||||
if (mobj->flags & MF_BOXICON)
|
||||
{
|
||||
if (!(mobj->eflags & MFE_VERTICALFLIP))
|
||||
{
|
||||
if (mobj->z < mobj->floorz + FixedMul(mobj->info->damage, mobj->scale))
|
||||
mobj->momz = FixedMul(mobj->info->speed, mobj->scale);
|
||||
else
|
||||
mobj->momz = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mobj->z + FixedMul(mobj->info->height, mobj->scale) > mobj->ceilingz - FixedMul(mobj->info->damage, mobj->scale))
|
||||
mobj->momz = -FixedMul(mobj->info->speed, mobj->scale);
|
||||
else
|
||||
mobj->momz = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// momentum movement
|
||||
if (mobj->momx || mobj->momy)
|
||||
{
|
||||
|
|
@ -13681,6 +13733,8 @@ mobj_t *P_SpawnMobjFromMobj(mobj_t *mobj, fixed_t xofs, fixed_t yofs, fixed_t zo
|
|||
if (!newmobj)
|
||||
return NULL;
|
||||
|
||||
newmobj->hitlag = mobj->hitlag;
|
||||
|
||||
newmobj->destscale = P_ScaleFromMap(mobj->destscale, newmobj->destscale);
|
||||
P_SetScale(newmobj, P_ScaleFromMap(mobj->scale, newmobj->scale));
|
||||
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@ typedef enum
|
|||
MF_NOCLIP = 1<<12,
|
||||
// Allow moves to any height, no gravity. For active floaters.
|
||||
MF_FLOAT = 1<<13,
|
||||
// Monitor powerup icon. These rise a bit.
|
||||
MF_BOXICON = 1<<14,
|
||||
// Change pitch/roll when touching slopes.
|
||||
MF_SLOPE = 1<<14,
|
||||
// Don't hit same species, explode on block.
|
||||
// Player missiles as well as fireballs of various kinds.
|
||||
MF_MISSILE = 1<<15,
|
||||
|
|
@ -163,7 +163,7 @@ typedef enum
|
|||
MF_NOSQUISH = 1<<30,
|
||||
// Disable hitlag for this object
|
||||
MF_NOHITLAGFORME = (INT32)(1U<<31),
|
||||
// no more free slots, next up I suppose we can get rid of shit like MF_BOXICON?
|
||||
// no more free slots, gotta get rid of more crusty base SRB2 flags
|
||||
} mobjflag_t;
|
||||
|
||||
typedef enum
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue