mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-03-22 10:51:54 +00:00
Merge master
This commit is contained in:
commit
0af023d8ca
9 changed files with 386 additions and 163 deletions
|
@ -6306,15 +6306,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_GREENITEM6",
|
||||
"S_GREENITEM7",
|
||||
"S_GREENITEM8",
|
||||
"S_GREENTRAIL1",
|
||||
"S_GREENTRAIL2",
|
||||
"S_GREENTRAIL3",
|
||||
"S_GREENTRAIL4",
|
||||
"S_GREENTRAIL5",
|
||||
"S_GREENTRAIL6",
|
||||
"S_GREENTRAIL7",
|
||||
"S_GREENTRAIL8",
|
||||
"S_GREENTRAIL9",
|
||||
"S_DEADGREEN",
|
||||
//}
|
||||
//{ Red Shell
|
||||
|
@ -6342,20 +6333,19 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_REDITEM6",
|
||||
"S_REDITEM7",
|
||||
"S_REDITEM8",
|
||||
"S_REDITEMCHASE",
|
||||
"S_REDITEMTRAIL",
|
||||
"S_REDTRAIL1",
|
||||
"S_REDTRAIL2",
|
||||
"S_REDTRAIL3",
|
||||
"S_REDTRAIL4",
|
||||
"S_REDTRAIL5",
|
||||
"S_REDTRAIL6",
|
||||
"S_REDTRAIL7",
|
||||
"S_REDTRAIL8",
|
||||
"S_REDTRAIL9",
|
||||
"S_DEADRED",
|
||||
//}
|
||||
|
||||
"S_FIRETRAIL1",
|
||||
"S_FIRETRAIL2",
|
||||
"S_FIRETRAIL3",
|
||||
"S_FIRETRAIL4",
|
||||
"S_FIRETRAIL5",
|
||||
"S_FIRETRAIL6",
|
||||
"S_FIRETRAIL7",
|
||||
"S_FIRETRAIL8",
|
||||
"S_FIRETRAIL9",
|
||||
|
||||
// Bob-omb
|
||||
"S_BOMBSHIELD",
|
||||
"S_BOMBITEM",
|
||||
|
@ -6400,6 +6390,26 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_SHADOW",
|
||||
"S_WHITESHADOW",
|
||||
|
||||
"S_BUMP1",
|
||||
"S_BUMP2",
|
||||
"S_BUMP3",
|
||||
|
||||
"S_FLINGENERGY1",
|
||||
"S_FLINGENERGY2",
|
||||
"S_FLINGENERGY3",
|
||||
|
||||
"S_CLASH1",
|
||||
"S_CLASH2",
|
||||
"S_CLASH3",
|
||||
"S_CLASH4",
|
||||
"S_CLASH5",
|
||||
"S_CLASH6",
|
||||
|
||||
"S_FIREDITEM1",
|
||||
"S_FIREDITEM2",
|
||||
"S_FIREDITEM3",
|
||||
"S_FIREDITEM4",
|
||||
|
||||
#ifdef SEENAMES
|
||||
"S_NAMECHECK",
|
||||
#endif
|
||||
|
@ -6936,7 +6946,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_TRIPLEGREENSHIELD3",
|
||||
"MT_GREENSHIELD",
|
||||
"MT_GREENITEM",
|
||||
"MT_GREENTRAIL",
|
||||
"MT_FIRETRAIL",
|
||||
|
||||
"MT_TRIPLEREDSHIELD1", // Red shell stuff
|
||||
"MT_TRIPLEREDSHIELD2",
|
||||
|
@ -6944,7 +6954,6 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_REDSHIELD",
|
||||
"MT_REDITEM",
|
||||
"MT_REDITEMDUD",
|
||||
"MT_REDTRAIL",
|
||||
|
||||
"MT_BOMBSHIELD", // Bob-omb stuff
|
||||
"MT_BOMBITEM",
|
||||
|
@ -6971,6 +6980,12 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_WAYPOINT",
|
||||
"MT_SHADOW",
|
||||
|
||||
"MT_BUMP",
|
||||
|
||||
"MT_ITEMCLASH",
|
||||
|
||||
"MT_FIREDITEM",
|
||||
|
||||
#ifdef SEENAMES
|
||||
"MT_NAMECHECK",
|
||||
#endif
|
||||
|
|
258
src/info.c
258
src/info.c
|
@ -56,9 +56,9 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
|
||||
//SRB2kart Sprites
|
||||
"SPRG","BSPR","RNDM","RPOP","KFRE","DRIF","DSMO","FITM","DFAK","BANA",
|
||||
"DBAN","GSHE","GSTR","DGSH","RSHE","RSTR","DRSH","BOMB","BLIG","LIGH",
|
||||
"SINK","SITR","KBLN","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS",
|
||||
"SPRS","BUZB","CHOM","SACO","CRAB", "SHAD"
|
||||
"DBAN","GSHE","DGSH","RSHE","DRSH","BOMB","BLIG","LIGH","SINK","SITR",
|
||||
"KBLN","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB",
|
||||
"CHOM","SACO","CRAB","SHAD","BUMP","FLEN","CLAS","PSHW"
|
||||
};
|
||||
|
||||
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
|
||||
|
@ -2128,13 +2128,13 @@ state_t states[NUMSTATES] =
|
|||
{SPR_FFWR, 3, 3, {NULL}, 0, 0, S_FIREFLOWER1}, // S_FIREFLOWER4
|
||||
|
||||
// Thrown Mario Fireball
|
||||
{SPR_FBLL, FF_FULLBRIGHT, 3, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_FIREBALL2}, // S_FIREBALL1
|
||||
{SPR_FBLL, FF_FULLBRIGHT|1, 3, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_FIREBALL3}, // S_FIREBALL2
|
||||
{SPR_FBLL, FF_FULLBRIGHT|2, 3, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_FIREBALL4}, // S_FIREBALL3
|
||||
{SPR_FBLL, FF_FULLBRIGHT|3, 3, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_FIREBALL5}, // S_FIREBALL4
|
||||
{SPR_FBLL, FF_FULLBRIGHT|4, 3, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_FIREBALL6}, // S_FIREBALL5
|
||||
{SPR_FBLL, FF_FULLBRIGHT|5, 3, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_FIREBALL7}, // S_FIREBALL6
|
||||
{SPR_FBLL, FF_FULLBRIGHT|6, 3, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_FIREBALL1}, // S_FIREBALL7
|
||||
{SPR_FBLL, FF_FULLBRIGHT, 3, {NULL}, MT_FIRETRAIL, 0, S_FIREBALL2}, // S_FIREBALL1
|
||||
{SPR_FBLL, FF_FULLBRIGHT|1, 3, {NULL}, MT_FIRETRAIL, 0, S_FIREBALL3}, // S_FIREBALL2
|
||||
{SPR_FBLL, FF_FULLBRIGHT|2, 3, {NULL}, MT_FIRETRAIL, 0, S_FIREBALL4}, // S_FIREBALL3
|
||||
{SPR_FBLL, FF_FULLBRIGHT|3, 3, {NULL}, MT_FIRETRAIL, 0, S_FIREBALL5}, // S_FIREBALL4
|
||||
{SPR_FBLL, FF_FULLBRIGHT|4, 3, {NULL}, MT_FIRETRAIL, 0, S_FIREBALL6}, // S_FIREBALL5
|
||||
{SPR_FBLL, FF_FULLBRIGHT|5, 3, {NULL}, MT_FIRETRAIL, 0, S_FIREBALL7}, // S_FIREBALL6
|
||||
{SPR_FBLL, FF_FULLBRIGHT|6, 3, {NULL}, MT_FIRETRAIL, 0, S_FIREBALL1}, // S_FIREBALL7
|
||||
{SPR_FBLL, FF_FULLBRIGHT|7, 3, {NULL}, 0, 0, S_FIREBALLEXP2}, // S_FIREBALLEXP1
|
||||
{SPR_FBLL, FF_FULLBRIGHT|8, 3, {NULL}, 0, 0, S_FIREBALLEXP3}, // S_FIREBALLEXP2
|
||||
{SPR_FBLL, FF_FULLBRIGHT|9, 3, {NULL}, 0, 0, S_FIREBALLEXP4}, // S_FIREBALLEXP3
|
||||
|
@ -2641,23 +2641,14 @@ state_t states[NUMSTATES] =
|
|||
{SPR_GSHE, 5, 1, {NULL}, 0, 0, S_GREENSHIELD7}, // S_GREENSHIELD6
|
||||
{SPR_GSHE, 6, 1, {NULL}, 0, 0, S_GREENSHIELD8}, // S_GREENSHIELD7
|
||||
{SPR_GSHE, 7, 1, {NULL}, 0, 0, S_GREENSHIELD1}, // S_GREENSHIELD8
|
||||
{SPR_GSHE, 0, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM2}, // S_GREENITEM1
|
||||
{SPR_GSHE, 1, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM3}, // S_GREENITEM2
|
||||
{SPR_GSHE, 2, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM4}, // S_GREENITEM3
|
||||
{SPR_GSHE, 3, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM5}, // S_GREENITEM4
|
||||
{SPR_GSHE, 4, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM6}, // S_GREENITEM5
|
||||
{SPR_GSHE, 5, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM7}, // S_GREENITEM6
|
||||
{SPR_GSHE, 6, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM8}, // S_GREENITEM7
|
||||
{SPR_GSHE, 7, 1, {A_SmokeTrailer}, MT_GREENTRAIL, 0, S_GREENITEM1}, // S_GREENITEM8
|
||||
{SPR_GSTR, 0, 1, {NULL}, 0, 0, S_GREENTRAIL2}, // S_GREENTRAIL1
|
||||
{SPR_GSTR, 1, 1, {NULL}, 0, 0, S_GREENTRAIL3}, // S_GREENTRAIL2
|
||||
{SPR_GSTR, 2, 1, {NULL}, 0, 0, S_GREENTRAIL4}, // S_GREENTRAIL3
|
||||
{SPR_GSTR, 3, 1, {NULL}, 0, 0, S_GREENTRAIL5}, // S_GREENTRAIL4
|
||||
{SPR_GSTR, 4, 1, {NULL}, 0, 0, S_GREENTRAIL6}, // S_GREENTRAIL5
|
||||
{SPR_GSTR, 5, 1, {NULL}, 0, 0, S_GREENTRAIL7}, // S_GREENTRAIL6
|
||||
{SPR_GSTR, 6, 1, {NULL}, 0, 0, S_GREENTRAIL8}, // S_GREENTRAIL7
|
||||
{SPR_GSTR, 7, 1, {NULL}, 0, 0, S_GREENTRAIL9}, // S_GREENTRAIL8
|
||||
{SPR_GSTR, 8, 1, {NULL}, 0, 0, S_NULL}, // S_GREENTRAIL9
|
||||
{SPR_GSHE, 0, 1, {NULL}, 0, 0, S_GREENITEM2}, // S_GREENITEM1
|
||||
{SPR_GSHE, 1, 1, {NULL}, 0, 0, S_GREENITEM3}, // S_GREENITEM2
|
||||
{SPR_GSHE, 2, 1, {NULL}, 0, 0, S_GREENITEM4}, // S_GREENITEM3
|
||||
{SPR_GSHE, 3, 1, {NULL}, 0, 0, S_GREENITEM5}, // S_GREENITEM4
|
||||
{SPR_GSHE, 4, 1, {NULL}, 0, 0, S_GREENITEM6}, // S_GREENITEM5
|
||||
{SPR_GSHE, 5, 1, {NULL}, 0, 0, S_GREENITEM7}, // S_GREENITEM6
|
||||
{SPR_GSHE, 6, 1, {NULL}, 0, 0, S_GREENITEM8}, // S_GREENITEM7
|
||||
{SPR_GSHE, 7, 1, {NULL}, 0, 0, S_GREENITEM1}, // S_GREENITEM8
|
||||
{SPR_DGSH, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADGREEN
|
||||
|
||||
{SPR_RSHE, 0, 1, {NULL}, 0, 0, S_TRIPLEREDSHIELD2}, // S_TRIPLEREDSHIELD1
|
||||
|
@ -2676,27 +2667,26 @@ state_t states[NUMSTATES] =
|
|||
{SPR_RSHE, 5, 1, {NULL}, 0, 0, S_REDSHIELD7}, // S_REDSHIELD6
|
||||
{SPR_RSHE, 6, 1, {NULL}, 0, 0, S_REDSHIELD8}, // S_REDSHIELD7
|
||||
{SPR_RSHE, 7, 1, {NULL}, 0, 0, S_REDSHIELD1}, // S_REDSHIELD8
|
||||
{SPR_RSHE, 0, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM2}, // S_REDITEM1
|
||||
{SPR_RSHE, 1, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM3}, // S_REDITEM2
|
||||
{SPR_RSHE, 2, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM4}, // S_REDITEM3
|
||||
{SPR_RSHE, 3, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM5}, // S_REDITEM4
|
||||
{SPR_RSHE, 4, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM6}, // S_REDITEM5
|
||||
{SPR_RSHE, 5, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM7}, // S_REDITEM6
|
||||
{SPR_RSHE, 6, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM8}, // S_REDITEM7
|
||||
{SPR_RSHE, 7, 1, {A_DualAction}, S_REDITEMCHASE, S_REDITEMTRAIL, S_REDITEM1}, // S_REDITEM8
|
||||
{SPR_RSHE, 0, 1, {A_RedShellChase}, 0, 0, S_REDITEM2}, // S_REDITEMCHASE
|
||||
{SPR_RSHE, 1, 1, {A_SmokeTrailer}, MT_REDTRAIL, 0, S_REDITEM3}, // S_REDITEMTRAIL
|
||||
{SPR_RSTR, 0, 1, {NULL}, 0, 0, S_REDTRAIL2}, // S_REDTRAIL1
|
||||
{SPR_RSTR, 1, 1, {NULL}, 0, 0, S_REDTRAIL3}, // S_REDTRAIL2
|
||||
{SPR_RSTR, 2, 1, {NULL}, 0, 0, S_REDTRAIL4}, // S_REDTRAIL3
|
||||
{SPR_RSTR, 3, 1, {NULL}, 0, 0, S_REDTRAIL5}, // S_REDTRAIL4
|
||||
{SPR_RSTR, 4, 1, {NULL}, 0, 0, S_REDTRAIL6}, // S_REDTRAIL5
|
||||
{SPR_RSTR, 5, 1, {NULL}, 0, 0, S_REDTRAIL7}, // S_REDTRAIL6
|
||||
{SPR_RSTR, 6, 1, {NULL}, 0, 0, S_REDTRAIL8}, // S_REDTRAIL7
|
||||
{SPR_RSTR, 7, 1, {NULL}, 0, 0, S_REDTRAIL9}, // S_REDTRAIL8
|
||||
{SPR_RSTR, 8, 1, {NULL}, 0, 0, S_NULL}, // S_REDTRAIL9
|
||||
{SPR_RSHE, 0, 1, {A_RedShellChase}, 0, 0, S_REDITEM2}, // S_REDITEM1
|
||||
{SPR_RSHE, 1, 1, {A_RedShellChase}, 0, 0, S_REDITEM3}, // S_REDITEM2
|
||||
{SPR_RSHE, 2, 1, {A_RedShellChase}, 0, 0, S_REDITEM4}, // S_REDITEM3
|
||||
{SPR_RSHE, 3, 1, {A_RedShellChase}, 0, 0, S_REDITEM5}, // S_REDITEM4
|
||||
{SPR_RSHE, 4, 1, {A_RedShellChase}, 0, 0, S_REDITEM6}, // S_REDITEM5
|
||||
{SPR_RSHE, 5, 1, {A_RedShellChase}, 0, 0, S_REDITEM7}, // S_REDITEM6
|
||||
{SPR_RSHE, 6, 1, {A_RedShellChase}, 0, 0, S_REDITEM8}, // S_REDITEM7
|
||||
{SPR_RSHE, 7, 1, {A_RedShellChase}, 0, 0, S_REDITEM1}, // S_REDITEM8
|
||||
{SPR_DRSH, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADRED
|
||||
|
||||
{SPR_FBLL, 13, 3, {NULL}, 0, 0, S_FIRETRAIL2}, // S_FIRETRAIL1
|
||||
{SPR_FBLL, 14, 3, {NULL}, 0, 0, S_FIRETRAIL3}, // S_FIRETRAIL2
|
||||
{SPR_FBLL, 15, 3, {NULL}, 0, 0, S_FIRETRAIL4}, // S_FIRETRAIL3
|
||||
{SPR_FBLL, 16, 3, {NULL}, 0, 0, S_FIRETRAIL5}, // S_FIRETRAIL4
|
||||
{SPR_FBLL, 17, 3, {NULL}, 0, 0, S_FIRETRAIL6}, // S_FIRETRAIL5
|
||||
{SPR_FBLL, 18, 3, {NULL}, 0, 0, S_FIRETRAIL7}, // S_FIRETRAIL6
|
||||
{SPR_FBLL, 19, 3, {NULL}, 0, 0, S_FIRETRAIL8}, // S_FIRETRAIL7
|
||||
{SPR_FBLL, 20, 3, {NULL}, 0, 0, S_FIRETRAIL9}, // S_FIRETRAIL8
|
||||
{SPR_FBLL, 21, 3, {NULL}, 0, 0, S_NULL}, // S_FIRETRAIL9
|
||||
|
||||
{SPR_BOMB, 0, 1, {NULL}, 0, 0, S_BOMBSHIELD}, // S_BOMBSHIELD
|
||||
{SPR_BOMB, 0, 1, {A_GrenadeRing}, 0, 0, S_BOMBITEM}, // S_BOMBITEM
|
||||
{SPR_BOMB, 0, 1, {NULL}, 0, 0, S_BOMBAIR}, // S_BOMBAIR
|
||||
|
@ -2719,8 +2709,8 @@ state_t states[NUMSTATES] =
|
|||
{SPR_SITR, 2, 3, {NULL}, 0, 0, S_NULL}, // S_SINKTRAIL3
|
||||
|
||||
{SPR_KBLN, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BATTLEBALLOON1}, // S_BATTLEBALLOON1
|
||||
{SPR_KBLN, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BATTLEBALLOON2}, // S_BATTLEBALLOON2
|
||||
{SPR_KBLN, 2|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_BATTLEBALLOON3}, // S_BATTLEBALLOON3
|
||||
{SPR_KBLN, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_BATTLEBALLOON2}, // S_BATTLEBALLOON2
|
||||
{SPR_KBLN, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_BATTLEBALLOON3}, // S_BATTLEBALLOON3
|
||||
|
||||
{SPR_LAKI, 0, 64, {NULL}, 1, 0, S_LAKITU2}, // S_LAKITU1
|
||||
{SPR_LAKI, 1, 35, {NULL}, 0, 0, S_NULL}, // S_LAKITU2
|
||||
|
@ -2855,6 +2845,26 @@ state_t states[NUMSTATES] =
|
|||
{SPR_SHAD, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL}, // S_SHADOW
|
||||
{SPR_SHAD, FF_FULLBRIGHT|FF_TRANS50|1, -1, {NULL}, 0, 0, S_NULL}, // S_WHITESHADOW
|
||||
|
||||
{SPR_BUMP, 0, 3, {NULL}, 0, 0, S_BUMP2}, // S_BUMP1
|
||||
{SPR_BUMP, 1, 3, {NULL}, 0, 0, S_BUMP3}, // S_BUMP2
|
||||
{SPR_BUMP, 2, 3, {NULL}, 0, 0, S_NULL}, // S_BUMP3
|
||||
|
||||
{SPR_FLEN, FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FLINGENERGY2}, // S_FLINGENERGY1,
|
||||
{SPR_FLEN, FF_FULLBRIGHT|1, 3, {NULL}, 0, 0, S_FLINGENERGY3}, // S_FLINGENERGY2,
|
||||
{SPR_FLEN, FF_FULLBRIGHT|2, 3, {NULL}, 0, 0, S_NULL}, // S_FLINGENERGY3,
|
||||
|
||||
{SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30, 2, {A_PlayActiveSound}, 0, 0, S_CLASH2}, // S_CLASH1
|
||||
{SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|1, 2, {NULL}, 0, 0, S_CLASH3}, // S_CLASH2
|
||||
{SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|2, 2, {NULL}, 0, 0, S_CLASH4}, // S_CLASH3
|
||||
{SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|3, 2, {NULL}, 0, 0, S_CLASH5}, // S_CLASH4
|
||||
{SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|4, 2, {NULL}, 0, 0, S_CLASH6}, // S_CLASH5
|
||||
{SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|5, 2, {NULL}, 0, 0, S_NULL}, // S_CLASH6
|
||||
|
||||
{SPR_PSHW, 0, 3, {NULL}, 0, 0, S_FIREDITEM2}, // S_FIREDITEM1
|
||||
{SPR_PSHW, 1, 3, {NULL}, 0, 0, S_FIREDITEM3}, // S_FIREDITEM2
|
||||
{SPR_PSHW, 2, 3, {NULL}, 0, 0, S_FIREDITEM4}, // S_FIREDITEM3
|
||||
{SPR_PSHW, 3, 3, {NULL}, 0, 0, S_NULL}, // S_FIREDITEM4
|
||||
|
||||
#ifdef SEENAMES
|
||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
|
||||
#endif
|
||||
|
@ -14386,7 +14396,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_FAKEITEM1, // spawnstate
|
||||
2, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_tossed, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
|
@ -14521,7 +14531,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_BANANAITEM, // spawnstate
|
||||
2, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_tossed, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
|
@ -14656,7 +14666,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_GREENITEM1, // spawnstate
|
||||
7, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_tossed, // seesound
|
||||
8, // reactiontime
|
||||
sfx_tink, // attacksound
|
||||
S_NULL, // painstate
|
||||
|
@ -14678,9 +14688,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_GREENTRAIL
|
||||
{ // MT_FIRETRAIL
|
||||
-1, // doomednum
|
||||
S_GREENTRAIL1, // spawnstate
|
||||
S_FIRETRAIL1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
|
@ -14818,7 +14828,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_REDITEM1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_tossed, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
|
@ -14845,7 +14855,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_REDITEM1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_tossed, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
|
@ -14867,33 +14877,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_REDTRAIL
|
||||
-1, // doomednum
|
||||
S_REDTRAIL1, // 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
|
||||
8, // speed
|
||||
20*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BOMBSHIELD
|
||||
-1, // doomednum
|
||||
S_BOMBSHIELD, // spawnstate
|
||||
|
@ -14926,7 +14909,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_BOMBAIR, // spawnstate
|
||||
105, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_tossed, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
|
@ -16649,6 +16632,113 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUMP
|
||||
-1, // doomednum
|
||||
S_BUMP1, // 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
|
||||
64*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_SCENERY|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FLINGENERGY
|
||||
-1, // doomednum
|
||||
S_FLINGENERGY1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
MT_FLINGENERGY, // 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
|
||||
60*FRACUNIT, // speed
|
||||
32*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_ITEMCLASH
|
||||
-1, // doomednum
|
||||
S_CLASH1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // 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
|
||||
60*FRACUNIT, // speed
|
||||
32*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_clash, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FIREDITEM
|
||||
-1, // doomednum
|
||||
S_FIREDITEM1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // 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
|
||||
60*FRACUNIT, // speed
|
||||
32*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
// ============================================================================================================================//
|
||||
|
||||
#ifdef SEENAMES
|
||||
|
@ -16674,7 +16764,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY|MF_NOSECTOR, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
|
68
src/info.h
68
src/info.h
|
@ -590,10 +590,8 @@ typedef enum sprite
|
|||
SPR_BANA, // Banana Peel
|
||||
SPR_DBAN, // Dead Banana Peel
|
||||
SPR_GSHE, // Green Shell
|
||||
SPR_GSTR, // Green Shell Trail
|
||||
SPR_DGSH, // Dead Green Shell
|
||||
SPR_RSHE, // Red Shell
|
||||
SPR_RSTR, // Red Shell Trail
|
||||
SPR_DRSH, // Dead Red Shell
|
||||
SPR_BOMB, // Bob-omb
|
||||
SPR_BLIG, // Blue Lightning
|
||||
|
@ -618,6 +616,11 @@ typedef enum sprite
|
|||
SPR_CRAB, // Crystal Abyss mobs
|
||||
SPR_SHAD, // TD shadows
|
||||
|
||||
SPR_BUMP, // Player/shell bump
|
||||
SPR_FLEN, // Shell hit graphics stuff
|
||||
SPR_CLAS, // items clash
|
||||
SPR_PSHW, // thrown indicator
|
||||
|
||||
SPR_FIRSTFREESLOT,
|
||||
SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1,
|
||||
NUMSPRITES
|
||||
|
@ -3149,15 +3152,6 @@ typedef enum state
|
|||
S_GREENITEM6,
|
||||
S_GREENITEM7,
|
||||
S_GREENITEM8,
|
||||
S_GREENTRAIL1,
|
||||
S_GREENTRAIL2,
|
||||
S_GREENTRAIL3,
|
||||
S_GREENTRAIL4,
|
||||
S_GREENTRAIL5,
|
||||
S_GREENTRAIL6,
|
||||
S_GREENTRAIL7,
|
||||
S_GREENTRAIL8,
|
||||
S_GREENTRAIL9,
|
||||
S_DEADGREEN,
|
||||
//}
|
||||
//{ Red Shell
|
||||
|
@ -3185,20 +3179,19 @@ typedef enum state
|
|||
S_REDITEM6,
|
||||
S_REDITEM7,
|
||||
S_REDITEM8,
|
||||
S_REDITEMCHASE,
|
||||
S_REDITEMTRAIL,
|
||||
S_REDTRAIL1,
|
||||
S_REDTRAIL2,
|
||||
S_REDTRAIL3,
|
||||
S_REDTRAIL4,
|
||||
S_REDTRAIL5,
|
||||
S_REDTRAIL6,
|
||||
S_REDTRAIL7,
|
||||
S_REDTRAIL8,
|
||||
S_REDTRAIL9,
|
||||
S_DEADRED,
|
||||
//}
|
||||
|
||||
S_FIRETRAIL1,
|
||||
S_FIRETRAIL2,
|
||||
S_FIRETRAIL3,
|
||||
S_FIRETRAIL4,
|
||||
S_FIRETRAIL5,
|
||||
S_FIRETRAIL6,
|
||||
S_FIRETRAIL7,
|
||||
S_FIRETRAIL8,
|
||||
S_FIRETRAIL9,
|
||||
|
||||
// Bob-omb
|
||||
S_BOMBSHIELD,
|
||||
S_BOMBITEM,
|
||||
|
@ -3370,6 +3363,26 @@ typedef enum state
|
|||
S_SHADOW,
|
||||
S_WHITESHADOW,
|
||||
|
||||
S_BUMP1,
|
||||
S_BUMP2,
|
||||
S_BUMP3,
|
||||
|
||||
S_FLINGENERGY1,
|
||||
S_FLINGENERGY2,
|
||||
S_FLINGENERGY3,
|
||||
|
||||
S_CLASH1,
|
||||
S_CLASH2,
|
||||
S_CLASH3,
|
||||
S_CLASH4,
|
||||
S_CLASH5,
|
||||
S_CLASH6,
|
||||
|
||||
S_FIREDITEM1,
|
||||
S_FIREDITEM2,
|
||||
S_FIREDITEM3,
|
||||
S_FIREDITEM4,
|
||||
|
||||
#ifdef SEENAMES
|
||||
S_NAMECHECK,
|
||||
#endif
|
||||
|
@ -3923,7 +3936,7 @@ typedef enum mobj_type
|
|||
MT_TRIPLEGREENSHIELD3,
|
||||
MT_GREENSHIELD,
|
||||
MT_GREENITEM,
|
||||
MT_GREENTRAIL,
|
||||
MT_FIRETRAIL,
|
||||
|
||||
MT_TRIPLEREDSHIELD1, // Red shell stuff
|
||||
MT_TRIPLEREDSHIELD2,
|
||||
|
@ -3931,7 +3944,6 @@ typedef enum mobj_type
|
|||
MT_REDSHIELD,
|
||||
MT_REDITEM,
|
||||
MT_REDITEMDUD,
|
||||
MT_REDTRAIL,
|
||||
|
||||
MT_BOMBSHIELD, // Bob-omb stuff
|
||||
MT_BOMBITEM,
|
||||
|
@ -4013,6 +4025,14 @@ typedef enum mobj_type
|
|||
MT_MOSSYTREE,
|
||||
MT_SHADOW,
|
||||
|
||||
MT_BUMP,
|
||||
|
||||
MT_FLINGENERGY,
|
||||
|
||||
MT_ITEMCLASH,
|
||||
|
||||
MT_FIREDITEM,
|
||||
|
||||
#ifdef SEENAMES
|
||||
MT_NAMECHECK,
|
||||
#endif
|
||||
|
|
31
src/k_kart.c
31
src/k_kart.c
|
@ -1060,8 +1060,8 @@ boolean K_IsTouching(mobj_t *mobj1, mobj_t *mobj2)
|
|||
|
||||
void K_SwapMomentum(mobj_t *mobj1, mobj_t *mobj2, boolean bounce)
|
||||
{
|
||||
fixed_t newx;
|
||||
fixed_t newy;
|
||||
fixed_t newx, newy;
|
||||
mobj_t *fx;
|
||||
|
||||
if (mobj1 == NULL || mobj2 == NULL)
|
||||
return;
|
||||
|
@ -1076,6 +1076,14 @@ void K_SwapMomentum(mobj_t *mobj1, mobj_t *mobj2, boolean bounce)
|
|||
S_StartSound(mobj1, cv_collidesoundnum.value);
|
||||
//S_StartSound(mobj2, cv_collidesoundnum.value);
|
||||
}
|
||||
|
||||
fx = P_SpawnMobj((mobj1->x + mobj2->x)/2, (mobj1->y + mobj2->y)/2, (mobj1->z + mobj2->z)/2, MT_BUMP);
|
||||
if (mobj1->eflags & MFE_VERTICALFLIP)
|
||||
fx->eflags |= MFE_VERTICALFLIP;
|
||||
else
|
||||
fx->eflags &= ~MFE_VERTICALFLIP;
|
||||
fx->scale = mobj1->scale;
|
||||
|
||||
if (deltaV1 < (cv_collideminimum.value * FRACUNIT / 2))
|
||||
{
|
||||
fixed_t a = 0;
|
||||
|
@ -1769,6 +1777,12 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju
|
|||
|
||||
P_PlayRinglossSound(player->mo);
|
||||
|
||||
if (P_IsLocalPlayer(player))
|
||||
{
|
||||
quake.intensity = 64*FRACUNIT;
|
||||
quake.time = 5;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1896,6 +1910,13 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t angle
|
|||
th->momx = FixedMul(speed, FINECOSINE(an>>ANGLETOFINESHIFT));
|
||||
th->momy = FixedMul(speed, FINESINE(an>>ANGLETOFINESHIFT));
|
||||
|
||||
x = x + P_ReturnThrustX(source, an, source->radius + th->radius);
|
||||
x = y + P_ReturnThrustY(source, an, source->radius + th->radius);
|
||||
mobj_t *throwmo = P_SpawnMobj(x, y, z, MT_FIREDITEM);
|
||||
throwmo->movecount = 1;
|
||||
throwmo->movedir = source->angle - an;
|
||||
P_SetTarget(&throwmo->target, source);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -2094,6 +2115,8 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
|||
|
||||
P_SetTarget(&mo->target, player->mo);
|
||||
|
||||
S_StartSound(player->mo, mo->info->seesound);
|
||||
|
||||
if (mo)
|
||||
{
|
||||
angle_t fa = player->mo->angle>>ANGLETOFINESHIFT;
|
||||
|
@ -2114,6 +2137,10 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
|||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
mo->eflags |= MFE_VERTICALFLIP;
|
||||
}
|
||||
|
||||
mobj_t *throwmo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + 80*FRACUNIT, MT_FIREDITEM);
|
||||
P_SetTarget(&throwmo->target, player->mo);
|
||||
throwmo->movecount = 0; // above player
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -3176,7 +3176,14 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
K_SpinPlayer(player, source);
|
||||
damage = player->mo->health - 1;
|
||||
P_RingDamage(player, inflictor, source, damage);
|
||||
if (inflictor->type == MT_GREENITEM || inflictor->type == MT_REDITEM || inflictor->type == MT_REDITEMDUD)
|
||||
P_PlayerRingBurst(player, 5);
|
||||
player->mo->momx = player->mo->momy = 0;
|
||||
if (P_IsLocalPlayer(player))
|
||||
{
|
||||
quake.intensity = 32*FRACUNIT;
|
||||
quake.time = 5;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/* // SRB2kart - don't need these
|
||||
|
@ -3367,9 +3374,9 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings)
|
|||
if (!player)
|
||||
return;
|
||||
|
||||
// If no health, don't spawn ring!
|
||||
// Never have health in kart I think
|
||||
if (player->mo->health <= 1)
|
||||
num_rings = 0;
|
||||
num_rings = 5;
|
||||
|
||||
if (num_rings > 32 && !(player->pflags & PF_NIGHTSFALL))
|
||||
num_rings = 32;
|
||||
|
@ -3384,11 +3391,10 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings)
|
|||
// Spill the ammo
|
||||
P_PlayerWeaponAmmoBurst(player);
|
||||
|
||||
// There's no ring spilling in kart, so I'm hijacking this for the same thing as TD
|
||||
for (i = 0; i < num_rings; i++)
|
||||
{
|
||||
INT32 objType = mobjinfo[MT_RING].reactiontime;
|
||||
if (mariomode)
|
||||
objType = mobjinfo[MT_COIN].reactiontime;
|
||||
INT32 objType = mobjinfo[MT_FLINGENERGY].reactiontime;
|
||||
|
||||
z = player->mo->z;
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
|
@ -3429,17 +3435,17 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings)
|
|||
}
|
||||
else
|
||||
{
|
||||
momxy = 2*FRACUNIT;
|
||||
momxy = 28*FRACUNIT;
|
||||
momz = 3*FRACUNIT;
|
||||
}
|
||||
|
||||
ns = FixedMul(FixedMul(momxy, FRACUNIT + FixedDiv(player->losstime<<FRACBITS, 10*TICRATE<<FRACBITS)), mo->scale);
|
||||
ns = FixedMul(momxy, mo->scale);
|
||||
mo->momx = FixedMul(FINECOSINE(fa),ns);
|
||||
|
||||
if (!(twodlevel || (player->mo->flags2 & MF2_TWOD)))
|
||||
mo->momy = FixedMul(FINESINE(fa),ns);
|
||||
|
||||
ns = FixedMul(momz, FRACUNIT + FixedDiv(player->losstime<<FRACBITS, 10*TICRATE<<FRACBITS));
|
||||
ns = momz;
|
||||
P_SetObjectMomZ(mo, ns, false);
|
||||
|
||||
if (i & 1)
|
||||
|
|
15
src/p_map.c
15
src/p_map.c
|
@ -678,6 +678,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
// Player Damage
|
||||
P_DamageMobj(thing, tmthing, tmthing->target, 1);
|
||||
|
||||
if (tmthing->type == MT_GREENITEM || tmthing->type == MT_REDITEM || tmthing->type == MT_REDITEMDUD)
|
||||
S_StartSound(thing, sfx_shelit);
|
||||
|
||||
// This Item Damage
|
||||
if (tmthing->eflags & MFE_VERTICALFLIP)
|
||||
|
@ -711,6 +713,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
||||
|
||||
// This Item Damage
|
||||
if (tmthing->eflags & MFE_VERTICALFLIP)
|
||||
|
@ -741,6 +744,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
|
||||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
||||
}
|
||||
|
||||
// Other Item Damage
|
||||
|
@ -769,7 +774,6 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||
|
||||
|
||||
// Bomb death
|
||||
P_KillMobj(thing, tmthing, tmthing);
|
||||
}
|
||||
|
@ -895,6 +899,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
||||
|
||||
// This Item Damage
|
||||
if (tmthing->eflags & MFE_VERTICALFLIP)
|
||||
tmthing->z -= tmthing->height;
|
||||
|
@ -922,6 +928,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
|
||||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
||||
}
|
||||
// Other Item Damage
|
||||
if (thing->eflags & MFE_VERTICALFLIP)
|
||||
|
@ -987,6 +995,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||
|
||||
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
||||
|
||||
// This Item Damage
|
||||
if (tmthing->eflags & MFE_VERTICALFLIP)
|
||||
tmthing->z -= tmthing->height;
|
||||
|
@ -1091,6 +1101,9 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
// Player Damage
|
||||
P_DamageMobj(tmthing, thing, thing->target, 1);
|
||||
|
||||
if (thing->type == MT_GREENITEM || thing->type == MT_REDITEM || thing->type == MT_REDITEMDUD)
|
||||
S_StartSound(tmthing, sfx_shelit);
|
||||
|
||||
// Other Item Damage
|
||||
if (thing->eflags & MFE_VERTICALFLIP)
|
||||
thing->z -= thing->height;
|
||||
|
|
53
src/p_mobj.c
53
src/p_mobj.c
|
@ -1737,11 +1737,18 @@ void P_XYMovement(mobj_t *mo)
|
|||
//{ SRB2kart - Green Shell, Fireball
|
||||
if (mo->type == MT_GREENITEM)
|
||||
{
|
||||
mobj_t *fx;
|
||||
fx = P_SpawnMobj(mo->x, mo->y, mo->z, MT_BUMP);
|
||||
if (mo->eflags & MFE_VERTICALFLIP)
|
||||
fx->eflags |= MFE_VERTICALFLIP;
|
||||
else
|
||||
fx->eflags &= ~MFE_VERTICALFLIP;
|
||||
fx->scale = mo->scale;
|
||||
if (mo->health > 1)
|
||||
{
|
||||
S_StartSound(mo, mo->info->attacksound);
|
||||
mo->health--;
|
||||
mo->threshold = 0;
|
||||
S_StartSound(mo, mo->info->attacksound);
|
||||
mo->health--;
|
||||
mo->threshold = 0;
|
||||
}
|
||||
else if (mo->health == 1)
|
||||
{
|
||||
|
@ -6237,7 +6244,7 @@ void P_RunShadows(void)
|
|||
if (mobj->type != MT_SHADOW)
|
||||
continue;
|
||||
|
||||
if (mobj->target && (mobj->target->health || mobj->target->player)) // only players keep shadows after death, but only until their mobj is killed
|
||||
if (mobj->target)
|
||||
{
|
||||
if ((mobj->target->flags2 & MF2_DONTDRAW)
|
||||
|| (((mobj->target->eflags & MFE_VERTICALFLIP) && mobj->target->z+mobj->target->height > mobj->target->ceilingz)
|
||||
|
@ -6848,6 +6855,24 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
return;
|
||||
}
|
||||
break;
|
||||
case MT_FIREDITEM:
|
||||
{
|
||||
fixed_t x, y, z;
|
||||
if (mobj->movecount)
|
||||
{
|
||||
x = mobj->target->x + P_ReturnThrustX(mobj->target, mobj->target->angle + mobj->movedir, mobj->target->radius + mobj->radius);
|
||||
y = mobj->target->y + P_ReturnThrustY(mobj->target, mobj->target->angle + mobj->movedir, mobj->target->radius + mobj->radius);
|
||||
z = mobj->target->z + mobj->target->height/3;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = mobj->target->x;
|
||||
y = mobj->target->y;
|
||||
z = mobj->target->z + 80*FRACUNIT;
|
||||
}
|
||||
P_TeleportMove(mobj, x, y, z);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (mobj->fuse)
|
||||
{ // Scenery object fuse! Very basic!
|
||||
|
@ -7478,6 +7503,13 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
if (mobj->flags2 & MF2_NIGHTSPULL)
|
||||
P_NightsItemChase(mobj);
|
||||
break;
|
||||
case MT_SMALLMACE:
|
||||
case MT_BIGMACE:
|
||||
{
|
||||
mobj_t *ghostmo = P_SpawnGhostMobj(mobj);
|
||||
ghostmo->fuse = 4;
|
||||
}
|
||||
break;
|
||||
case MT_SHELL:
|
||||
if (mobj->threshold > TICRATE)
|
||||
mobj->threshold--;
|
||||
|
@ -7537,6 +7569,8 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
{
|
||||
fixed_t finalspeed = mobj->info->speed;
|
||||
|
||||
P_SpawnGhostMobj(mobj);
|
||||
|
||||
if (cv_kartcc.value == 50)
|
||||
{
|
||||
finalspeed = FixedMul(finalspeed, FRACUNIT-FRACUNIT/4);
|
||||
|
@ -7571,6 +7605,9 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
fixed_t topspeed = 64*FRACUNIT;
|
||||
fixed_t distbarrier = 512*FRACUNIT;
|
||||
fixed_t distaway;
|
||||
|
||||
P_SpawnGhostMobj(mobj);
|
||||
|
||||
if (mobj->threshold > 0)
|
||||
mobj->threshold--;
|
||||
if (leveltime % 7 == 0)
|
||||
|
@ -7604,6 +7641,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
break;
|
||||
}
|
||||
case MT_REDITEMDUD:
|
||||
P_SpawnGhostMobj(mobj);
|
||||
mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->x+mobj->momx, mobj->y+mobj->momy);
|
||||
P_InstaThrust(mobj, mobj->angle, mobj->info->speed);
|
||||
if (mobj->threshold > 0)
|
||||
|
@ -7613,6 +7651,8 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
break;
|
||||
case MT_BANANAITEM:
|
||||
case MT_FAKEITEM:
|
||||
if (mobj->momx || mobj->momy)
|
||||
P_SpawnGhostMobj(mobj);
|
||||
if (mobj->z <= mobj->floorz && mobj->health > 1)
|
||||
{
|
||||
S_StartSound(mobj, mobj->info->activesound);
|
||||
|
@ -7623,6 +7663,8 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
mobj->threshold--;
|
||||
break;
|
||||
case MT_FIREBALL:
|
||||
var1 = MT_FIRETRAIL;
|
||||
A_SmokeTrailer(mobj);
|
||||
if (mobj->threshold > 0)
|
||||
mobj->threshold--;
|
||||
break;
|
||||
|
@ -7636,6 +7678,8 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
mobj->threshold--;
|
||||
break;
|
||||
case MT_BOMBITEM:
|
||||
if (mobj->momx || mobj->momy)
|
||||
P_SpawnGhostMobj(mobj);
|
||||
if (mobj->z <= mobj->floorz)
|
||||
{
|
||||
if (mobj->health > mobj->info->spawnhealth-1)
|
||||
|
@ -8435,6 +8479,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
|||
switch (mobj->type)
|
||||
{
|
||||
case MT_PLAYER:
|
||||
case MT_BIGMACE: case MT_SMALLMACE:
|
||||
//case MT_RANDOMITEM:
|
||||
case MT_BANANAITEM: case MT_BANANASHIELD:
|
||||
case MT_TRIPLEBANANASHIELD1: case MT_TRIPLEBANANASHIELD2: case MT_TRIPLEBANANASHIELD3:
|
||||
|
|
39
src/sounds.c
39
src/sounds.c
|
@ -467,27 +467,27 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3kdbl", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
|
||||
// SRB2kart
|
||||
{"lkt1", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"lkt2", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"lkt3", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"lkt1", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"lkt2", true, 192, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"lkt3", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"kart1", false, 48, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"kart2", false, 48, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"kart3", false, 48, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mlap", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mush", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"star", true, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mega", true, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"bomb", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"bomb2", true, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"peel", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"slip", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"fake", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"grnshl", true, 64, 64, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"redshl", true, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"shbrk", true, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkdrft", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkslid", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mlap", true, 127, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mush", false, 90, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"star", false, 140, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mega", false, 140, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"bomb", false, 110, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"bomb2", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"peel", false, 100, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"slip", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"fake", false, 100, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"grnshl", false, 120, 64, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"redshl", false, 130, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"shbrk", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkdrft", false, 52, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkslid", false, 48, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitem", false, 80, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm1", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm2", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm3", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
|
@ -497,6 +497,9 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"mkitm7", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitm8", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"mkitmF", true, 72, 0, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"clash", false, 64, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"tossed", false,150, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
{"shelit", false, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
|
||||
// SRB2kart - Skin sounds
|
||||
{"kwin", false, 64, 0, -1, NULL, 0, SKSWIN, -1, LUMPERROR},
|
||||
|
|
|
@ -568,6 +568,10 @@ typedef enum
|
|||
sfx_mkitm7,
|
||||
sfx_mkitm8,
|
||||
sfx_mkitmF,
|
||||
sfx_clash,
|
||||
sfx_tossed,
|
||||
sfx_shelit,
|
||||
|
||||
sfx_kwin,
|
||||
sfx_klose,
|
||||
sfx_slow,
|
||||
|
|
Loading…
Reference in a new issue