Jump to content

Photo

Zodiac, Story of the Guardian


  • Please log in to reply
899 replies to this topic

#526 newstarshipsmell

newstarshipsmell

    Musky Pawgazer

  • Members
  • Location:Skure, Dezoris

Posted 16 March 2015 - 03:33 AM

Demo 454

Taurus: Mini volcanoes - Shooting them with the Ice Beam generates a cube, but doesn't freeze them. Trapping them between a wall and a cube, or two cubes, will cause them to stop moving. When one or both cubes melt, they remain stationary (until shot/damaged, when they'll resume moving.)

Ice Beam: Haven't seen how it works with the custom enemies yet, obviously, but I'll ask anyways:
When you freeze a TLOZ enemy, it aligns to the nearest whole tile (or the one it's moving onto when frozen? Not sure.) Is it possible to have the custom enemies (that are 1x1 tiles) freeze to the nearest 2x2 set of quarter-tiles? If so, can this be done with the TLOZ enemies as well? Would it be too much of a hassle to be worth implementing? It would look better, but probably have a minimal impact on gameplay/value.

Taurus 07: These fireball enemies:
uftAEgK.png
I mentioned them last post. Correction: They will only spawn on subsequent room loads if none of them were killed on previous visits. Killing even one causes none to spawn in that room on subsequent visits. And I was wrong about them coming back later - F6/dying, Continuing or Saving, leaving/returning to Taurus - none of that brings them back. Gone for good, apparently.

Taurus 07: This room layout seems to require freezing one of the fireballs to reach the ledge on the right side - so obviously it's really easy to permanently ruin that by killing them all or leaving/returning after killing one. Luckily, you can simply damage-boost off the lava up to the ledge... But this probably isn't what you want to force non-ZC players to figure out, I'd guess.

Taurus 2D: Could you move the fireball to the left side of that block? It's really aggravating to keep hitting it when you fall down from above and get knocked into the lava and have to start over.

Taurus 2D/1D/2C/1C: It's still really tedious waiting for the fliers to occasionally line up where you can freeze them in a useful position, while trying to avoid getting knocked out of place and constantly taking damage. If you're doing custom enemies here, I'd maybe suggest replacing them with enemies that either fly in small circles or coded to remember where they spawned, and not fly farther than X tiles away from it - and hardcode their spawn locations, so some of them set up your jumps. The setup in 1D was so frustrating, I finally gave up trying to freeze an enemy there, jumped over to the little ledge in 1C, and froze an enemy just above the ledge so I could dash/double-jump up to the ledge in 1D.

Taurus 08: Pretty sure that Iron "died" well before I exhausted his lifemeters.
Also, he guesses that you've tapped into the Zodiac Weapon program. Does he say that if you haven't gained any ZWs yet?

Wall Cling Boots: The ceiling cling bug is still present. I have only seen it happen after gaining the WCBs. I can't tell whether it only happens when you're slightly inside the wall or entirely outside it, or both, but if you drop off a ledge and hold against it near the bottom, sometimes you'll time it right and slide sideways along the bottom.

Once you gain the WCBs, you can once again chain infinite jumps along a wall if you are partially inside it, either by falling into it from a top corner, or jumping up into it from below a bottom corner. (You cannot chain jumps without WCBs.)

If you are partially inside the wall, holding against it will display the clinging graphic, but you will slide down the wall. When you reach the bottom, you will stop, and hang onto the corner. So you still have to press away from the wall and back against it quickly to latch on, when you hit a wall on its top corner and end up partially inside it.

So, none of this would seem to present any sequence-breaking issues - since chaining jumps up along the wall is virtually the same as jumping/clinging over and over. But it still looks/handles buggy.

Edited by newstarshipsmell, 16 March 2015 - 04:27 AM.


#527 C-Dawg

C-Dawg

    Magus

  • Members

Posted 16 March 2015 - 10:52 PM

Finished updating enemies through Libra and second trip to Leo, working on Virgo.  Hooray for enormously time-consuming updates on the project!  This nonsense will EASILY take me until the end of March to finish.  


  • Air Luigi likes this

#528 newstarshipsmell

newstarshipsmell

    Musky Pawgazer

  • Members
  • Location:Skure, Dezoris

Posted 17 March 2015 - 05:55 PM

Demo 454

Scorpio 0C: Destructible sandblocks do not have explosion graphics - they just vanish.

Libra: These rooms have ice blocks that aren't slippery: 50, 51, 52, 53, 54, 60, 63, 64, 72, 73, 74.

Libra 50: This side-warp is still messed up. I know I joked about leaving it as-is, since it does not lead to any F6 traps, and you can still reach the Libra boss, so I'm just reminding you in case you'd meant to fix it. You must face down while falling into the bombed hole to warp into 60; facing up warps to the top of 50, and facing left/right warps to the right/left-most column on the 2nd-from-bottom row of 50, allowing player to either walk out into 50 or scroll the screen into 70/71 loop (can walk out into warp tile in 71, warp to 22) or scroll the screen into 50, then 50/51 loop (can walk out in 51.)

Libra 25: Inside the cave, the yellow custom enemies do not take damage, apparently. And like the other older custom enemies (mostly in ?????) they generate their death explosion sound when they spawn.

Leo 18: This wind machine still "dies" without dying. Gives explosion sound when drained of HP, but sprite remains/applies wind.

Leo 33: There's bombable secrets on the upper-right and lower-left corners - bombing the upper-right one first causes the lower-left one to be destroyed upon re-entering the room (and presumably vice versa.) Since you changed this (from non-permanent bombable combos) to prevent the lower-left path from becoming an F6 trap, I'd say turn the upper-right one into a walkable wall combo - unless you can make the lower-left ones permanent-stay-bombed and have the upper-right one reset, without interfering with each other. Dunno if that's possible?

Aries 35: Warping here from Leo does not set a Continue Point.

Scorpio 08: There's no enemies in here, but I could've sworn there were earlier, same demo. Guessing this is another example of permanently disappearing enemies if you kill any/all of them.

Super Missiles: The purple core is still falling out of the ceiling when shot upwards - but sticks to walls when struck.

Taurus 79: This corridor is still displaying enemies that remain in place, do nothing, and either linger for a really long time, or disappear after a short bit. One of the frozen enemy sprites was the center 16x16 sprite for the 3x1 tile planes that shoot bombs/missiles at you.
The intro sequence is on a normal screen, unlike all the other corridors - instead of being framed by a black border, there is a menu on top and you fly up and over it. (The exit sequence works normally.)
There is no siren prior to the boss fight, and it warps to his fight abruptly while you're still fighing enemies, right after they've appeared.
The boss turns into alphanumeric combos when he dies.
The corridor exit warp to 79 does not set a Continue Point.

Hook Points: They look kind of silly when there's nothing above them. I'd recommend adding more tiles, with them rotated 90, 180, 270 degrees, so they can be "mounted" to walls and floors, and go back and adjust them as necessary to not look awful.

Libra 37: Bottom snowman runs across 3 tiles of empty air.

Virgo 79: This corridor does not set a Continue Point after beating it.
The larger eyeball bomb-spitting enemies wander off the side of the screen. Their center sprite also frequently is off color, and stands out when they flash from damage.
The bombs that drift in from the sides - depending on how close to the top of the screen they are when destroyed, they will either not generate any spores at all, or they will only generate the spores that spread below them (when they're further from the top but still near it.)
This makes them particularly useless as threats in the boss fight, since his shots trap you on one side or the other; the bombs on the far side don't matter, since they won't come anywhere near you, and the bombs on your side are trivial, since you'll most likely be shooting/destroying them as soon as they appear, while they'res still at the top row and generate no spores.

Virgo 5D/5E: There's a half-tile of bubbles on the floor in 5D, and nothing in 5E, so you walk into them and get stuck going left, and have to jump out of them.

Virgo 3C: New collision makes jumping on top of the bubble on bottom tedious, from the right - the ceiling half-tile hanging bubbles get in the way and you have to jump at least three times to get on top of it.

Virgo 44: F6 trap. Defeated boss without cheating. Boss died. Remained in boss room - did not warp back to Labyrinth room. Tried jumping all over the place in there before giving up and F6/Continuing. Noclipped back to 43 and entered 44. Boss did not reappear, and was able to acquire Stomp Boots.

Scorpio 1A: This entrance does not set a Continue Point when warping back from Virgo.

Pisces 59: More half-tile/custom-spawn issues. Left not-so-bad/right totally-ridiculous:
KtJYwO8.png|Cv5voxr.png

Both Aries/Leo entrances and Gemini/Taurus, Cancer/Libra, Scorpio/Virgo and Pisces/Capricorn warps function properly / do not bug up like the Capricorn/Aries warp does.

Edited by newstarshipsmell, 18 March 2015 - 06:15 AM.


#529 C-Dawg

C-Dawg

    Magus

  • Members

Posted 18 March 2015 - 11:06 PM

Work giving birth to horrible things in Virgo continues apace...



#530 newstarshipsmell

newstarshipsmell

    Musky Pawgazer

  • Members
  • Location:Skure, Dezoris

Posted 19 March 2015 - 03:28 AM

Demo 454

Capricorn 6C: Still seems impossible to enter the gap on the right side due to the vortex.

Capricorn 4A: There's gaps in the pipes on the lower-left side. Were these meant to be filled with destructible or walkable pipe combos?

Capricorn 3A: Custom enemy still has miscolored lower-right tile. And he's one of the old custom enemies that still plays his death sound when the room loads.

Capricorn 55-25: Shortcut. It is possible to jump up on top of the pipes in 45 from below (allowing you to reach 34/door and 23/item without descending from 25 later.) It is then possible to double-jump up and wall-cling/jump on top of the small pipe on the left in 35. Then you can quickly jump up/wall-cling through the blades, up into 25, and dash-jump across to the pipe on the right, and reach the switch in 14 - bypassing the entire route from 65 to 26.

Capricorn 0B: Occasionally the laser drone will spawn in the upper-right corner, at a shallow angle, and move into the right-most pipe before emerging from the ceiling, so it's collision code doesn't bounce it back into the room and it skips town.

Capricorn 4E:
Spoiler


Anti-Gravity Device: This thing has a few bugs, and I believe it's impossible to reach the Capricorn boss, due to/since the collision code revision.

It's still possible to move left/right while using it by dashing. Of course, this burns through your energy that much faster - not complaining, just reminding you.

It would appear that the presence of a solid combo directly above and to the right will block you from ascending while perfectly aligned on a column. So for instance, in Capricorn 74, if you jump up on the top/right-most bubble and are flush against the blocks to the right, pressing the AGD will animate the graphic and you'll remain in place. The same thing will happen if you jump straight up and press it - you'll hang in mid-air with the graphic animating.

As a result, you cannot use AGD to ascend through 1-combo-wide gaps, even when you are perfectly aligned on the column. (Using R to adjust your horizontal position does not let you slide up slightly offset to the left, either. The left wall blocks you, apparently)

This means than in Capricorn 64, you cannot ascend through the gap to reach the switch, which opens the path to the Zodiac boss in Capricorn 5C. If I release the AGD directly underneath the gap, I cannot double-jump at all, much less up into the gap above. (Probably affects Capricorn 12 as well? Though I think you can double-jump there.) ETA: Okay, this doesn't prevent you from getting up there - it's possible to dash/jump from the wall below and cling inside the gap... it just requires patience/persistence. It also frequently triggers ceiling slides. But eventually you'll end up clinging inside the gap, and can then jump up and shoot the switch.

The detection for walls above/left seems messed up too - it won't block you from ascending, but if you ascend while holding left against a wall - either walking into it on the ground, or wall-clinging above the ground - and then release the AGD, frequently, you will warp back to the spot you began ascending from, rather than dropping from where you released the AGD. I'm not sure, but this doesn't seem to matter whether you are flush against the wall or partially inside it, it happens either way. Sometimes, you'll drop from where you should drop, rather than warping below - I'm not sure when/why.

Capricorn 6D: Inside the cave room - which I can only reach by noclipping - the upper room lacks gravity.

Cancer Splatter: When I picked this up (I was carrying the Aires Saber prior) my shots appeared as black silhouettes mostly invisible against the background - and completely hidden by overlay effects. The charged shot, and the splatters caused by the regular shots, both worked normally / were visible. Once I reached Libra, the shots began appearing normally. Backtracking into Cancer, and they looked normal as well.

Also, due to how it arcs sideways / detects collision, it splatters immediately in front of you if fired inside a horizonal passage 1 tile high. No biggie, just pointing it out.

Libra 45: Hmmm... didn't notice this before, but if you're holding left/right while walking over 1-tile holes on slippery ice, you'll fall into the hole. If you press/release left/right and just slide, you'll slide right over the holes. Is this intentional?

Libra Crystal: The charged shot forms the platform directly in front of/on top of you. This forces you to waste a second walking backwards out of it before you can jump up on top of it. Suggest having it form a tile farther away from you.

Edited by newstarshipsmell, 21 March 2015 - 06:08 PM.


#531 C-Dawg

C-Dawg

    Magus

  • Members

Posted 19 March 2015 - 10:05 PM

Whew.  Virgo was kind of a beast because, unlike the first bunch of zones, pretty much the whole Zone is available when you get there.  So, I have to make three times as many enemies as usual to get past it.  But!  We're done now.  Virgo is updated.  Now I'm actually going to start fixing all your bug reports, Starship bro!  

 

EDIT: Okay, I think I got your last two pages' worth:

 
Libra Charged shot block spawns further away.
Cancer CSet issue fixed.
Capricorn 6C made easy to pass
Capricorn 6D room secret gravity fixed
Adjusted AGD to detect collisions more like normal jumping does
Added a block to Capricorn 74 to help you line up with gap above
You now hold up AGD
Fixed light fixture in Mo's lab
Text fixed in Mo's lab
Shortcut at Cap 24-25 fixed.  Im all for shortcuts, but this one'd be a doozy.
Cap 4A layer fixed
Pieces 59 redesigned to reduce weirdness
Fixed boss warp at Virgo 44 for the last time (I HOPE)
Virgo 3c fixed problem with jump
Virgo 5d/5e bubbles fixed
All non-scripted flurries should be gone now
Bottom of Taurus - moved hooks around so they're hanging
Tweaked Super Missile secondary explosion to spawn a little higher; might address problem where it falls out of the ceiling.  Will still fall if it hits enemy.
You missed the enemies at Scorp 08 so much I put one there for you.  Enjoy!
Fixed Leo 24 to modify multiple secrets
Enemies in cave at Libra 25 modified.
Scoprio 0c secret combo fixed.
Added Beam Defender custom enemies to Taurus 1C/1D/2C/2D.  These slowly follow the player,s sort of, so now it should be easier to guide the enemy into the position you need for freezing purposes.
Moved fireball at 2D per request.
Taurus Mini volcanos are gone, so no freezypop problems
Libra 3d snow plowed
Redid Libra 22 to remove warp point destination problems.
Taurus wierdness with fireballs removed.
01 was possible before, but I made it easier.  The huge robot beyond is still there.  Are you a bad enough dude to handle it?
Siege turret passive damage radius drasticalyl reduced
Removed straggler normal LTOZ enemies from Leo
Gemini 5A now accessible again
 
WHAT I DID NOT FIX YET
 
Ice Hole slide OK.
Enemy placement problems for later.
Capricorn 0b for instance
Cap custom enemies are all gonna be replaced next, donna worry.
Virgo -> Scorpio continue point: No idea;  it's an E/R warp.  Should set CP if you continue rather than saving.  Saving should put you back at Scorpio 0.0.  Same with Leo->Aries.
Corridor bugs - will do these after enemies and bosses are all updated in Labyrinth.
Leo wind machines are all dead now, replaced with more horrible things.
Warp at Libra 50 - Yeah, this is a difficult fix to make because I can't wrest control of how Sidescrolling works for Zquest and, when going down, the player in this game doesn't have to be looking down.  Will look into it later.
Libra rooms with ice blocks that are not slippery need to wait for me to update how the slip script works to look at combos instead of flags.
WCB bug.  This will take more brain cells than I have tonight, so will save for later.
ice beam - not sure what you mean by freezing 2x2; thats what Libra does.  Its kind of a pain to do this with every enemy, as they block progress.
Remainder of Libra will have custom enemies eventually.  No worry about enemy placement now.
Libra 44 - Why not put a hook there?
Libra 24 yeah, they don't freeze.  Will make some new combos that show explosion but also freeze down the road.  I'd never get them to combo cycle lined up correctly unless I re-scripted the whole way the freeze statutes work, and that's not a bad idea, but not at the moment.  Will tackle it later.  Could use a cool "ice block" effect covering the screen like the Absolute Zero attack in FF3.
Libra 33 secret is all good.
Gemini Beam - it does fire in the same direction as you... do you want it to change directions as the player does?  I dunno if that's better or worse than the "set and forget" style it has now.  
Pieces is buggy, yes.
Terminals suppressing items - Yeah, I could do that, but this is cosmetic.  On the list for later!
Gemini Zodiac boss - he's getting overhauled at some point.  Remember, I only redid Aquarius and Scorpio so far.
Stun beam doesnt work on custom enemies and Im not sure how to make it do so.
Inventory analysis - newp
Aries 2C is due for overhaul.  Ditto minibosses in Libra, Taurus, and Virgo.
"so you get a slight breather before the boss that kills you near-instantly on your first attempt in the next room."  Well, pay attention

 

Okie, gonna check a few things and then upload new version.

 

EDIT2:?@#$!@#$!@#$! something I did now stopped all custom enemies from working, This might take a minute.


Edited by C-Dawg, 19 March 2015 - 11:27 PM.

  • newstarshipsmell likes this

#532 newstarshipsmell

newstarshipsmell

    Musky Pawgazer

  • Members
  • Location:Skure, Dezoris

Posted 19 March 2015 - 11:42 PM

Libra Crystal: The regular shots bounce around near-stationary in 1-tile high horizontal passages.

While the sideways shots give each bullet a unique angle, the up/down shots have side shots with identical angles, and center shots with no deviation from straight up/down (none of the sideways shots go exactly sideways.) Suggest having the up/down center shot angled slightly off-vertical so it doesn't just bounce up/down, and making the side shots angled slightly differently from each other - otherwise, when fired standing next to a wall, one immediately bounces, and the side shots take the same identical trajectory.

You know I hate this weapon anyways, so don't fix this stuff on my account, heh. Just pointing it out in case the observations/suggestions make sense to you.

Taurus Flame: I haven't noticed the circling fireballs in Taurus messing up any other Zodiac Weapons - but I haven't really tried to experiment with others besides the Gemini Beam. The Flame is working mostly normally around them, but sometimes, if I jump/land on a block, then turn to face a fireball approaching behind me, and fire, my shot will angle slightly behind me and go up, instead of normal. Pretty sure this is only happening in proximity to the fireballs, but I could be wrong. ETA: Probably fixed if you removed/replaced the fireballs in your pending demo, so they don't interfere with any ZWs like they did before. Should I bother returning and testing the other weapons, or assume they can't get fucked up now?

Virgo 54: Boss has no lifemeter - is this because he has six different hitboxes? You could still have one lifemeter, that adds up to the total HP for all six, couldn't you? Also, his explosion is a bunch of incorrect random combo tiles.

Leo 55: The electric beam still has its top combo offset a half-tile to the right:
ADV6A3l.png

Leo 4A/4B/4C/1A/0A/0B: These rooms all have the older TLOZ versions of the robot enemies. Never mind, obviously. Just finished reading your previous post.

Leo 2A/3A/4C: Custom enemies which generate their death sound upon room load.

Leo 1B: Cave room recharge station works properly, except the animated energy field does not appear after purchasing it.

Capricorn 2B/2C/3C: The bubble combos on these screens are the kind that are walkable upon room load and quickly expand to unwalkable combos. So you can fall into the one in 3C and get stuck, or jump up into the one in 2C and get stuck - though obviously you can walk out of either one.

Capricorn 7F: The ZW platform does not have an animated energy field like the others do.

Capricorn 49: The warp gate has a short animated energy field above it - the rest have a field that extends through all the empty combos above it.

????? 3A: The squid enemy is missing its upper-left tile.

?????: All these 2x2 custom enemies are still generating their death sounds upon room loads. Also, there's fireball enemies in here that die permanently, like in Taurus.

Capricorn 4E:
Spoiler


Looking forward to the next demo. Maybe if I'm really fast I can finish this one before it's uploaded. Heh.

Edited by newstarshipsmell, 21 March 2015 - 06:09 PM.


#533 C-Dawg

C-Dawg

    Magus

  • Members

Posted 19 March 2015 - 11:57 PM

I give up for the night.  I have no idea what I did, but not a single custom enemy is functioning anymore.  Waaarrrrrrgggghhhllllll....

 

EDIT: I lied, I looked the code again, added some debug routines and... I have no friggin idea what is going on.  The code enters a while loop it only can do while the ghosted enemy's HP is above 100 and prints a string.  Then it immediately leaves the loop as though the enemy's health dropped even though there is no freak'n damage being dealt.  Then, the game displays the string noting it's reached the part of the code where it's supposed to set ghosted_eneny's hp to 0, and it doesn't even do that.  It's like it lost track of the ghosted_enemy somewhere along the way.  Here's a code snippet show whats going on (all enemy types except one have been removed to make it pastable:

 

All debug strings here display; and they all do so IMMEDIATELY, in succession.

// --------------------------
// General Side-Scrolling Creature Script
//
// People didn't like the original TLOZ enemies.
// So, for some -- but not all -- of the enemies,
// let's make some custom enemies.
// This script contains the lines and blocking for 
// an FFC to begin acting like a custom enemy.
// All you need to do to set it up is make sure that
// the Ax variable is loaded with the creature type.
// Why Ax instead of variables?  Because you can use 
// another script to assign Ax on the fly.  
//
// (User defined in script)
//
// c_enemy_tiles = start of the tile pages making up
// the enemy graphics.  All tiles used here are just 
// offsets from here.
//
// c_enemy_damage = start of seven combos, indexed
// at 0 to 6, that determine how much damage the
// enemy does.  From 1/2 heart to 32 hearts.
// 
// (Passed by ZClassic or another script)
//
// Ax = The type of the enemy
// -----------------------------
 
ffc script general_sidescrolling_enemy{
 
// User-defined tile and combos.
int c_enemy_tiles = 43940;
int c_enemy_damage = 4688;
 
// can't return an array, I don't think.
// So use these in lieu of passing variables.
int spawn_x = -32;
int spawn_y = -32;
 
// -------------------------
// Active lines and blocking
// -------------------------
void run(){
 
// ---------------------
// Initial setup, common for all different creature types.
// ---------------------
 
// Create a ghost enemy.
npc ghosted_enemy = Screen->CreateNPC(85);
 
Screen->Message(320); // debug
Waitframe();
 
ghosted_enemy->HP = 999;
 
// Determine creature type
int creature_type = this->Ax;
this->Ax = 0;
 
// Counters used to script lines.
int state = 0;
int state_counter = 0;
int action_counter = 0;
int anim_counter = 0;
int delay_counter = 0;
int i;
 
// Variables used to arrange blocking.
int target_x;
int target_y;
 
// This boss needs to have a period of invulnerability, just like the player does.
// This counter tracks that.
int invul_counter = 0;
int damage_anim_counter = 0;
int last_hp = ghosted_enemy->HP;
 
// FFCs used to damage the player when too close 
 
ffc damage_combo;
int damage_combo_number = get_blank_FFC();
 
if(damage_combo_number>2){
 
Screen->Message(335); // debug
Waitframe();
 
damage_combo = Screen->LoadFFC(damage_combo_number);
damage_combo->Data = c_enemy_damage;
damage_combo->X = -16;
damage_combo->Y = -16;
}else{
// If you don't have enough room for this creature and a damage combo, just
// kill it off.  Otherwise, lord knows what would happen.
ghosted_enemy->HP = 0;
}
 
// Used to calculate angles for projectiles
int angle;
int xStep;
int yStep;
 
if ( creature_type == 1){
 
Screen->Message(336); // debug
// PHEAG
 
//Pheag's HP, damage level, and variables.
 
ghosted_enemy->HP = 102;
last_hp = ghosted_enemy->HP;
ghosted_enemy->Damage = 1;
ghosted_enemy->ItemSet = 1;
 
int damage = 0;
 
int dir = 0; // Direction the Pheag is moving.
// 0 - N, 1 - S, 2 - W, 3 - E
 
int speed = 0.2;
 
// Choose a place to spawn Pheag
 
find_spawn(creature_type);
this->X = spawn_x;
this->Y = spawn_y;
 
// PHEAG BEHAVIOR
 
while(ghosted_enemy->HP>100){
 
Screen->Message(337); // debug
 
// Move damage combo out of the way unless in use.
damage_combo->X = -16;
damage_combo->Y = -16;
 
// Implement freeze ray
affected_by_freeze_ray(this, ghosted_enemy, creature_type, ghosted_enemy->HP, 102, damage_combo_number, this->X, this->Y, dir);
 
// -----------------
// This enemy reacts to gravity.
// -----------------
 
if(
(canMove(this->X+8, this->Y+16+this->Vy))||
(this->Y>152) // allow it to fall off the screen
){
this->Vy = this->Vy+0.2;
if(this->Vy>2){ this->Vy = this->Vy+0.2; }
}else{
this->Vy = 0;
}
 
if(
((this->Vy < 0)&&(!canMove(this->X+8,this->Y-1)))
){
this->Vy = 0;
}
 
// State 0 - Choose a direction at random.
if (state == 0){
 
if(Rand(12)<6){dir=0;}else{dir=1;}
state = 1;
}
 
// State 1 - Marching back and forth, falls off platforms.
if (state == 1){
 
delay_counter++;
if(delay_counter>=6){
anim_counter++;
if(anim_counter>3){anim_counter=0;}
delay_counter = 0;
}
 
if(invul_counter>0){
invul_counter--;
ghosted_enemy->X = -16;
ghosted_enemy->Y = -16;
draw_creature(creature_type, anim_counter, damage_combo_number, true, this->X, this->Y, dir);
} else {
ghosted_enemy->X = this->X;
ghosted_enemy->Y = this->Y;
draw_creature(creature_type, anim_counter, damage_combo_number, false, this->X, this->Y, dir);
}
 
if(dir == 0){
this->Vx = -speed;
if( !canMove(this->X-1,this->Y+8) ){
dir = 1;
this->Vx = 0;
}
}
if(dir == 1){
this->Vx = speed;
if( !canMove(this->X+16,this->Y+8) ){
dir = 0;
this->Vx = 0;
}
}
 
}
 
Waitframe();
if(ghosted_enemy->HP<last_hp){invul_counter = 30;}
last_hp = ghosted_enemy->HP;
 
} // end of while loop
 
Screen->Message(926); // debug
Waitframe();
 
} // end of Pheag
 
// OTHER ENEMY TYPES GO HERE.
 
// ---------------------------------
// DEATH ANIMATION
// ---------------------------------
 
Screen->Message(927); // debug
Waitframe();
 
damage_combo->X = -16;
damage_combo->Y = -16;
damage_combo->Data = 0;
ghosted_enemy->HP = 0;
this->Data = 1;
this->X = -32;
this->Y = -32;
 
} // end of void run, active lines and blocking

Findspawn and Draw_Creature have been omitted because they're huge.

// -------------------------
// This function looks for an FFC with Data == 0,
// and returns the index for it if it finds one.
// Returns -1 if all FFCs are in use.
// -------------------------
int get_blank_FFC(){
 
int i;
ffc current_ffc;
 
for(i = 2; i <= 26; i++){
 
current_ffc = Screen->LoadFFC(i);;
if(current_ffc->Data==0){
return i;
}
} 
 
return -1;
 
} // end of get_damage_FFC
 
 
// -------------------------
// This function checks and X and Y coordinate to see
// if it is walkable.
// -------------------------
bool is_walkable(int x, int y)
{
if(x<0 || x>240 || y<0 || y>160)
{
return false;
}
 
return Screen->ComboS[y+(x>>4)]==0;
}
 
// This function checks to see if the player is within a certain square on the screen. 
// If she is, then it returns true.  If not, false.
// The code expects x1 and y1 to be the upper left corner of the square to check and x2 and y2 to be lower right corner.
 
bool is_player_in_zone(int x1, int y1, int x2, int y2){
 
if( (Link->X+13 >= x1) &&
(Link->X+2 <= x2) &&
(Link->Y+13 >= y1) &&
(Link->Y+2 <= y2)
){ 
return (true);
}else{
return (false);
}
 
} // end of damage_zone
 
// -------------------------
// This function implements the freeze ray
// on custom enemies.
// If the enemy is at less than 20 hit points,
// or less than 50% of its health, whichever
// is lower, then it will freeze when struck by the
// freeze ray and stop for a period of time.
// The Freeze Ray script itself should take care
// of actually creating the frozen block.  We just need to draw
// the creature on top of it.
// -------------------------
 
void affected_by_freeze_ray(ffc this, npc this_npc, int creature_type, int hit_points, int max_hit_points,int damage_combo_number,int x,int y, int dir){
 
int beam_animation = 1660; // Combo of the combo used by the ice beam in motion.
ffc ice_ffc = Screen->LoadFFC(32); // Hard-coded to use FFC 32.
 
int frozen_counter = 0; 
 
// Check for impact
if((ice_ffc->Data==beam_animation)&&(frozen_counter==0)){
 
if ( (Abs(this_npc->X - ice_ffc->X)<8) && 
(Abs(ice_ffc->Y - this_npc->Y)<8) &&
(
(hit_points<=120) ||
(
(hit_points-100)<((max_hit_points-100)/2)
)
)
){
frozen_counter = 320; 
}
 
} // end of checking for impact
 
while(frozen_counter>0){
 
frozen_counter--;
this->Vx = 0;
this->Vy = 0;
 
draw_creature(creature_type, 99, damage_combo_number, true, x, y, dir);
Waitframe();
 
}
} // end affected_by_freeze_ray
 
 
} // end of ffc script

Edited by C-Dawg, 20 March 2015 - 12:32 AM.


#534 newstarshipsmell

newstarshipsmell

    Musky Pawgazer

  • Members
  • Location:Skure, Dezoris

Posted 20 March 2015 - 01:31 PM

Any luck yet fixing the enemies?

Demo 454

Libra: If you press Up in front of a door as one of the wizzrobes' warps hits you, instead of being warped by the wizzrobe, you warp through the door, and turn black on the other side. You remain effectively invisible across door warps, level entrance warps, warping via moving and stationary warp tiles. The only ways I found to revert back to a visible sprite are a) F6/death or b) getting struck and warped by a subsequent wizzrobe warp projectile.

Dr. Mo:
Spoiler


Taurus 4D: If you don't bust open the floor here earlier, you can come in through the warp and end up frustrated that you can't proceed up from 5D below - as the destructible blocks are on the bottom row and you immediately bounce off them before you can fire. Suggest moving the floor up a row, so you can jump up from below and shoot it with missiles.

Edited by newstarshipsmell, 21 March 2015 - 06:10 PM.


#535 C-Dawg

C-Dawg

    Magus

  • Members

Posted 20 March 2015 - 05:42 PM

I think I figured it out - SIZE. Zelda Classic has a size limit for how long an FFC script can be, it appears! Once the script handling my custom enemies gets too long, it loses its mind and won't run. I think. So I can fix this by splitting them into different scripts. Gonna try that out and upload if it works.

Done and done. What a strange bug. C-Dawg, breaking engines since 2002!

Edited by C-Dawg, 20 March 2015 - 07:06 PM.

  • Legen Dary likes this

#536 DarkFlameWolf

DarkFlameWolf

    Murana Wolford

  • Members

Posted 20 March 2015 - 07:54 PM

That's awesome C-dawg. Breaking the limits of what ZC can do! Now I'm more excited for the final product than ever~! :tard:



#537 C-Dawg

C-Dawg

    Magus

  • Members

Posted 20 March 2015 - 09:47 PM

Heck, play it now.  I need all the input I can get.  It's already more polished that DoY was when I abandoned that fish to the oceans of the general public.  I'm basically doing what Shadowtiger did with that game later myself to make sure it's more than just a long tech demo this time.  



#538 newstarshipsmell

newstarshipsmell

    Musky Pawgazer

  • Members
  • Location:Skure, Dezoris

Posted 20 March 2015 - 11:27 PM

Demo 457

Aquarius 7B/7C: Enemy spawn code is still messed up here.

Aquarius: The hardhat enemies are no longer stationary. They zip across and off the screen on room load, and then zip through again, intermittently, while firing, either horizontally or diagonally (along the angle of their shots.)

Demo 454

Virgo 68: Door warps to upper-left corner of Aquarius 00.

Virgo 6C: Still an F6 trap. If you release R or run out of energy dashing through the combo above, you'll fall down here and end up stuck:
6nHAVNC.png
Make the combo to the right bombable?

Virgo 7B: The Craboor returns after killing it the first time and returning to room, locking you in and forcing a rematch. The other two lame minibosses stay dead. Intentional?

Virgo 0F: Exit music loops.
Both Virgo corridors have those bomb-shooting eyeball enemies that I reported in another area - which wander off the screen promptly, and whose central tiles damage-flash badly. They clash even more in these corridors.

Missiles: Strange. I can see in a previous screenshot that I had at least 275 missiles max. I just noticed it's dropped to 49 max. I'm playing with the Cheat > Link Data menu, and whenever I change my max total above 255, close and reopen it, it's subtracted 256 from my max, but not affected my current total. Not sure how I managed to accrue 275 missiles previously. I did not use the cheat menu to mess with my missile max prior to noticing this, so I assume that picking up additional Missile Upgrades triggered a rollback. Hopefully you can fix that/extend the max, since going through the entire game counting missile upgrades and removing extraneous ones seems rather tedious.
ETA: It seems like this "bug" probably only happens when using the cheat menu and opening the Link Data menu. After discovering this earlier, I set my max to 255.
I gained another missile upgrade, and my total rose to 260. I opened the inventory window and it showed 4 for both Start and Max. As soon as I closed the window, my current total changed to 4, instead of 260. Naturally, drops and recharge stations would only replenish it up to 4.
I set it to 255 again, and upon gaining my next missile upgrade, verified that I can deplete my current total and replenish it via drops/recharge stations to the full 260, rather than 4. I F6/Continued, then Saved and resumed to be sure. So, you can probably disregard the above.

Grapple Beam 2: It latches onto the edges of the screen as well as any combos. Is it supposed to?

Spin Attack: It's still causing combos (both filled/unwalkable as well as empty/walkable) adjacent to spin attack combos to explode with them when you spin attack them:
t8IDm5C.png|JypmOvB.png
Also, you still continue to generate the spin attack graphic indefinitely after double-jumping and wall-clinging.

Capricorn 67/0F: Extreme CS mismatches in the corridors. 67 Boss explodes into numbers. 67 Exit warp music loops.

Libra 0D: Corridor prize was the Energy Dynamo 3 - I only had level 1 prior to that. Where is the level 2 Energy Dynamo?

Iron/Corridor completion:
Spoiler


Capricorn 4E: Despite the fact that
Spoiler


Capricorn 4D: When you F6/die and Continue here, Iron appears briefly on the right before disappearing,
Spoiler


Leo 00: Final corridor boss has way more health than his meters reflect - looked like I wasn't doing any damage at all for a minute.

Iron: This may be inconsequential,
Spoiler


Final shooter level:
Spoiler


Pro-tip: Don't feel like playing the final shooter level, because it's too hard? No problem!
Spoiler


Spoiler


Cancer Splatter/Zodiac Changer: When you cycle through the ZWs to the Cancer Splatter, it once again fires pitch black shots. The splatters they generate still display normally.

Pandora: The shield boss that returns here - its sprite doesn't disappear when you kill it. Just sits there, doing nothing.

Well C-Dawg, if you weren't already aware of this, it should amuse you to no end.
Spoiler


Also, I saw
Spoiler

Edited by newstarshipsmell, 21 March 2015 - 06:06 PM.


#539 Gleeok

Gleeok

    It's dangerous to dough alone, bake this.

  • Members
  • Real Name:Pillsbury
  • Location:Magical Land of Dough

Posted 21 March 2015 - 12:29 AM

I think I figured it out - SIZE. Zelda Classic has a size limit for how long an FFC script can be, it appears! Once the script handling my custom enemies gets too long, it loses its mind and won't run. I think. So I can fix this by splitting them into different scripts. Gonna try that out and upload if it works.

Done and done. What a strange bug. C-Dawg, breaking engines since 2002!

I lol'd.

Ha! That same thing happened to me when I was making Grikarugun. :P

Problem with that is you have to make sure that you only spawn enemies of a certain type the script can allow for each level. But yeah, the stack size in zc is still fixed atm.

#540 C-Dawg

C-Dawg

    Magus

  • Members

Posted 21 March 2015 - 01:17 PM

I lol'd.

Ha! That same thing happened to me when I was making Grikarugun. :P

Problem with that is you have to make sure that you only spawn enemies of a certain type the script can allow for each level. But yeah, the stack size in zc is still fixed atm.

 

Yeah, I didn't see anywhere in the ZScript documentation suggesting there was a limit.  I'm a sloppy programmer; heck, my entire code is in the buffer, and we're just shy of 100,000 lines of code at this point.  The enemy script is the first time an individual FFC script got long enough to make ZClassic barf, though.  Are there any other size limits I need to be aware of?

 

Fortunately, my method is nimble so I don't have to worry about certain screens or levels for certain enemies.  What I do is have a single script run on each side-scrolling screen that I tell, using it's D0 - D6 fields, which enemies I want to spawn and how many.  It then goes and finds unused FFCs, assigns then a script, tells them what character they're supposed to play, and off they go.  So all I had to do was add a check to the script that sets up the enemies to check whether the enemy ID is above a certain number (52, incidentally; there will probably be 75 - 100 unique custom enemies when all is said and done) and, if it is, it assigns a different enemy script.  Enemies below 52 use 175 or something and those above use 200, that kind of thing.  I'm free to mix and match however I want.

 

 

Well C-Dawg, if you weren't already aware of this, it should amuse you to no end. Some of your custom scripted attacks interfere with how the engine handles the cheat mode invincibility, effectively canceling the immunity to damage while it is still toggled on, and continues to flash your sprite. One must hit I twice to toggle it off and back on to restore it, and it only works against the normal attacks, until another custom attack wrecks it. So I made it to <SPOLIERS>, and despite cheating, ended up sinking two Life Tanks into the fight and beat eight or nine modes and then still died. Most of his modes have an attack that cancels the invincibility (the ones that apply continuous damage and a string of damage counters.) I suppose all the attacks like this (such as the bomb guardian's tail strike) probably have the same effect, and I just didn't notice it before now. Ugh. The peons that can't be assed playtesting this thing and wait for the official version - they can beat this monstrosity legitimately to see the ending, but me... I've played through everything up to the last shooter level four times now. I just want to see the damn ending, already! Heh. *sigh*

 

 

Yes, I am aware of this.  I think what happens is that cheating turns off collision detection, but scripts that don't use ZClassic's internal detection ignore it and hurt you anyway.  It is working as intended, however, and that goes for your frustrating experience with the final boss as well.  It's supposed to be incredibly hard.  Cheap stuff, like him teleporting into you, I will address.  Pisces mode is also a little buggy.  But the general difficulty should be very, very high.

 

P.S. Spoiler, please!  We're buried pretty deep in this thread right now, but there's only so much mystery I can do in NES-style storyelling; let's not spoil the little bit I can! :)


Edited by C-Dawg, 21 March 2015 - 01:21 PM.



1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users