mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-14 15:43:43 +01:00
Incinerate
This commit is contained in:
parent
d027bb0d7a
commit
824a95fe07
@ -2417,6 +2417,43 @@ Move_CIRCLE_THROW:
|
|||||||
end
|
end
|
||||||
|
|
||||||
Move_INCINERATE:
|
Move_INCINERATE:
|
||||||
|
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||||
|
monbg ANIM_TARGET
|
||||||
|
monbgprio_28 ANIM_TARGET
|
||||||
|
setalpha 12, 8
|
||||||
|
delay 1
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
playsewithpan SE_W172, SOUND_PAN_ATTACKER
|
||||||
|
createvisualtask AnimTask_SwayMon, 5, 0, 3, 0xc00, 8, ANIM_TARGET
|
||||||
|
createvisualtask AnimTask_SwayMon, 5, 0, 3, 0xc00, 8, ANIM_DEF_PARTNER
|
||||||
|
delay 3
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
delay 3
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
playsewithpan SE_W172, SOUND_PAN_ATTACKER
|
||||||
|
delay 3
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
delay 3
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
playsewithpan SE_W172, SOUND_PAN_ATTACKER
|
||||||
|
delay 3
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
delay 3
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
playsewithpan SE_W172, SOUND_PAN_ATTACKER
|
||||||
|
delay 3
|
||||||
|
createsprite gIncinerateSpriteTemplate, ANIM_TARGET, 2, 6, 20, 0, -16, 24, 20
|
||||||
|
delay 5
|
||||||
|
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 8, 1
|
||||||
|
createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 5, 0, 8, 1
|
||||||
|
createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB_RED, 12, 1, 1
|
||||||
|
createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_DEF_PARTNER, RGB_RED, 12, 1, 1
|
||||||
|
playsewithpan SE_W172, SOUND_PAN_ATTACKER
|
||||||
|
delay 5
|
||||||
|
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 3, 0, 0, 9
|
||||||
|
waitforvisualfinish
|
||||||
|
clearmonbg ANIM_TARGET
|
||||||
|
blendoff
|
||||||
end
|
end
|
||||||
|
|
||||||
Move_QUASH:
|
Move_QUASH:
|
||||||
|
@ -353,6 +353,16 @@ gBattleScriptsForMoveEffects:: @ 82D86A8
|
|||||||
.4byte BattleScript_EffectLaserFocus
|
.4byte BattleScript_EffectLaserFocus
|
||||||
.4byte BattleScript_EffectMagneticFlux
|
.4byte BattleScript_EffectMagneticFlux
|
||||||
.4byte BattleScript_EffectGearUp
|
.4byte BattleScript_EffectGearUp
|
||||||
|
.4byte BattleScript_EffectIncinerate
|
||||||
|
|
||||||
|
BattleScript_EffectIncinerate:
|
||||||
|
setmoveeffect MOVE_EFFECT_INCINERATE | MOVE_EFFECT_CERTAIN
|
||||||
|
goto BattleScript_EffectHit
|
||||||
|
|
||||||
|
BattleScript_MoveEffectIncinerate::
|
||||||
|
printstring STRINGID_INCINERATEBURN
|
||||||
|
waitmessage 0x40
|
||||||
|
return
|
||||||
|
|
||||||
BattleScript_EffectCoreEnforcer:
|
BattleScript_EffectCoreEnforcer:
|
||||||
setmoveeffect MOVE_EFFECT_CORE_ENFORCER | MOVE_EFFECT_CERTAIN
|
setmoveeffect MOVE_EFFECT_CORE_ENFORCER | MOVE_EFFECT_CERTAIN
|
||||||
|
@ -321,5 +321,6 @@ extern const u8 BattleScript_AirBaloonMsgPop[];
|
|||||||
extern const u8 BattleScript_ItemHurtRet[];
|
extern const u8 BattleScript_ItemHurtRet[];
|
||||||
extern const u8 BattleScript_ToxicOrb[];
|
extern const u8 BattleScript_ToxicOrb[];
|
||||||
extern const u8 BattleScript_FlameOrb[];
|
extern const u8 BattleScript_FlameOrb[];
|
||||||
|
extern const u8 BattleScript_MoveEffectIncinerate[];
|
||||||
|
|
||||||
#endif // GUARD_BATTLE_SCRIPTS_H
|
#endif // GUARD_BATTLE_SCRIPTS_H
|
||||||
|
@ -330,6 +330,7 @@
|
|||||||
#define MOVE_EFFECT_HAPPY_HOUR 0x41
|
#define MOVE_EFFECT_HAPPY_HOUR 0x41
|
||||||
#define MOVE_EFFECT_CORE_ENFORCER 0x42
|
#define MOVE_EFFECT_CORE_ENFORCER 0x42
|
||||||
#define MOVE_EFFECT_THROAT_CHOP 0x43
|
#define MOVE_EFFECT_THROAT_CHOP 0x43
|
||||||
|
#define MOVE_EFFECT_INCINERATE 0x44
|
||||||
#define MOVE_EFFECT_AFFECTS_USER 0x4000
|
#define MOVE_EFFECT_AFFECTS_USER 0x4000
|
||||||
#define MOVE_EFFECT_CERTAIN 0x8000
|
#define MOVE_EFFECT_CERTAIN 0x8000
|
||||||
|
|
||||||
|
@ -341,5 +341,6 @@
|
|||||||
#define EFFECT_LASER_FOCUS 335
|
#define EFFECT_LASER_FOCUS 335
|
||||||
#define EFFECT_MAGNETIC_FLUX 336
|
#define EFFECT_MAGNETIC_FLUX 336
|
||||||
#define EFFECT_GEAR_UP 337
|
#define EFFECT_GEAR_UP 337
|
||||||
|
#define EFFECT_INCINERATE 338
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||||
|
@ -537,6 +537,7 @@
|
|||||||
#define STRINGID_TARGETATEITEM 533
|
#define STRINGID_TARGETATEITEM 533
|
||||||
#define STRINGID_AIRBALLOONFLOAT 534
|
#define STRINGID_AIRBALLOONFLOAT 534
|
||||||
#define STRINGID_AIRBALLOONPOP 535
|
#define STRINGID_AIRBALLOONPOP 535
|
||||||
|
#define STRINGID_INCINERATEBURN 536
|
||||||
|
|
||||||
#define BATTLESTRINGS_COUNT 530
|
#define BATTLESTRINGS_COUNT 530
|
||||||
|
|
||||||
|
@ -662,9 +662,11 @@ static const u8 sText_BerryDmgReducing[] = _("{B_LAST_ITEM} weakened the damage\
|
|||||||
static const u8 sText_TargetAteItem[] = _("{B_DEF_NAME_WITH_PREFIX} ate its {B_LAST_ITEM}!");
|
static const u8 sText_TargetAteItem[] = _("{B_DEF_NAME_WITH_PREFIX} ate its {B_LAST_ITEM}!");
|
||||||
static const u8 sText_AirBalloonFloat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} floats in the air\nwith its {B_LAST_ITEM}!");
|
static const u8 sText_AirBalloonFloat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} floats in the air\nwith its {B_LAST_ITEM}!");
|
||||||
static const u8 sText_AirBalloonPop[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} popped!");
|
static const u8 sText_AirBalloonPop[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} popped!");
|
||||||
|
static const u8 sText_IncinerateBurn[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwas burnt up!");
|
||||||
|
|
||||||
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||||
{
|
{
|
||||||
|
[STRINGID_INCINERATEBURN - 12] = sText_IncinerateBurn,
|
||||||
[STRINGID_AIRBALLOONPOP - 12] = sText_AirBalloonPop,
|
[STRINGID_AIRBALLOONPOP - 12] = sText_AirBalloonPop,
|
||||||
[STRINGID_AIRBALLOONFLOAT - 12] = sText_AirBalloonFloat,
|
[STRINGID_AIRBALLOONFLOAT - 12] = sText_AirBalloonFloat,
|
||||||
[STRINGID_TARGETATEITEM - 12] = sText_TargetAteItem,
|
[STRINGID_TARGETATEITEM - 12] = sText_TargetAteItem,
|
||||||
|
@ -2876,6 +2876,19 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
|||||||
gDisableStructs[gEffectBattler].throatChopTimer = 2;
|
gDisableStructs[gEffectBattler].throatChopTimer = 2;
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
break;
|
break;
|
||||||
|
case MOVE_EFFECT_INCINERATE:
|
||||||
|
if (GetBattlerHoldEffect(gEffectBattler, FALSE) == HOLD_EFFECT_GEMS
|
||||||
|
|| (gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX))
|
||||||
|
{
|
||||||
|
gLastUsedItem = gBattleMons[gEffectBattler].item;
|
||||||
|
gBattleMons[gEffectBattler].item = 0;
|
||||||
|
gActiveBattler = gEffectBattler;
|
||||||
|
BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gEffectBattler].item);
|
||||||
|
MarkBattlerForControllerExec(gActiveBattler);
|
||||||
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
|
gBattlescriptCurrInstr = BattleScript_MoveEffectIncinerate;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7153,7 +7153,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
|||||||
|
|
||||||
[MOVE_INCINERATE] =
|
[MOVE_INCINERATE] =
|
||||||
{
|
{
|
||||||
.effect = EFFECT_PLACEHOLDER, // Needs a custom move effect
|
.effect = EFFECT_INCINERATE,
|
||||||
.power = 60,
|
.power = 60,
|
||||||
.type = TYPE_FIRE,
|
.type = TYPE_FIRE,
|
||||||
.accuracy = 100,
|
.accuracy = 100,
|
||||||
|
30
src/fire.c
30
src/fire.c
@ -256,6 +256,30 @@ const struct SpriteTemplate gEmberFlareSpriteTemplate =
|
|||||||
.callback = AnimEmberFlare,
|
.callback = AnimEmberFlare,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const union AnimCmd gIncinerateAnim1[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(0, 2),
|
||||||
|
ANIMCMD_FRAME(16, 4),
|
||||||
|
ANIMCMD_FRAME(32, 2),
|
||||||
|
ANIMCMD_JUMP(0),
|
||||||
|
};
|
||||||
|
|
||||||
|
const union AnimCmd *const gIncinerateAnims[] =
|
||||||
|
{
|
||||||
|
gIncinerateAnim1,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct SpriteTemplate gIncinerateSpriteTemplate =
|
||||||
|
{
|
||||||
|
.tileTag = ANIM_TAG_SMALL_EMBER,
|
||||||
|
.paletteTag = ANIM_TAG_SMALL_EMBER,
|
||||||
|
.oam = &gUnknown_08524914,
|
||||||
|
.anims = gIncinerateAnims,
|
||||||
|
.images = NULL,
|
||||||
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
|
.callback = TranslateAnimSpriteToTargetMonLocation,
|
||||||
|
};
|
||||||
|
|
||||||
const struct SpriteTemplate gUnknown_08595504 =
|
const struct SpriteTemplate gUnknown_08595504 =
|
||||||
{
|
{
|
||||||
.tileTag = ANIM_TAG_SMALL_EMBER,
|
.tileTag = ANIM_TAG_SMALL_EMBER,
|
||||||
@ -653,7 +677,7 @@ void AnimFireRing(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void AnimFireRingStep1(struct Sprite *sprite)
|
static void AnimFireRingStep1(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
UpdateFireRingCircleOffset(sprite);
|
UpdateFireRingCircleOffset(sprite);
|
||||||
|
|
||||||
if (++sprite->data[0] == 0x12)
|
if (++sprite->data[0] == 0x12)
|
||||||
@ -713,7 +737,7 @@ static void UpdateFireRingCircleOffset(struct Sprite *sprite)
|
|||||||
// arg 1: initial y pixel offset
|
// arg 1: initial y pixel offset
|
||||||
// arg 2: duration
|
// arg 2: duration
|
||||||
// arg 3: x delta
|
// arg 3: x delta
|
||||||
// arg 4: y delta
|
// arg 4: y delta
|
||||||
// AnimFireCross(struct Sprite *sprite)
|
// AnimFireCross(struct Sprite *sprite)
|
||||||
static void AnimFireCross(struct Sprite *sprite)
|
static void AnimFireCross(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
@ -1093,7 +1117,7 @@ static void sub_8109AFC(struct Sprite *sprite)
|
|||||||
case 2:
|
case 2:
|
||||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
|
sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
|
||||||
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
|
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
|
||||||
|
|
||||||
if (++sprite->data[3] == 31)
|
if (++sprite->data[3] == 31)
|
||||||
{
|
{
|
||||||
sprite->pos1.x += sprite->pos2.x;
|
sprite->pos1.x += sprite->pos2.x;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user