From 4be15a90209c6ddfa891be287de5c52c3eaf3812 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Tue, 24 Oct 2017 00:42:06 -0400 Subject: [PATCH 01/17] Bumpy --- src/dehacked.c | 6 ++++++ src/info.c | 32 +++++++++++++++++++++++++++++++- src/info.h | 8 ++++++++ src/k_kart.c | 12 ++++++++++-- src/p_mobj.c | 13 ++++++++++--- 5 files changed, 65 insertions(+), 6 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index e488d3ee..998b299d 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6395,6 +6395,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_SHADOW", "S_WHITESHADOW", + "S_BUMP1", + "S_BUMP2", + "S_BUMP3", + #ifdef SEENAMES "S_NAMECHECK", #endif @@ -6958,6 +6962,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_WAYPOINT", "MT_SHADOW", + "MT_BUMP", + #ifdef SEENAMES "MT_NAMECHECK", #endif diff --git a/src/info.c b/src/info.c index 71711b68..2d558168 100644 --- a/src/info.c +++ b/src/info.c @@ -58,7 +58,7 @@ char sprnames[NUMSPRITES + 1][5] = "SPRG","BSPR","RNDM","RPOP","KFRE","DRIF","DSMO","FITM","DFAK","BANA", "DBAN","GSHE","GSTR","DGSH","RSHE","RSTR","DRSH","BOMB","BLIG","LIGH", "SINK","SITR","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS", - "BUZB","CHOM","SACO","CRAB", "SHAD" + "BUZB","CHOM","SACO","CRAB", "SHAD", "BUMP" }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) @@ -2851,6 +2851,10 @@ 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, 5, {NULL}, 0, 0, S_BUMP2}, // S_BUMP1 + {SPR_BUMP, 1, 5, {NULL}, 0, 0, S_BUMP3}, // S_BUMP2 + {SPR_BUMP, 2, 5, {NULL}, 0, 0, S_NULL}, // S_BUMP3 + #ifdef SEENAMES {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK #endif @@ -16510,6 +16514,32 @@ 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 + }, // ============================================================================================================================// #ifdef SEENAMES diff --git a/src/info.h b/src/info.h index c6c448f0..1e4bde5c 100644 --- a/src/info.h +++ b/src/info.h @@ -617,6 +617,8 @@ typedef enum sprite SPR_CRAB, // Crystal Abyss mobs SPR_SHAD, // TD shadows + SPR_BUMP, // Player/shell bump + SPR_FIRSTFREESLOT, SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1, NUMSPRITES @@ -3364,6 +3366,10 @@ typedef enum state S_SHADOW, S_WHITESHADOW, + S_BUMP1, + S_BUMP2, + S_BUMP3, + #ifdef SEENAMES S_NAMECHECK, #endif @@ -4001,6 +4007,8 @@ typedef enum mobj_type MT_MOSSYTREE, MT_SHADOW, + MT_BUMP, + #ifdef SEENAMES MT_NAMECHECK, #endif diff --git a/src/k_kart.c b/src/k_kart.c index 94cf0607..efc931ed 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1048,8 +1048,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; @@ -1064,6 +1064,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; diff --git a/src/p_mobj.c b/src/p_mobj.c index 52c52fbc..e27bb146 100644 --- a/src/p_mobj.c +++ b/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) { From 0206a42ce6284efe02d1b3714d7af768a53b48a8 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 13:15:20 +0100 Subject: [PATCH 02/17] Stars in your eyes when you get hit by shells --- src/info.c | 33 ++++++++++++++++++++++++++++++++- src/info.h | 7 +++++++ src/p_inter.c | 13 +++++++------ 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/src/info.c b/src/info.c index 2d558168..95306a5b 100644 --- a/src/info.c +++ b/src/info.c @@ -58,7 +58,7 @@ char sprnames[NUMSPRITES + 1][5] = "SPRG","BSPR","RNDM","RPOP","KFRE","DRIF","DSMO","FITM","DFAK","BANA", "DBAN","GSHE","GSTR","DGSH","RSHE","RSTR","DRSH","BOMB","BLIG","LIGH", "SINK","SITR","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS", - "BUZB","CHOM","SACO","CRAB", "SHAD", "BUMP" + "BUZB","CHOM","SACO","CRAB","SHAD","BUMP","FLEN" }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) @@ -2855,6 +2855,10 @@ state_t states[NUMSTATES] = {SPR_BUMP, 1, 5, {NULL}, 0, 0, S_BUMP3}, // S_BUMP2 {SPR_BUMP, 2, 5, {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, + #ifdef SEENAMES {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK #endif @@ -16540,6 +16544,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 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 + }, // ============================================================================================================================// #ifdef SEENAMES diff --git a/src/info.h b/src/info.h index 1e4bde5c..1f985531 100644 --- a/src/info.h +++ b/src/info.h @@ -618,6 +618,7 @@ typedef enum sprite SPR_SHAD, // TD shadows SPR_BUMP, // Player/shell bump + SPR_FLEN, // Shell hit graphics stuff SPR_FIRSTFREESLOT, SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1, @@ -3370,6 +3371,10 @@ typedef enum state S_BUMP2, S_BUMP3, + S_FLINGENERGY1, + S_FLINGENERGY2, + S_FLINGENERGY3, + #ifdef SEENAMES S_NAMECHECK, #endif @@ -4009,6 +4014,8 @@ typedef enum mobj_type MT_BUMP, + MT_FLINGENERGY, + #ifdef SEENAMES MT_NAMECHECK, #endif diff --git a/src/p_inter.c b/src/p_inter.c index 13546ad7..7867b162 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3128,6 +3128,8 @@ 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) + P_PlayerRingBurst(player, 5); player->mo->momx = player->mo->momy = 0; return true; } @@ -3319,9 +3321,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; @@ -3336,11 +3338,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) @@ -3381,7 +3382,7 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings) } else { - momxy = 2*FRACUNIT; + momxy = 28*FRACUNIT; momz = 3*FRACUNIT; } From 041d9c499959c2a28f5ef860e087324ad5056ee1 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 13:18:41 +0100 Subject: [PATCH 03/17] Faster bump sparks --- src/info.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/info.c b/src/info.c index 95306a5b..f0c047ba 100644 --- a/src/info.c +++ b/src/info.c @@ -2851,9 +2851,9 @@ 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, 5, {NULL}, 0, 0, S_BUMP2}, // S_BUMP1 - {SPR_BUMP, 1, 5, {NULL}, 0, 0, S_BUMP3}, // S_BUMP2 - {SPR_BUMP, 2, 5, {NULL}, 0, 0, S_NULL}, // S_BUMP3 + {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, From 35f9b544b1a17b263b57f83263ce458a93d221f7 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 13:38:42 +0100 Subject: [PATCH 04/17] Forgot about dud red shell --- src/p_inter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_inter.c b/src/p_inter.c index 7867b162..b0f772d9 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3128,7 +3128,7 @@ 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) + if (inflictor->type == MT_GREENITEM || inflictor->type == MT_REDITEM || inflictor->type == MT_REDITEMDUD) P_PlayerRingBurst(player, 5); player->mo->momx = player->mo->momy = 0; return true; From b87564f6eb0ab6502132b5532d54682d6c4df417 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 13:59:01 +0100 Subject: [PATCH 05/17] Item clash graphics --- src/info.c | 35 ++++++++++++++++++++++++++++++++++- src/info.h | 9 +++++++++ src/p_map.c | 6 +++++- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/info.c b/src/info.c index f0c047ba..7f5f69b6 100644 --- a/src/info.c +++ b/src/info.c @@ -58,7 +58,7 @@ char sprnames[NUMSPRITES + 1][5] = "SPRG","BSPR","RNDM","RPOP","KFRE","DRIF","DSMO","FITM","DFAK","BANA", "DBAN","GSHE","GSTR","DGSH","RSHE","RSTR","DRSH","BOMB","BLIG","LIGH", "SINK","SITR","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS", - "BUZB","CHOM","SACO","CRAB","SHAD","BUMP","FLEN" + "BUZB","CHOM","SACO","CRAB","SHAD","BUMP","FLEN","CLAS" }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) @@ -2859,6 +2859,12 @@ state_t states[NUMSTATES] = {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|1, 2, {NULL}, 0, 0, S_CLASH2}, + {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|2, 2, {NULL}, 0, 0, S_CLASH3}, + {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|3, 2, {NULL}, 0, 0, S_CLASH4}, + {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|4, 2, {NULL}, 0, 0, S_CLASH5}, + {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|5, 2, {NULL}, 0, 0, S_NULL}, + #ifdef SEENAMES {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK #endif @@ -16571,6 +16577,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 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_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // flags + S_NULL // raisestate + }, // ============================================================================================================================// #ifdef SEENAMES diff --git a/src/info.h b/src/info.h index 1f985531..bc2dbfba 100644 --- a/src/info.h +++ b/src/info.h @@ -619,6 +619,7 @@ typedef enum sprite SPR_BUMP, // Player/shell bump SPR_FLEN, // Shell hit graphics stuff + SPR_CLAS, // items clash SPR_FIRSTFREESLOT, SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1, @@ -3375,6 +3376,12 @@ typedef enum state S_FLINGENERGY2, S_FLINGENERGY3, + S_CLASH1, + S_CLASH2, + S_CLASH3, + S_CLASH4, + S_CLASH5, + #ifdef SEENAMES S_NAMECHECK, #endif @@ -4016,6 +4023,8 @@ typedef enum mobj_type MT_FLINGENERGY, + MT_ITEMCLASH, + #ifdef SEENAMES MT_NAMECHECK, #endif diff --git a/src/p_map.c b/src/p_map.c index c071b160..251151e8 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -711,6 +711,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) @@ -769,7 +770,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 +895,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; @@ -987,6 +989,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; From 07ffa8af6e0b9b6cefba4b835a1a3dc62314e961 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 14:04:54 +0100 Subject: [PATCH 06/17] Stars don't go faster when you get hit more --- src/p_inter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_inter.c b/src/p_inter.c index b0f772d9..20a32194 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3386,13 +3386,13 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings) momz = 3*FRACUNIT; } - ns = FixedMul(FixedMul(momxy, FRACUNIT + FixedDiv(player->losstime<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< Date: Tue, 24 Oct 2017 15:25:08 +0100 Subject: [PATCH 07/17] Shells and Lobbed items now use afterimages for trails Fireballs use old green shell trails for trails Updated dehacked with new states and all the changes --- src/dehacked.c | 43 +++++++++---------- src/info.c | 113 +++++++++++++++++-------------------------------- src/info.h | 35 +++++---------- src/p_mobj.c | 12 ++++++ 4 files changed, 82 insertions(+), 121 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 998b299d..1955f29a 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -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", @@ -6399,6 +6389,16 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_BUMP2", "S_BUMP3", + "S_FLINGENERGY1", + "S_FLINGENERGY2", + "S_FLINGENERGY3", + + "S_CLASH1", + "S_CLASH2", + "S_CLASH3", + "S_CLASH4", + "S_CLASH5", + #ifdef SEENAMES "S_NAMECHECK", #endif @@ -6935,7 +6935,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", @@ -6943,7 +6943,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", diff --git a/src/info.c b/src/info.c index 7f5f69b6..c2d6d27a 100644 --- a/src/info.c +++ b/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","LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS", - "BUZB","CHOM","SACO","CRAB","SHAD","BUMP","FLEN","CLAS" + "DBAN","GSHE","DGSH","RSHE","DRSH","BOMB","BLIG","LIGH","SINK","SITR", + "LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM", + "SACO","CRAB","SHAD","BUMP","FLEN","CLAS" }; // 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 @@ -14688,9 +14678,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 @@ -14877,33 +14867,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 diff --git a/src/info.h b/src/info.h index bc2dbfba..f6bf735f 100644 --- a/src/info.h +++ b/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 @@ -3152,15 +3150,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 @@ -3188,20 +3177,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, @@ -3935,7 +3923,7 @@ typedef enum mobj_type MT_TRIPLEGREENSHIELD3, MT_GREENSHIELD, MT_GREENITEM, - MT_GREENTRAIL, + MT_FIRETRAIL, MT_TRIPLEREDSHIELD1, // Red shell stuff MT_TRIPLEREDSHIELD2, @@ -3943,7 +3931,6 @@ typedef enum mobj_type MT_REDSHIELD, MT_REDITEM, MT_REDITEMDUD, - MT_REDTRAIL, MT_BOMBSHIELD, // Bob-omb stuff MT_BOMBITEM, diff --git a/src/p_mobj.c b/src/p_mobj.c index e27bb146..2c628c21 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7508,6 +7508,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); @@ -7542,6 +7544,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) @@ -7575,6 +7580,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) @@ -7584,6 +7590,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); @@ -7594,6 +7602,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; @@ -7607,6 +7617,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) From 0422e4064995f1411f8cbcb7600a4fd2b3779de4 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 17:19:14 +0100 Subject: [PATCH 08/17] Add graphic for throwing items Fix missing frame of clash --- src/dehacked.c | 10 ++++++++++ src/info.c | 45 +++++++++++++++++++++++++++++++++++++++------ src/info.h | 9 +++++++++ src/k_kart.c | 11 +++++++++++ src/p_mobj.c | 18 ++++++++++++++++++ 5 files changed, 87 insertions(+), 6 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 1955f29a..93029b6c 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6398,6 +6398,12 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_CLASH3", "S_CLASH4", "S_CLASH5", + "S_CLASH6", + + "S_FIREDITEM1", + "S_FIREDITEM2", + "S_FIREDITEM3", + "S_FIREDITEM4", #ifdef SEENAMES "S_NAMECHECK", @@ -6963,6 +6969,10 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s "MT_BUMP", + "MT_ITEMCLASH", + + "MT_FIREDITEM", + #ifdef SEENAMES "MT_NAMECHECK", #endif diff --git a/src/info.c b/src/info.c index c2d6d27a..ab570ed8 100644 --- a/src/info.c +++ b/src/info.c @@ -58,7 +58,7 @@ char sprnames[NUMSPRITES + 1][5] = "SPRG","BSPR","RNDM","RPOP","KFRE","DRIF","DSMO","FITM","DFAK","BANA", "DBAN","GSHE","DGSH","RSHE","DRSH","BOMB","BLIG","LIGH","SINK","SITR", "LAKI","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM", - "SACO","CRAB","SHAD","BUMP","FLEN","CLAS" + "SACO","CRAB","SHAD","BUMP","FLEN","CLAS","PSHW" }; // Doesn't work with g++, needs actionf_p1 (don't modify this comment) @@ -2849,11 +2849,17 @@ state_t states[NUMSTATES] = {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|1, 2, {NULL}, 0, 0, S_CLASH2}, - {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|2, 2, {NULL}, 0, 0, S_CLASH3}, - {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|3, 2, {NULL}, 0, 0, S_CLASH4}, - {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|4, 2, {NULL}, 0, 0, S_CLASH5}, - {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30|5, 2, {NULL}, 0, 0, S_NULL}, + {SPR_CLAS, FF_FULLBRIGHT|FF_TRANS30, 2, {NULL}, 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 @@ -16567,6 +16573,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // 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 diff --git a/src/info.h b/src/info.h index f6bf735f..c1a9e1b1 100644 --- a/src/info.h +++ b/src/info.h @@ -618,6 +618,7 @@ typedef enum sprite 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, @@ -3369,6 +3370,12 @@ typedef enum state S_CLASH3, S_CLASH4, S_CLASH5, + S_CLASH6, + + S_FIREDITEM1, + S_FIREDITEM2, + S_FIREDITEM3, + S_FIREDITEM4, #ifdef SEENAMES S_NAMECHECK, @@ -4012,6 +4019,8 @@ typedef enum mobj_type MT_ITEMCLASH, + MT_FIREDITEM, + #ifdef SEENAMES MT_NAMECHECK, #endif diff --git a/src/k_kart.c b/src/k_kart.c index efc931ed..3e03c267 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1824,6 +1824,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; } @@ -2042,6 +2049,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 { diff --git a/src/p_mobj.c b/src/p_mobj.c index 2c628c21..64664ea6 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6819,6 +6819,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! From 5d49a234297a4fc1e79d33ed0428ba561511b99e Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 17:46:44 +0100 Subject: [PATCH 09/17] Add item clash sound --- src/info.c | 8 ++++---- src/sounds.c | 1 + src/sounds.h | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/info.c b/src/info.c index ab570ed8..8352e942 100644 --- a/src/info.c +++ b/src/info.c @@ -2849,7 +2849,7 @@ state_t states[NUMSTATES] = {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, {NULL}, 0, 0, S_CLASH2}, // S_CLASH1 + {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 @@ -16569,8 +16569,8 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 0, // display offset 100, // mass 0, // damage - sfx_None, // activesound - MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY, // flags + sfx_clash, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY|MF_RUNSPAWNFUNC, // flags S_NULL // raisestate }, @@ -16625,7 +16625,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 }, diff --git a/src/sounds.c b/src/sounds.c index 1881385d..44bbcf9f 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -497,6 +497,7 @@ 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, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // SRB2kart - Skin sounds {"kwin", false, 64, 0, -1, NULL, 0, SKSWIN, -1, LUMPERROR}, diff --git a/src/sounds.h b/src/sounds.h index 03888a2a..66038b0c 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -568,6 +568,8 @@ typedef enum sfx_mkitm7, sfx_mkitm8, sfx_mkitmF, + sfx_clash, + sfx_kwin, sfx_klose, sfx_slow, From fced36e6014ca12eb5215547d59c3150e13be049 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 18:01:43 +0100 Subject: [PATCH 10/17] Change sound priorities to hopefully prioritise the more important sounds more Change singularity on a lot of the sounds so that more than one of them can be played at once --- src/sounds.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/sounds.c b/src/sounds.c index 44bbcf9f..81e5c689 100644 --- a/src/sounds.c +++ b/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}, From 59d670f90218de8d4c6122d8c728d29dab2db3f7 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 20:34:44 +0100 Subject: [PATCH 11/17] Shadows remain even after an object dies, until the object no longer exists --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 64664ea6..bcf32d82 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6244,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) From 436f7cb7c6a5d106aaa657114a78e316a64578c7 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 20:59:09 +0100 Subject: [PATCH 12/17] Tossed and shell hitting player sound Made clash audiable from a bit further away --- src/info.c | 12 ++++++------ src/k_kart.c | 2 ++ src/p_map.c | 5 +++++ src/sounds.c | 4 +++- src/sounds.h | 2 ++ 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/info.c b/src/info.c index 8352e942..e1b6d861 100644 --- a/src/info.c +++ b/src/info.c @@ -14392,7 +14392,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 @@ -14419,7 +14419,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_BANANAITEM, // spawnstate 1000, // spawnhealth S_NULL, // seestate - sfx_None, // seesound + sfx_tossed, // seesound 8, // reactiontime sfx_None, // attacksound S_NULL, // painstate @@ -14662,7 +14662,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 @@ -14824,7 +14824,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 @@ -14851,7 +14851,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 @@ -14905,7 +14905,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 diff --git a/src/k_kart.c b/src/k_kart.c index 3e03c267..9af13ad2 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -2029,6 +2029,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; diff --git a/src/p_map.c b/src/p_map.c index 251151e8..520e2792 100644 --- a/src/p_map.c +++ b/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) @@ -1095,6 +1097,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; diff --git a/src/sounds.c b/src/sounds.c index 81e5c689..b84c1828 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -497,7 +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, 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, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // SRB2kart - Skin sounds {"kwin", false, 64, 0, -1, NULL, 0, SKSWIN, -1, LUMPERROR}, diff --git a/src/sounds.h b/src/sounds.h index 66038b0c..66a9b729 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -569,6 +569,8 @@ typedef enum sfx_mkitm8, sfx_mkitmF, sfx_clash, + sfx_tossed, + sfx_shelit, sfx_kwin, sfx_klose, From 5f60eb68a4f98bfbdeadc0e77c0641b730595baa Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 21:18:08 +0100 Subject: [PATCH 13/17] Edited the wrong banana object --- src/info.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/info.c b/src/info.c index e1b6d861..dcc932db 100644 --- a/src/info.c +++ b/src/info.c @@ -14419,7 +14419,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_BANANAITEM, // spawnstate 1000, // spawnhealth S_NULL, // seestate - sfx_tossed, // seesound + sfx_None, // seesound 8, // reactiontime sfx_None, // attacksound S_NULL, // painstate @@ -14527,7 +14527,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 From f833222fe6a318a5415668ef7bf9991d9edfe664 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 22:21:46 +0100 Subject: [PATCH 14/17] Shell hit sound can travel further --- src/sounds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sounds.c b/src/sounds.c index b84c1828..07777514 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -499,7 +499,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"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, 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}, From 7f87a0275ba9a4b33917497f598f8a6713f3b750 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 22:23:11 +0100 Subject: [PATCH 15/17] Spawn item clash versus fake items too --- src/p_map.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/p_map.c b/src/p_map.c index 520e2792..bf7ad90d 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -744,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 @@ -926,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) From fe31394277b0db5e5e2eb0b92da2e7ad2a6a63e4 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 22:58:59 +0100 Subject: [PATCH 16/17] Do a quake effect when hit by non-spinout things or explosions --- src/k_kart.c | 6 ++++++ src/p_inter.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index 9af13ad2..4f294b8a 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1697,6 +1697,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; } diff --git a/src/p_inter.c b/src/p_inter.c index 20a32194..70e1ce10 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3131,6 +3131,11 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da 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 From 65c5c9456330c063781c43a896b03ab3c7ac6ab3 Mon Sep 17 00:00:00 2001 From: Sryder13 Date: Tue, 24 Oct 2017 23:33:25 +0100 Subject: [PATCH 17/17] Maces have shadows Maces have afterimages --- src/p_mobj.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/p_mobj.c b/src/p_mobj.c index bcf32d82..5e2c25f3 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -7467,6 +7467,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--; @@ -8432,6 +8439,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: