Read-only archive of the Armageddon Games Forums Archive (2000–2026) · About this archive

Enemy Editor Plans (To-Do)

3 replies · 2,416 views · Started 02 July 2017

[MENTION=1]DarkDragon[/MENTION] inquired as to my plans for the enemy editor, so I'm posting this thread exists both as an announcement to everyone, and as a self-reminder for planned improvements tot he enemy editor.

This is in parallel with the items and weapons editor improvements.

As always, green means implemented, bold green means implemented and working properly, blue means work-in-progress, and red means abandoned.

Enemy Sizing
Add the ability to set the size and hit/draw offsets for npcs.
Add an override flag that is mandatory to make the values entered apply to the npc. The values are still retained, but the npc is only drawn to this size of the flags are set true.

Death Effects
Correct the death sprite so that it either swcales based on the enemy size, or so that it is drawn from a number of tiles equal to the enemy size, rather than drawing one tile per tilespace of the npc.
Add a deathsprite variable, to set the sprite on a per-npc basis.
Add additional death effect types, and animations.

Weapon Settings
Add the ability to edit the sprite of enemy weapons.
Add the ability to change the size, and other offsets for enemy weapons, including hitwidth, higheight, draw and hit offsets.
Add a method to scale the sprite of enemy weapons.
If we add a set of movement patterns to all weapons, then we could give npcs a weapon pattern set based on these, in addition to the extant patterns. In fact, we could also port over the eweapon patterns to lweapons.

Enemy Flags
Add true invisibility, with a field for an item to cancel it. Perhaps an item class, or specific level, too? i can see a 'reveal by; flag, and three fields for specific item, item class, and minimum level.
Add reveal by fields for cloaked enemies.

New Enemy Variables
Frozen CSet, and Frozen Sprite. These are for the defence status edefFROZEN/edefFREEZE, such as the ice rod would accomplish. Adding the ability for Link to life and throw frozen enemies could follow, if we add this in general.
CreatedBy: A variable that allows a script to report if the enemy was created by the screen, or a script. if by a script, it could report the script ID or other metadata.
Link: The npc is linked to another npc on the screen. This may not be viable, as enemy indices on the screen change, but it would be interesting to Link npcs to other npcs, and for example, have them mirror movement.

Defences
Additional defence types: all script weapons, electricity, sonic, and others for all lweapons, including unimplemented (planned) lweapon types.
New defence outcomes, such as double damage, triple damage, quadruple damage, heal npc, trigger secrets, 'shock Link', freeze, explode, and others.

Defence Type List
[spoiler]
Boomerang, Bomb, Super Bomb, Arrow, Fire, Wand, Magic, Hookshot, Hammer, Sword, Sword Beam, Reflected Sword Beam,
Reflected Magic, Reflected Fireball, Reflected Rock, Stomp Boots, Byrna Orbiters, Script (Generic), Script 1,
Script 2, Script 3, Script 4, Script 5, Script 6, Script 7, Script 8, Script 9, Script 10, ice, Bait, Wind, Sparkle, Sonic,
RESERVED, RESERVED, RESERVED, RESERVED, RESERVED, RESERVED, n/a, RESERVED, Ether, Bombos, THrown Pot, Thrown Rock, Electricity,
Shield Bash, Shovel, Spin Attack, Z3 Sword, Gameboy Sword
[/spoiler]

Note that it is now possible to set Link;s items to generate weapons that use types such as reflected rock.

