Jump to content

Photo

Mothula and Boss Zora


  • Please log in to reply
21 replies to this topic

#16 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 31 July 2014 - 06:51 PM

First, what I'd suggest is to add a function to your ffc:

 
bool checkOrbits(int enemyID){ 
for ( int i = Screen->NumNPCs(); i > 0; i-- ){
npc e = Screen->LoadNPC(i);
if(e->ID == enemyID){
return true;
}
                else {
                        return false;
       }
         }
}
 

or

 
bool orbitsAlive = true;
bool bossAlive = true;
npc boss; //core
 
       while(orbitsAlive){
       //Run enemy routines here.
              Waitframe();
       }
 
       while(!orbitsAlive && bossAlive) {
       
              if ( boss->HP => 0 ){
                     bossAlive = false;
              }
       //Replace core, and run new routines here.
              Waitframe();
       }
 
       //Instructions to follow boss death.
       this->Data = 0;       
       return;

Edited by ZoriaRPG, 31 July 2014 - 06:52 PM.


#17 Deedee

Deedee

    Bug Frog Dragon Girl

  • Moderators
  • Real Name:Deedee
  • Pronouns:She / Her, They / Them
  • Location:Canada

Posted 31 July 2014 - 07:12 PM

Alright, that sounds about right, but there is still a little extra detail that I don't know how to do:

1st of all: enemy id's. I don't know what the enemy Id's are. never in my history of zquest have I come across any of the enemies' id's. Could you please tell me where I can find each enemies' ID and what the ID for a BS patra eye is? 

2nd, I don't know how to make "Mothula" go from right to left. I think I can make it move in one direction, but I don't know how to make it go in the other direction.

3rd, I don't even know how to make a boss script. Is it global? is it an FFC? If so, How do I place the boss?

4th, I need to know how to send the Mini Patra's after link.

5th, I don't know how to send Mothula itself after link

6th, I still don't know how to make it vulnerable/invulnerable

 

I am really having trouble with this.

 

Edit: One solution could be to create an FFC directly where link is right before a Mini mothulaor the Big Mothula attacks, and have the Mini Mothula's (or Big Mothula) aim there. However, I want them to go past link, and go straight to the edge of the screen, then fly back to the Main Mothula (Or back to where It started the attack before, in the case of the big Mothula). This is really hard...


Edited by Arceus, 31 July 2014 - 07:27 PM.


#18 Lejes

Lejes

    Seeker of Runes

  • Members
  • Location:Flying High Above Monsteropolis

Posted 31 July 2014 - 07:52 PM

1st of all: enemy id's. I don't know what the enemy Id's are. never in my history of zquest have I come across any of the enemies' id's. Could you please tell me where I can find each enemies' ID and what the ID for a BS patra eye is?

You can find those in ZQuest. The enemy ID is the number just below the enemy's picture in the enemy list. Mini Patra isn't on the list, though. You might have to use Trace to find that out, assuming they have their own distinct ID at all.

 

2nd, I don't know how to make "Mothula" go from right to left. I think I can make it move in one direction, but I don't know how to make it go in the other direction.

You'll need a check (if statement) to see when it reaches the edge of the screen. The edges are x == 0 and x == 255, so you could check for either one. Preferably a bit before either edge, since it might look weird to go all the way. You'll need a third variable to tell the enemy whether to go left or right. A boolean will work, if you've read about those. Basically just a value that is either true or false. You could name it "goleft" and have it set as true when the enemy hits the right edge, false when it hits the left. And then use more if statements so that it goes left when true, and right when the variable is false. Since you're not working with velocity yet, the actual moving will be a direct position adjustment, like so:

 

mothula->X = mothula->X + 1 // Moves to the right one pixel every frame.

 

3rd, I don't even know how to make a boss script. Is it global? is it an FFC? If so, How do I place the boss?

 

Enemy scripts are usually FFC scripts. The usual way to do them is to place a dummy enemy with the right graphics of the Other type in the room, and the FFC script in the same room. The script will have a line seeking out the right enemy, assigning a pointer to it, and then do stuff with moving it around, attacking, whatever.

 

4th, I need to know how to send the Mini Patra's after link.

 

This is a little tougher than you'd think. You need vector math/trigonometry to calculate the path. If you can learn to use ghost.zh, though, it has functions that do all the math for you.

 

6th, I still don't know how to make it vulnerable/invulnerable

 

enemy->Defense[] will do that. But you have to set all 18 possible weapon defenses to make it completely invulnerable/vulnerable. You can do that with a loop, but again, ghost.zh has functions to make this easier.



#19 Deedee

Deedee

    Bug Frog Dragon Girl

  • Moderators
  • Real Name:Deedee
  • Pronouns:She / Her, They / Them
  • Location:Canada

