Mummy: Difference between revisions
Content deleted Content added
Piranhaplant (talk | contribs) Created page with "{{Infobox Monster|img=Mummy.png|hp=5|points=100}} {{Infobox Entity|entity_pointer=$81:8C17}} The mummy is a respawning monster. Category:Respawning monster Category:Monster Category:Entity" |
Piranhaplant (talk | contribs) No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
{{Infobox Entity|entity_pointer=$81:8C17}} |
{{Infobox Entity|entity_pointer=$81:8C17}} |
||
The mummy is a [[respawning monster]]. |
The mummy is a [[respawning monster]]. |
||
== Behavior == |
|||
Mummies share most of their code with the hard version of [[zombie]]s, and thus behave identically. The only differences are their starting health and graphics. |
|||
== RAM map == |
|||
See [[Zombie#RAM map]]. |
|||
== Pseudocode == |
|||
updateAnimation() { |
|||
this.cyclesUntilAnimUpdate -= 1 |
|||
if (this.cyclesUntilAnimUpdate == 0) { |
|||
this.cyclesUntilAnimUpdate = 4 |
|||
this.animationFrame = (this.animationFrame + 1) % 4 |
|||
this.sprite.tileData.lowBytes = animations[this.direction][this.animationFrame] |
|||
this.sprite.tileData.bank = 0x90 |
|||
if (this.direction < DOWN_LEFT) { |
|||
this.sprite.flipX = false |
|||
} else { |
|||
this.sprite.flipX = true |
|||
} |
|||
} |
|||
} |
|||
animations = { |
|||
{ 0xE1D4, 0xE1FD, 0xE226, 0xE24F }, |
|||
{ 0xE278, 0xE2A1, 0xE2CA, 0xE2F3 }, |
|||
{ 0xE118, 0xE149, 0xE172, 0xE1A3 }, |
|||
{ 0xE118, 0xE149, 0xE172, 0xE1A3 }, |
|||
{ 0xE118, 0xE149, 0xE172, 0xE1A3 }, |
|||
{ 0xE1D4, 0xE1FD, 0xE226, 0xE24F }, |
|||
{ 0xE118, 0xE149, 0xE172, 0xE1A3 }, |
|||
{ 0xE118, 0xE149, 0xE172, 0xE1A3 }, |
|||
{ 0xE118, 0xE149, 0xE172, 0xE1A3 } |
|||
} |
|||
init() { |
|||
{{ROM name|$81:8000}}() |
|||
this.animationFrame = 0 |
|||
this.freezeTimer = 0 |
|||
this.x = args.x |
|||
this.sprite.x = args.x |
|||
this.sprite.z = 0 |
|||
this.y = args.y |
|||
this.sprite.y = args.y |
|||
this.sprite.tileData = $90:E118 |
|||
this.sprite.alternatePalette = 6 |
|||
this.sprite.visible = true |
|||
} |
|||
main() { |
|||
{{ROM name|$7E:00DE}} += 0x14 |
|||
this.cyclesUntilAnimUpdate = 7 |
|||
init() |
|||
{{ROM name|$81:832C}}(this.spawnAnimation) |
|||
this.sprite.type = MONSTER |
|||
zombie.wanderInRandomDirection_Hard() |
|||
this.health = 4 |
|||
this.dontTargetTimer = -1 |
|||
{{ROM name|$80:8475}}(zombie.collisionHandler) |
|||
this.deathStatus = 0 |
|||
while (this.deathStatus == 0) { |
|||
{{ROM name|$80:8353}}(2) |
|||
zombie.checkForTarget_Hard() |
|||
this.state() |
|||
updateAnimation() |
|||
} |
|||
if (this.deathStatus == 0xF5F5) { |
|||
{{RAM name|$7E:1F66}} += 1 |
|||
{{ROM name|$81:83A3}}(this.deathAnimation, this.deathStatus, 0x90) |
|||
} |
|||
{{ROM name|$7E:00DE}} -= 0x14 |
|||
while ({{ROM name|$7E:00DE}} < 0) { } |
|||
{{ROM name|$80:BE41}}(this.sprite) |
|||
} |
|||
spawnAnimation = { |
|||
{ 0xE31C, 14 }, { 0xE35D, 14 }, { 0xE39E, 10 }, { 0xE1D4, 6 }, |
|||
{ 0, 0 } |
|||
} |
|||
deathAnimation = { |
|||
{ 0xDDC2, 5 }, { 0xDDDB, 5 }, { 0xDE0C, 5 }, { 0xDE3D, 5 }, |
|||
{ 0xDE66, 5 }, { 0xDE8F, 5 }, { 0xDEA8, 5 }, { 0xDEC1, 5 }, |
|||
{ 0xDED2, 5 }, { 0xDEE3, 5 }, { 0xDEF4, 5 }, { 0, 0 } |
|||
} |
|||
[[Category:Respawning monster]] |
[[Category:Respawning monster]] |
||
[[Category:Monster]] |
|||
[[Category:Entity]] |
Revision as of 20:17, 13 July 2024
Monster data | |
---|---|
![]() | |
HP | 5 |
Points | 100 |
Special | {{{special}}} |
Resists | {{{resists}}} |
Weak to | {{{weak_to}}} |
Entity data | |
---|---|
Entity pointer | $81:8C17 |
The mummy is a respawning monster.
Behavior
Mummies share most of their code with the hard version of zombies, and thus behave identically. The only differences are their starting health and graphics.
RAM map
See Zombie#RAM map.
Pseudocode
updateAnimation() { this.cyclesUntilAnimUpdate -= 1 if (this.cyclesUntilAnimUpdate == 0) { this.cyclesUntilAnimUpdate = 4 this.animationFrame = (this.animationFrame + 1) % 4 this.sprite.tileData.lowBytes = animations[this.direction][this.animationFrame] this.sprite.tileData.bank = 0x90 if (this.direction < DOWN_LEFT) { this.sprite.flipX = false } else { this.sprite.flipX = true } } } animations = { { 0xE1D4, 0xE1FD, 0xE226, 0xE24F }, { 0xE278, 0xE2A1, 0xE2CA, 0xE2F3 }, { 0xE118, 0xE149, 0xE172, 0xE1A3 }, { 0xE118, 0xE149, 0xE172, 0xE1A3 }, { 0xE118, 0xE149, 0xE172, 0xE1A3 }, { 0xE1D4, 0xE1FD, 0xE226, 0xE24F }, { 0xE118, 0xE149, 0xE172, 0xE1A3 }, { 0xE118, 0xE149, 0xE172, 0xE1A3 }, { 0xE118, 0xE149, 0xE172, 0xE1A3 } } init() { createMonsterSprite() this.animationFrame = 0 this.freezeTimer = 0 this.x = args.x this.sprite.x = args.x this.sprite.z = 0 this.y = args.y this.sprite.y = args.y this.sprite.tileData = $90:E118 this.sprite.alternatePalette = 6 this.sprite.visible = true } main() { $7E:00DE += 0x14 this.cyclesUntilAnimUpdate = 7 init() showAnimation(this.spawnAnimation) this.sprite.type = MONSTER zombie.wanderInRandomDirection_Hard() this.health = 4 this.dontTargetTimer = -1 setCollisionHandler(zombie.collisionHandler) this.deathStatus = 0 while (this.deathStatus == 0) { waitFrames(2) zombie.checkForTarget_Hard() this.state() updateAnimation() } if (this.deathStatus == 0xF5F5) { mummiesKilled += 1 showMonsterDeath(this.deathAnimation, this.deathStatus, 0x90) } $7E:00DE -= 0x14 while ($7E:00DE < 0) { } deleteSprite(this.sprite) } spawnAnimation = { { 0xE31C, 14 }, { 0xE35D, 14 }, { 0xE39E, 10 }, { 0xE1D4, 6 }, { 0, 0 } } deathAnimation = { { 0xDDC2, 5 }, { 0xDDDB, 5 }, { 0xDE0C, 5 }, { 0xDE3D, 5 }, { 0xDE66, 5 }, { 0xDE8F, 5 }, { 0xDEA8, 5 }, { 0xDEC1, 5 }, { 0xDED2, 5 }, { 0xDEE3, 5 }, { 0xDEF4, 5 }, { 0, 0 } }