mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-24 14:59:13 -05:00
CringeStatusTarget
This commit is contained in:
parent
b3a8bacb94
commit
ba2816bf9f
|
|
@ -16,7 +16,7 @@
|
|||
.public ItemIsActive__02311BF8
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MultiplyByFixedPoint
|
||||
.public ov10_022C4884
|
||||
.public gCringeTurnRange
|
||||
.public ov10_022C4894
|
||||
.public ov29_022E4240
|
||||
.public ov29_022E4338
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
.public ov29_022E5258
|
||||
.public ov29_022E52F8
|
||||
.public GetTreatmentBetweenMonstersIgnoreStatus
|
||||
.public PlayExclamationPointEffect__022E5D4C
|
||||
.public PlayCringeExclamationPointEffect
|
||||
.public PrepareItemForPrinting__02345728
|
||||
.public SafeguardIsActive
|
||||
.public SetMessageLogPreprocessorArgsString
|
||||
|
|
|
|||
|
|
@ -428,8 +428,8 @@ ov10_022C487C:
|
|||
.global ov10_022C4880
|
||||
ov10_022C4880:
|
||||
.byte 0x7F, 0x00, 0x7F, 0x00
|
||||
.global ov10_022C4884
|
||||
ov10_022C4884:
|
||||
.global gCringeTurnRange
|
||||
gCringeTurnRange:
|
||||
.byte 0x01, 0x00, 0x01, 0x00
|
||||
.global SPEED_BOOST_TURN_RANGE
|
||||
SPEED_BOOST_TURN_RANGE:
|
||||
|
|
|
|||
|
|
@ -2307,8 +2307,8 @@ _022E5388:
|
|||
_022E5398: .word 0x0000018D
|
||||
arm_func_end ov29_022E52F8
|
||||
|
||||
arm_func_start PlayExclamationPointEffect__022E5D4C
|
||||
PlayExclamationPointEffect__022E5D4C: ; 0x022E539C
|
||||
arm_func_start PlayCringeExclamationPointEffect
|
||||
PlayCringeExclamationPointEffect: ; 0x022E539C
|
||||
stmdb sp!, {r4, lr}
|
||||
sub sp, sp, #0x10
|
||||
mov r4, r0
|
||||
|
|
@ -2330,7 +2330,7 @@ PlayExclamationPointEffect__022E5D4C: ; 0x022E539C
|
|||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022E53E8: .word 0x00000143
|
||||
arm_func_end PlayExclamationPointEffect__022E5D4C
|
||||
arm_func_end PlayCringeExclamationPointEffect
|
||||
|
||||
arm_func_start ov29_022E53EC
|
||||
ov29_022E53EC: ; 0x022E53EC
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ _02314498:
|
|||
ldrb r0, [r4, #0xd0]
|
||||
cmp r0, #1
|
||||
beq _02314514
|
||||
ldr r1, _02314538 ; =ov10_022C4884
|
||||
ldr r1, _02314538 ; =gCringeTurnRange
|
||||
mov r2, #1
|
||||
mov r0, r6
|
||||
strb r2, [r4, #0xd0]
|
||||
|
|
@ -74,7 +74,7 @@ _02314498:
|
|||
add r1, r0, #1
|
||||
mov r0, r6
|
||||
strb r1, [r4, #0xd1]
|
||||
bl PlayExclamationPointEffect__022E5D4C
|
||||
bl PlayCringeExclamationPointEffect
|
||||
ldr r2, _0231453C ; =0x00000D02
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
|
|
@ -103,7 +103,7 @@ _02314524:
|
|||
#define TRY_INFLICT_CRINGE_STATUS_OFFSET 0
|
||||
#endif
|
||||
_02314534: .word 0x00000DA2 + TRY_INFLICT_CRINGE_STATUS_OFFSET
|
||||
_02314538: .word ov10_022C4884
|
||||
_02314538: .word gCringeTurnRange
|
||||
_0231453C: .word 0x00000D02 + TRY_INFLICT_CRINGE_STATUS_OFFSET
|
||||
_02314540: .word 0x00000D03 + TRY_INFLICT_CRINGE_STATUS_OFFSET
|
||||
arm_func_end TryInflictCringeStatus
|
||||
|
|
|
|||
|
|
@ -32,5 +32,6 @@ void ApplyOffensiveStatMultiplier(struct entity *user, struct entity *target, st
|
|||
void ApplyDefensiveStatMultiplier(struct entity *user, struct entity *target, struct StatIndex stat, fx32_8 multiplier, bool8 displayMessage);
|
||||
void BoostHitChanceStat(struct entity *user, struct entity *target, struct StatIndex stat);
|
||||
void LowerHitChanceStat(struct entity *user, struct entity *target, struct StatIndex stat, bool8 displayMessage);
|
||||
bool8 CringeStatusTarget(struct entity *user ,struct entity *target, bool8 displayMessage, bool8 onlyCheck);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_02313814_H
|
||||
|
|
|
|||
|
|
@ -23,7 +23,15 @@ extern void ov29_022E52F8(struct entity *user, struct StatIndex);
|
|||
extern void LogMessageByIdWithPopupCheckUserTarget(struct entity *user, struct entity *target, u32 message_id);
|
||||
extern void UpdateStatusIconFlags(struct entity *);
|
||||
extern void ov29_022E4338(struct entity *);
|
||||
extern void PlayCringeExclamationPointEffect(struct entity *);
|
||||
extern fx32_8 MultiplyByFixedPoint(fx32_8 a, fx32_8 b);
|
||||
extern bool8 IsProtectedFromNegativeStatus(struct entity *user ,struct entity *target, bool8 displayMessage);
|
||||
extern bool8 SafeguardIsActive(struct entity *user ,struct entity *target, bool8 displayMessage);
|
||||
extern void TryActivateSteadfast(struct entity *user ,struct entity *target);
|
||||
extern void TryActivateQuickFeet(struct entity *user ,struct entity *target);
|
||||
extern s32 CalcStatusDuration(struct entity *target, const s16 *turnRange, bool8 factorCurerSkills);
|
||||
|
||||
extern const s16 gCringeTurnRange[2];
|
||||
|
||||
#ifdef JAPAN
|
||||
#define JPN_MSG_OFFSET -0x2C0
|
||||
|
|
@ -533,3 +541,48 @@ void LowerHitChanceStat(struct entity *user, struct entity *target, struct StatI
|
|||
|
||||
UpdateStatusIconFlags(target);
|
||||
}
|
||||
|
||||
bool8 CringeStatusTarget(struct entity *user ,struct entity *target, bool8 displayMessage, bool8 onlyCheck)
|
||||
{
|
||||
struct monster *entityInfo;
|
||||
u8 *buffer1 = AllocateTemp1024ByteBufferFromPool();
|
||||
|
||||
if (!EntityIsValid__023118B4(target))
|
||||
return FALSE;
|
||||
|
||||
if (SafeguardIsActive(user, target, displayMessage))
|
||||
return FALSE;
|
||||
|
||||
if (IsProtectedFromNegativeStatus(user, target, displayMessage))
|
||||
return FALSE;
|
||||
|
||||
#ifdef JAPAN
|
||||
if (DefenderAbilityIsActive__02311B94(user, target, ABILITY_INNER_FOCUS)) {
|
||||
#else
|
||||
if (DefenderAbilityIsActive__02311B94(user, target, ABILITY_INNER_FOCUS, TRUE)) {
|
||||
#endif
|
||||
SubstitutePlaceholderStringTags(0,target,0);
|
||||
if (displayMessage)
|
||||
LogMessageByIdWithPopupCheckUserTarget(user,target,0xda2 + JPN_MSG_OFFSET);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (onlyCheck)
|
||||
return TRUE;
|
||||
|
||||
entityInfo = GetEntInfo(target);
|
||||
SubstitutePlaceholderStringTags(0,target,0);
|
||||
if (entityInfo->cringe_class_status.cringe != STATUS_CRINGE_CRINGE) {
|
||||
entityInfo->cringe_class_status.cringe = STATUS_CRINGE_CRINGE;
|
||||
entityInfo->cringe_class_status.cringe_turns = CalcStatusDuration(target, gCringeTurnRange, TRUE) + 1;
|
||||
PlayCringeExclamationPointEffect(target);
|
||||
LogMessageByIdWithPopupCheckUserTarget(user,target,0xd02 + JPN_MSG_OFFSET);
|
||||
TryActivateSteadfast(user, target);
|
||||
TryActivateQuickFeet(user, target);
|
||||
}
|
||||
else {
|
||||
LogMessageByIdWithPopupCheckUserTarget(user,target,0xd03 + JPN_MSG_OFFSET);
|
||||
}
|
||||
UpdateStatusIconFlags(target);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user