Creating Boss Fights

Apr 14, 2006 at 1:21 AM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Apr 14, 2006
Location:
Posts: 112
I've been looking for a good place to ask this, and this forum seems to be the best fit so far for editor information. Let me know if there's a better place I should be looking for help, and I will gladly move my inqueries there. :(

I have two problems currently with creating boss battles (possible spoilers if you haven't finished the game):



1) With Monster Sue and Monster Misery from the Undead Core battle, if I try to use either of them as bosses, they die after only half the health bar goes down, and they fall off the screen. Being unable to damage them any further, the boss battle never actually ends and so never triggers the concluding script (unlocking the door). Does anyone know a way to fix or get around this, or are they just cases that can't ever be used as their own boss?

2) Multiple enemy boss battles are eluding me big time. I took at look at the Egg Observation Room from later in the game where you fight the Sisters. Not only did the use of <BSL0000, <BOA0020, and <BSL1000 seem nonstandard and confusing to me, but replicating the entities and the code in a different map caused no enemies to show up, not even the Sisters. Other methods I tried to use two enemies as a single boss failed to work either, as one enemy would register all of the hits on the health bar and the other was just an extra annoyance. If anyone has any ideas how to implement something like this, I'd appreciate it.
 
Apr 14, 2006 at 1:31 AM
Senior Member
"Huzzah!"
Join Date: Mar 24, 2006
Location:
Posts: 194
to answer question #1 you have to have flag 0x200 set this makes the bosses invincible unless they refer to an event in the TSC script in witch case they would have the same health that that sprite ordinarily would have according to NPC.tbl

to answer the second question to make 2 enimy's one boss you need to make a flag jump chain where the defete of each enimy adds a link to the chain
 
Apr 14, 2006 at 2:15 AM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Apr 14, 2006
Location:
Posts: 112
I already have the 0x0200 flag set in this case. Do you happen to know what the 0x0100 flag does? I tried setting it as well, and it triggered the end of the battle whenever I came into contact with the boss. Obviously I don't want the battle to end like that, but it does mean that there is some method of ending a boss fight early, if I could just figure out a different means of triggering it.

Edit: A second tangent you have me off searching on is npc.tbl. I could probably (hopefully) make it work if I just increased the hit points in there. Is there any kind of offset/value information for that file like there is for profile.dat?
 
Apr 14, 2006 at 7:43 PM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Apr 14, 2006
Location:
Posts: 112
Update on my efforts in npc.tbl: 050A seems to be the hitpoints value for the Monster Sue sprite. However, she seems to be coded to fall down when she's 499 points away from 0. Normal value of 1000 lets me do 501 points of damage before she falls. If I set the value to 1500, I can do 1001 points of damage before she falls. At 500, I only have to do 1 point of damage. If I set it less than 500, she falls immediately upon spawning. Unfortunately, the game still doesn't count this as being defeated.

There are no values of "499" in the file anywhere, and the four values of "500" don't do anything to this behavior when changed (I suspect they're probably just health values for other bosses). So I'm not entirely sure where "fall down when 500 from death" behavior is stored. That number has to be somewhere.
 
