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

I'm going to be re-jiggering the custom enemy system...

164 replies · 40,614 views · Started 25 January 2007

Um, the S tiles ARE already used (or, at least, I designed them to be). The 2 examples you gave should already be in use, as well as Zoras (for the submerging/surfacing tiles) and the Gleeoks (for the neck and head tiles).

And how about this idea for shops (maybe for ZC 2.6 or something)... Add a new variable to each item. Call it "Next Shop". Basically, when you buy that item, the shop number for that room is permanently changed to the shop number listed in that variable. By default (and for old quests), this number would be set to the current shop number.

Examples:
A shop from an old quest (this is the actual shop data of shop 0 from 1st.qst) would be converted to this:

Shop 0
Item Price Next
Magic Shield 160 0
Normal Key 100 0
Candle 60 0
or possibly this (the -1 means "whatever the current shop number is"😉:
Shop 0
Item Price Next
Magic Shield 160 - 1
Normal Key 100 - 1
Candle 60 - 1

Suppose you wanted a shop that sold a Blue Ring, then sold a Red Ring once you bought the Blue Ring, then sells out of rings completely:
Shop 3
Item Price Next
Normal Key 80 - 1
Blue Ring 255 4
Bait 60 - 1

Shop 4
Item Price Next
Red Ring 999 5
Normal Key 80 - 1
Bait 60 - 1

Shop 5
Item Price Next
Normal Key 80 - 1
Bait 60 - 1
(None) 0 - 1


Notice that the items don't always have to appear in the same places. Also, note that the shop is dependent on if you buy the item from that shop, not just if you happen to already own it.

Or, suppose you wanted to recreate the bean seller from Ocarina of Time (but with Keys, since ZC doesn't have beans):

Shop 2
Item Price Next
Normal Key 10 3
(None) 0 - 1
(None) 0 - 1

Shop 3
Item Price Next
Normal Key 20 4
(None) 0 - 1
(None) 0 - 1

Shop 4
Item Price Next
Normal Key 30 5
(None) 0 - 1
(None) 0 - 1

Shop 5
Item Price Next
Normal Key 40 6
(None) 0 - 1
(None) 0 - 1

Shop 6
Item Price Next
Normal Key 50 7
(None) 0 - 1
(None) 0 - 1

Shop 7
Item Price Next
Normal Key 60 8
(None) 0 - 1
(None) 0 - 1

Shop 8
Item Price Next
Normal Key 70 9
(None) 0 - 1
(None) 0 - 1

Shop 9
Item Price Next
Normal Key 80 10
(None) 0 - 1
(None) 0 - 1

Shop 10
Item Price Next
Normal Key 90 11
(None) 0 - 1
(None) 0 - 1

Shop 11
Item Price Next
Normal Key 100 12
(None) 0 - 1
(None) 0 - 1

Shop 12
Item Price Next
(None) 0 - 1
(None) 0 - 1
(None) 0 - 1

Or, you want a shop that sells Magic Shields at a discount if you ever bought one from them before:

Shop 0
Item Price Next
Magic Shield 160 1
Normal Key 100 - 1
Candle 60 - 1

Shop 1
Item Price Next
Magic Shield 20 - 1
Normal Key 100 - 1
Candle 60 - 1

Finally, a shop that sells Shields and Rings and upgrades to the next level of item if you purchase one:

Shop 0
Item Price Next
Magic Shield 160 1
Blue Ring 255 2
(None) 0 - 1

Shop 1
Item Price Next
Mirror Shield 780 3
Blue Ring 255 4
(None) 0 - 1

Shop 2
Item Price Next
Magic Shield 160 4
Red Ring 999 5
(None) 0 - 1

Shop 3
Item Price Next
Blue Ring 255 6
(None) 0 - 1
(None) 0 - 1

Shop 4
Item Price Next
Mirror Shield 780 6
Red Ring 999 7
(None) 0 - 1

Shop 5
Item Price Next
Magic Shield 160 7
(None) 0 - 1
(None) 0 - 1

Shop 6
Item Price Next
Red Ring 999 8
(None) 0 - 1
(None) 0 - 1

Shop 7
Item Price Next
Mirror Shield 780 8
(None) 0 - 1
(None) 0 - 1

Shop 8
Item Price Next
(None) 0 - 1
(None) 0 - 1
(None) 0 - 1

Yes, we would definitely increase the number of shops from 15 to something like 255 or even 65535. Thoughts?

No. It's based on what you buy, not what you have. If you set it to sell a blue potion, then a red potion the next time, it doesn't matter if you use up the blue potion before you return or not.

Dark Nation wrote:Um, the S tiles ARE already used (or, at least, I designed them to be).
Then why does "grep s_tile guys.cpp" return only one line?

(Not when I'm done with it, it won't.)

Also, I find the "Next" shops to be somewhat seductive...

Perhaps, 'designed' is the wrong word. 'Intended'. Yeah. I 'intended' them to be used for just that purpose. 😃

Also, if we had room scripts (that ran once just after the room is loaded into memory), you could do this exact same thing through scripting, without sacrificing so many shops. And, you could have custom shop text, too. ("So, back again?" "We just got a new item in stock! Check it out!" "Sorry, we're all out of medicine right now." etc.)

Hence "currently it does nothing". Also, I'll use it for Zoras, Leevers and Gleeoks as well.

Progress list: currently I've merged Walker and Shooter, Ghini, Gel (Tribble), Zol (Tribble), Vire (Tribble), Rope, Goriya, Bubble and Like-Like into the Walking Enemy type, and merged Peahat, Ghini 2 and Keese (Tribble) into the Floating Enemy type.

That leaves the following re-jiggerings and/or jiggerings:

* Getting Floating Enemies to fire projectiles
* Pols Voice (to merge with Walking Enemy)
* Blue Leever (to merge with Walking Enemy?)
* Armos (to merge with Walking Enemy)
* Tektite
* Red Wizzrobe (to merge with Teleporting Enemy)
* Red Leever (to merge with Teleporting Enemy)
* Zora (to merge with Teleporting Enemy)
* Wall Master
* Blue Wizzrobe
* Trap (Thinks: another Misc. Attribute could do away with the Multi-Directional Traps, Mean Placed Traps and Floating Traps rules.)
* Aquamentus (Thinks: Implement BS-Aquamentus?)
* Moldorm (Thinks: Implement Z3 Moldorm, whatever that is? I presume it's where only the tailmost segment can be damaged.)
* Dodongo (Thinks: Maybe even implement Fire Dodongo? Just add a halt rate and...)
* Manhandla
* Gleeok
* Digdogger
* Gohma
* Patra
* Lanmola

Wow...

That shop idea is weird, though. Nothing like what I had in mind....

_L_, I'm also not sure exactly what the Z3 Moldorm is, but it's probably NOT the boss Moldorm. If you remember, in LttP, Moldorms bounced away if they tried to move into an area that they couldn't walk on normally (like pits and solid objects), and the moved in an almost circular motion. Z1 Moldorms don't do that. They just.... move. They also don't get knocked back when you hit them, like Z3 Moldorms, which are also a bit smaller. So I believe the Z3 Moldorm is not the Boss Moldorm, but instead is the smaller Enemy Moldorm. Though, the Boss Moldorm would be nice to have, if possible...

Say, when are we going to get the combo editor? And is there a plan to allow us to attach scripts to enemies?

Wait, I remember now. I implemented it for use with the tile editor (for tile overwrite protection). With the protection turned on (in the options menu), try to paste something in the tile used by a Gleeok's head, or the surfacing/submerging tiles used by the zoras and leevers. And yes, the Z3 Moldorm is the smaller version that bounces around in arcs/circles.

_L_ wrote:
* Dodongo (Thinks: Maybe even implement Fire Dodongo? Just add a halt rate and...)

Please Do, Otherwise, Dodongo is more or less static, Bosses need to have the absolute highest degree of customability. The days of "Fought one Fought them all" could very well be coming to an end.

About the Next Shop, would it work for individual locations or for all shops of that type? For instance, if you have two places with that example Magic Shield discount and bought a Magic Shield from one of them, would it become cheaper in the duplicate shop as well? That is, would the next procedure be activated as a part of the shop data or the screen data?

Zelda3 Moldorm's biggest feature is his continually decreasing size along his length. His head is his biggest segment, and then each segment is progressively smaller. His head and tail look different from his body segments as well. The bouncing off the walls is a part of the movement procedure, probably the biggest difference. It should be noted that adding just that lets you have the generic enemy Moldorm, but making him only be able to be damaged in the tail, putting in the unique animation whenever he got hit(where he curls up inside of his head and is immune to damage until he starts moving again), causing him to about double in movement speed when he's down to one hit remaining, and causing a bounceback upon striking the head with a melee attack would cause the boss Moldorm to exist as well, though pit type warps would be needed to actually simulate the original battle conditions. It might be a bit much to add, but that's about what Z3 Moldorm would be.

For reference:

Boss Moldorm:

User posted image

Generic Moldorm:

User posted image

It changes what shop number a screen uses. So, if 2 screens use shop 3 and you buy a shield at one that changes it to shop 4, the other room will still use shop 3 until/unless you buy a shield there.

jman2050 wrote:Personally, I hate the quest rule system so anything that'll force people to stray away from that is okay in my book.

Quoted for truth.

I haven't been involved in the ZC scene in a few months, and I have no fricking idea who _L_ is, but it seems to me like he's really doing a lot for one of the features we've all been drooling about since 1.84 - an enemy editor. So he takes out the quest rules relating to enemy status? Well, it doesn't make sense to have them in there. Think about if you were just picking up this game, and editor. For some reason, rope2's flashing or whatever can't be changed in the enemy editor, and after hours of searching, you find it in... quest rules? That would piss me off.

Dark Nation wrote:It changes what shop number a screen uses. So, if 2 screens use shop 3 and you buy a shield at one that changes it to shop 4, the other room will still use shop 3 until/unless you buy a shield there.

Personally, I'd rather have it attached to the shop type and not the specific rooms. I think that that would be a lot more versatile. Maybe you could have a quest rule, or (Since you all don't like quest rules) when choosing room type have a Shop: Generic choice and a Shop: Specific, where all of the generic types would affect each other, but the specific keeps track of its own status.

Well, I'm technically counting this as a "fix", based on my belief that the previous system was far more limited than it ought to have been. Also, the person who was originally going to do it has retired.

As you know, there are two types of fireballs - ones that are blocked by the Magic Shield, and ones that aren't. So, I'm adding a "Fireball 2" enemy weapon, so the latter can be used by any enemy. I might also add a quest rule allowing people to give a different sprite to Fireball 2's, for visual differentiation!

A long time ago, there was talk of making/segregating 4 different types of fireballs.
[LIST=1]
[*]Weak. Any shield will block it. Mirror Shield will reflect (thought there was the idea to let the Magic Shield reflect it, too). No current enemies use this.
[*]Average. Magic Shield will block. Mirror Shield will reflect. Zoras, for instance, use this.
[*]Strong. Mirror Shield will block. I don't think any current enemies have this kind.
[*]Very Strong. Nothing blocks. Ganon, for instance, uses this.
[/LIST]

Well, after some detours I've got BS-Aquamentus's five-fireball arc working, in both orientations. It can now be attached to any Walker by setting its weapon to Fireball (2) and its misc1 to 5. Now, how are those Floater shooters doing...

Cool... Glad to hear you've been working on the Aquamentis fire paterns. Is he still going to shoot non-fire ball projectiles in 3 directions? or do you plan on adding a way for him to shoot other projectiles in a 3/5 spread? As it is the Aquamentis seems a little TOO wimp when he shoots magic or swords like a stalfos 3 would.

I'll see what I can do with regard to the 3/5 spread.

Incidentally: my custom enemy changes aren't going into the builds until they're all done. So, your quest's custom enemies aren't going to be erased yet.

Okay, here's how the Floater's shooting will be set up:
misc1: 0 = normal (fires while flying). 1 = fires while resting. 2 = rapid firing. 7 = stream (Fire Gleeok head). Other values have identical functions as Walker's misc1.
Something that'll be annoying, though, is the firing animation...

2x2 enemies? Uh, not at the moment.

Will the enemy attibutes' name remain "misc1", "misc2", etc. or they will get some meaningful name, like "fireball type", "fireball speed", etc.?

Also, now can we make a 2X2 enemy if we choose an enemy's type "aquamentus" or such? So, if we edit an already 2X2 enemy, then it remains 2X2, not?

Hmmm... looking more closely at the behaviour of Red Leever, Zora and Red Wizzrobe, it seems that they contain enough subtle differences such that they ought to remain as separate enemy types.

On the upside, today I decided to have some fun by seeing if, by adding a few extra lines, I could implement the Jumping Stalfos of post-1992 fame. The results of this experiment will be available as another misc9 option.

Also, in response to your first question, the default labels for the Misc. Attributes will read thus:
"Firing Pattern"
"Death Pattern"
"D. Pattern Attr. 1"
"D. Pattern Attr. 2" (usually the number of enemies to split into)
"Grow Into Enemy"
"F. Pattern Attribute" (used by Lynels)
"Touch Effect"
"T. Effect Attribute"
"Movement Pattern"
"Special CSet" (used by Blue Leevers)

Will there ever be something like... ENEMY SCRIPTS?


import "std.zh"

enemy script trinexx

void run(trinexx head, trinexx ice, trinexx flame)
{
//here comes the behaviour of the main head plus tiles, CSet
//here comes the behaviour of the ice head plus tiles, CSet
//here comes the behaviour of the flame head plus tiles, CSet
}
WHEN (trinexx ice hp = 0, trinexx flame hp = 0)
{
//here comes the behaviour of the naked trinexx plus tiles, CSet
}

You could say that the enemies are already customizable enough, only items need scripts, but i'd like to see how you make a Trinexx or LttP style Like Like or such... without a horde of tricks, of course.

For Zoras: misc6 will be the Combo Type ID (see the CT numbers in std.zh) on which it can appear (default is 3, water). This will allow easy creation of Sand Zoras and other things.

Some Misc9 options will allow Zoras to move around a bit when surfaced.

Also, I'm going to make a new flag, "Doesn't need to be defeated", which makes the Enemies->Secret and other screen flags ignore that enemy (as Zoras and Bubbles currently are.)