Planned Enemy Defence Outcomes
[spoiler]
edNORMAL, // Take damage (or stun)
edHALFDAMAGE, // Take half damage
edQUARTDAMAGE, // Take 0.25 damage
edSTUNONLY, // Stun instead of taking damage.
edSTUNORCHINK, // If damage > 0, stun instead. Else, bounce off.
edSTUNORIGNORE, // If damage > 0, stun instead. Else, ignore.
edCHINKL1, // Bounces off, plays SFX_CHINK
edCHINKL2, // Bounce off unless damage >= 2
edCHINKL4, // Bounce off unless damage >= 4
edCHINKL6, // Bounce off unless damage >= 6
edCHINKL8, // Bounce off unless damage >= 8
edCHINK, // Bounces off, plays SFX_CHINK
edIGNOREL1, // Ignore unless damage > 1.
edIGNORE, // Do Nothing
ed1HKO, // One-hit knock-out
edCHINKL10, //If damage is less than 10 : IMPLEMENTED -Z
ed2x, //Double damage : IMPLEMENTED -Z
ed3x, //Triple Damage : IMPLEMENTED -Z
ed4x, //4x damage : IMPLEMENTED -Z
edHEAL, //recover the weapon damage in HP : IMPLEMENTED -Z
edTRIGGERSECRETS, //Triggers screen secrets. : IMPLEMENTED -Z
edMSG_NOT_ENABLED, //A message for 'The following are not yet enabled.
edMSG_LINE, //An entry for the hiriz line in THE zq PULLDOWN
edLEVELDAMAGE, //Damage * item level
edLEVELREDUCTION, //Damage / item level
edFREEZE, //Freeze solid
edSPLIT, //causes the enemy to split if it has a split attribute
edREPLACE, //replaced by next in list?
edLEVELCHINK2, //If item level is < 2: This needs a weapon variable that is set by
edLEVELCHINK3, //If item level is < 3: the item that generates it (itemdata::level stored to
edLEVELCHINK4, //If item level is < 4: weapon::level, or something similar; then a check to
edLEVELCHINK5, //If item level is < 5: read weapon::level in hit detection.
edSHOCK, //buzz blob
edEXPLODESMALL, //ew bombblast
edEXPLODELARGE, //super bomb blast
edSTONE, //deadrock
edBREAKSHIELD, //break the enemy shield
edRESTORESHIELD, //if the enemy had a shield, reset it
edSPECIALDROP, //but where to define it?
edINCREASECOUNTER, //but where to define the counter
edREDUCECOUNTER, //same problem
edEXPLODEHARMLESS, //boss death explosion
edKILLNOSPLIT, //If sufficient damage to kill it, a splitting enemy just dies.
edTRIBBLE, //Tribbles on hit.
edFIREBALL, //Makes a 1x1 fireball
edFIREBALLLARGE, //Makes a 3x3 fireball
edSUMMON, //Summons a number of enemies as defined by the summon properties of the npc.
//edSAVE, edRETRY // Real life, sanity Check Required.
edWINGAME, //Wand of Gamelon.
edJUMP, //Z3 stalfos
edEATLINK, //-G //Is this practical? We need specisal npc mvoement for it. -Z
[/spoiler]

Note: I completely rewrote the enemy defend routines, and they now evaluate weapons based on the weapon pointer. This has the benefit of better overall handling, and the ability to read the weaon's parentitem information, to determine the level of the item that created it.

Death Types
Add new death types, explode, explode (large ), explode (harmless), explode (large, harmless), fireball, fireball large, fireball (harmless), fireball (large, harmless), and a damage variable for these.

It should not be too terribly difficult to port these over to npc scripts, once we have those working.

Feel free to make suggestions, or to provide feedback. I surely expect [MENTION=56506]Tamamo[/MENTION] to tell me that this is all impossible, despite already implementing some of it. :kawaii:

Tamamo wrote:It's perfectly possible, not that I appreciate the teasing.

Sorry, I thought we were on friendly-enough terms that I could give you a little jab now and then, as you do to me. I didn't mean it to be spiteful, or anything serious. You did say, that the last few things that I had discussed were impossible, and I managed to do them all the same. ::shrug::

Yeah, you're pretty much know what your doing now. I may be stubbon but i'm not oblivious.
When I say something is impossible, it clearly means it's only impossible for me.

Also, have you tried looking at the unimplemented enemies to see what can be done with them.
As far as I'm concerned. We can just swap out NPC_WALKING and NPC_STANDING. But it would be nice to see about adding the others, since sprites for those do exist in the classic tileset, and other tilesets as well.