Apr 14, 2006 at 8:46 PM
Senior Member
"Huzzah!"
Join Date: Mar 24, 2006
Location:
Posts: 194
<BSLxxxx run's event xxxx apon the defete of the boss if you want 2 boss fight's in a row you need to have event xxxx be<CNP(boss event):(dust cloud(sprite #)):0000<CNP(boss event):(pickup(sprite #)):0000 & another <BSLyyyy where event yyyy is another event xxxx without the <BSLxxxx
 
Apr 14, 2006 at 8:56 PM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Apr 14, 2006
Location:
Posts: 112
Yeah, my original idea was have damage to either entity reduce the overall boss health meter (like the fight with the Sisters), but the more I play with npc.tbl the more I think the Sisters might just be a single entity, and I'll have to content myself with doing a chain as suggested.
 
Jun 9, 2006 at 1:57 AM
Junior Member
"Wow! The more I drink of this magical beverage, the more games I can play! Wheee!"
Join Date: May 19, 2006
Location:
Posts: 24
You know, an alternate solution to your problem, Shmitz, would be to use Monster Sue as the "attacking" section of the boss, but have a stationary (or not) enemy which is the "weak point" of the boss somewhere, which the player must shoot at and kill in order to defeat the boss. Then, just make Sue invincible, or let the player make it easier for him/herself by killing Sue.

This may not work, depending on plot and whatnot, but it is an easy solution to your problem...
 
Jun 9, 2006 at 2:15 AM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Apr 14, 2006
Location:
Posts: 112
It's not a bad method. However, all other things aside, Sue can't be made invincible. With the 0x0200 flag set, a mob can be made invincible by having an event set that doesn't "kill" the mob. However, Sue (among other entities, of which I don't have a comprehensive list), will "die" before ever actually going through the entirety of her hit points, thus never actually triggering that script event.
 
Jun 9, 2006 at 2:21 AM
Junior Member
"Wow! The more I drink of this magical beverage, the more games I can play! Wheee!"
Join Date: May 19, 2006
Location:
Posts: 24
Wait, what do you mean by "mob?"

Also, what are you talking about with the 0x0200 flag anyway? I'm sorry I made a suggestion without any real idea how to do boss fights, it just seemed viable in my head.
 
Jun 9, 2006 at 6:37 AM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Apr 14, 2006
Location:
Posts: 112
Er, sorry, too much MMORPG playing. Mob = enemy NPC. In this case, game entity.

The 0x0200 flag has to be set for an entity in order for it to perform anything but it's standard dead event when you've done enough damage to remove all its hit points, and is the only way to make something invincible. It doesn't work with some entities though.
 
Jun 9, 2006 at 9:31 PM
Senior Member
"I, Ikachan. The Life and Documentary of the OrigiNAL SQuiD."
Join Date: Mar 1, 2006
Location: Grasstown
Posts: 155
Age: 39
The 0x2000 flag "Call >EVENT< on action" also makes NPCs invincible (your shots go right through them), but it also makes it so that they can only do damage with projectiles.

After that, there's hacking NPC.tbl
There are a couple flags in there that can make NPCs invulnerable (ala Basil, labyrinth blocks, and Horizontal Press)
 
Jun 10, 2006 at 12:40 AM
Hoxtilicious
"Life begins and ends with Nu."
Join Date: Dec 30, 2005
Location: Germany
Posts: 3218
Age: 32
My father is going to create a NPC Editor maybe!
 
Jun 10, 2006 at 7:31 PM
Junior Member
"Wow! The more I drink of this magical beverage, the more games I can play! Wheee!"
Join Date: May 19, 2006
Location:
Posts: 24
So after you set the 0x200 flag, how do you... get rid of the entity after it "dies?" With an event? If yes, how do you call an event like that?
 
Jun 15, 2006 at 3:21 PM
Junior Member
"Wow! The more I drink of this magical beverage, the more games I can play! Wheee!"
Join Date: May 19, 2006
Location:
Posts: 24
Um...
I looked at slot 050A in a hex editor. The value stored there is E8. That translates to 232 in hexidecimal, right?

I thought you said those were Monster Sue's hit points. If she's coded to fall at 499, how is that possible?
 
Jun 15, 2006 at 7:43 PM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Apr 14, 2006
Location:
Posts: 112
It's actually E8 03, since it's a two byte value. Think of it as the second number times 256, plus the first number, which would be (3 x 256) + 232, or 1000.
 
Jun 15, 2006 at 10:47 PM
Junior Member
"Wow! The more I drink of this magical beverage, the more games I can play! Wheee!"
Join Date: May 19, 2006
Location:
Posts: 24
So the second byte comes first? Does that apply with three byte values too, that the third comes first?

And how do I tell if it's a two byte value anyway?
 
Jun 16, 2006 at 5:23 PM
Junior Member
"Fresh from the Bakery"
Join Date: Jan 28, 2006
Location:
Posts: 10
It will be a two-byte value if the first byte alone makes no sense. This case, for example. And yes, it's (almost?) always going to be backwards.

Pixel also seems to have used two bytes for most things, even if the value was never going to exceed 255. Weapon ammo and character hitpoints come to mind. This could be a failsafe against overflow kept in from early testing, or maybe it's something else.
 
Jun 18, 2006 at 6:04 PM
The Bartender
"All your forum are belong to us!"
Join Date: Jun 18, 2006
Location: Montreal, Canada
Posts: 581
Age: 39
Daka no Oni said:
So the second byte comes first? Does that apply with three byte values too, that the third comes first?

And how do I tell if it's a two byte value anyway?
The order of the bytes is based on wether they're on a big endian or little endian platform. Macs use big endian, PCs use little endian.

235,695, in big endian: 0x00 0x03 0x98 0xAF
235,695, in little endian: 0xAF 0x98 0x03 0x00

There is no such thing as a native 3 byte type. Typical sizes are 1, 2, 4, and 8 bytes. While it is possible to programatically create 3 byte values, or other sizes, it's unlikely to occure unless the programmer specifically wanted to do it. It's inefficient (processors don't work with this natively so it would have to be converted to 32 bit either way to be used) but could occure when trying to compress data.

The reason why 8bit values are stored as 16bit values could be so data could be read with a standard format. Ie, a function in the code could be called to read 26 "units", where each unit is a 16bit integer value. If 8bit and 16bit values were mixed together, it would mean having to work with a custom format instead of a nice, simple function to do everything in one operation.
 
Jun 18, 2006 at 11:42 PM
Senior Member
"I, Ikachan. The Life and Documentary of the OrigiNAL SQuiD."
Join Date: Mar 1, 2006
Location: Grasstown
Posts: 155
Age: 39
RuneLancer said:
There is no such thing as a native 3 byte type. Typical sizes are 1, 2, 4, and 8 bytes. While it is possible to programatically create 3 byte values, or other sizes, it's unlikely to occure unless the programmer specifically wanted to do it. It's inefficient (processors don't work with this natively so it would have to be converted to 32 bit either way to be used) but could occure when trying to compress data.

Actually, there is a line of processors (I believe it has been discontinued), which has native support for 24bit data values. I can't recall the name of it, but I found reference to it in the NASM manual.
 
Jun 19, 2006 at 3:00 AM
The Bartender
"All your forum are belong to us!"
Join Date: Jun 18, 2006
Location: Montreal, Canada
Posts: 581
Age: 39
upthorn said:
Actually, there is a line of processors (I believe it has been discontinued), which has native support for 24bit data values. I can't recall the name of it, but I found reference to it in the NASM manual.
Definately. Some older processors, in fact, had very unsual native bus widths (7bits, for instance.) However, I meant PC/Mac architectures. ;) Not only that, but the native types in most programming languages are 8/16/32 bits.
 
Top