Posted 31 July 2014 - 07:59 PM

The problem is, I don't know how to use ghost.zh. Also, Like I said, I could put an fcc where link was when the attack started, but I don't know how to do that. Thanks for your help so far, it has taught me a few thing I did not know about scripting, but could you try to write this for me? I really have no clue on what I am doing.



#20 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 31 July 2014 - 10:43 PM

I can't write it for you before late September. I have too many other commitments, plus normal work, technical, and legal in nature. I'm having difficulty finding time too play Eiyuu, the only game (of any kind) that I've played in over a year, and I'm sotting time for that, for obvious reasons.

 

Notes:

 

You don't need to worry about the enemy ID of the in-built mini patra. You'd be using a custom enemy for orbiting foes, and one (or two, depending on the method) for a core.

 

Edge of screen: Alucard's stdWeapons.zh, and related headers will help with this. In fact, detecting the edge of a screen as a unction was why I had originally postulated stdWeapons.zh, which I set aside, and Alucard took over as project leader, making almost all, if not all of it. There are functions there that are extremely useful, and at some point, I may work to do the documentation on it with him, combining some of my misc functions and libraries with it.

 

Those functions can detect when an FFC is on the edge of the screen, and IIRC, when an NPC is, or an lweapoon, eweapon  etc.

 

Two years back, I wasn't versed in C to any real extent, and  had to use my knowledge of other languages to make out what was going on. It took a long while, but I eventually became adept, if not expertly, at ZScript, and its idiosyncrasies. 

 

I don't rush making my games though, and I'm in no hurry. My main project, essentially  requires making add-on game engines, and relies on some giigantic, and brilliant other projects, mostly by Saffith. Ghost.zh is an amazing tool, and well worth learning. Even now, I'm no expert, and I can't yet do some of what I need to accomplish, with complex movements.

 

Really, I'd like to code some kind of AI that makes enemies move in reaction to player actions, so that instead of pattern-learning combined with damage spams, there is a good degree of tactical combat. I want enemies to be fair, but I want them to be more immersive than the standard fare. I also want them to have personalities f their own, and as my game will allow the player to ally with many of them, I want that sense of involvement to be more than the standard tagalong fare.

 

While I understand that you want to put out a demo, you need to focus on making your game as a whole; concentrating on story, and planning ahead. People often critique my alpha releases because areas are incomplete, or seem broken somehow, but that's because I'm working primarily on the story, and the special game engines. I have plans for the game that make it massive, and I know it's a many-year development project.

 

If I designed it in a strictly linear manner, the demos may be more fun to lay, but it'd create an exponential amount of excess future work, as I'd need to redesign areas. I already need to redesign most of the golden dungeon floors that I've already made, because of my decision to make all tiles 8-bit, on the same CSet.

 

If you worry overmuch on one enemy encounter, in an opening level, you'll distract yourself both from achieving your long-term goals; and if you plan to have custom bosses for every  level, it's not realistic to expect people to make all of them for you. Your best solution, is to start small... Make some item scripts, make a basic ghosted enemy, orb some ffc scripts. Learn a bit at a time, and then, after you see how some custom bosses, or global functions work, you'll have a foundation to comprehend them internally, so that you can apply that knowledge to make your own code from scratch.

 

If you want to release a demo now, use a placeholder enemy:: You can use the BigEnemy script to make something decent, if not fancy for the preset, as it's just an alpha release, and you can always change , or improve an enemy later.



#21 Deedee

Deedee

    Bug Frog Dragon Girl

  • Moderators
  • Real Name:Deedee
  • Pronouns:She / Her, They / Them
  • Location:Canada

Posted 31 July 2014 - 10:50 PM

Thank you for your advice. Where can I find a guide for learning Ghost? (Ps, I am working on the game in general, but I want the 1st level to be fully complete, bcause If I focus too much on the future stuff, the quest becomes more of an experiment, rather than a realistic thing for me)

 

EDIT: Wait... wait... This thread is HOT!? It's only been a day...


Edited by Arceus, 31 July 2014 - 11:17 PM.


#22 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 01 August 2014 - 12:52 AM

Read the ghost.zh docs, view the included example scripts, and compare them to the included .qst file; search the forums, read the ghost.zh thread, and read other extant ghost scripts.  That, will help you to learn it.

 

PZC has weird methods for calculating some things. If a topic receives more than X replies in a day, it also receives the 'hot' marker. That flag, essentially, means nothing. It's auto-generated based on how quickly a thread receives replies, not how many people are involved in,  or reading a thread. In this case, 20+ responses n one day,triggered the 'hot' flag.


Edited by ZoriaRPG, 01 August 2014 - 12:53 AM.



1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users