Jump to content

Photo

Non-Scripter's Custom Boss Kit


  • Please log in to reply
98 replies to this topic

#91 Alucard648

Alucard648

    Wizard

  • Members
  • Location:castle Dracula

Posted 08 March 2014 - 08:32 PM

One thing I would like to see in this script, if you can pull it off, is to set it up with an option to have this enemy invisible, if the cross/amulet == false.

 

By invisible, I mean really invisible. Not the invisibility with a shadow, or hazy form; but using transparent combos.

 

I tried to create a generic enemy script, that would use an invisible tile if Link doesn't have the amulet, and uses a specific set of tiles if he does have it, but I had no luck. I ended up with moving glitches.

 

In fact, using any alternate tiles, to change the appearance of an enemy if a global variable, or boolean is other than X, would be fantastic. Think of it as an illusion, that cloaks the enemy appearance by selecting the sprite of a different enemy, unless Link has something to reveal true forms.

 

I have some very creative uses for this on ghosted enemies.

Here is the script.

import "std.zh"
// FFC script that renders an enemy invisible even to Lens of Truth.
//
// D0 - NPC slot in enemy list
// D1 - ID of item that renders monster visible

const int INVISITILE = 300; // Sets blank tiles chunk for invisible enemies. 
                            // I use tiles directly underneath Ganon`s ones.

ffc script TotallyInvisibleEnemy{
	void run (int npcslot, int revealitem){
		Waitframes(4); // Needed for ZC engine to initialize enemies.
		npc invisible = Screen->LoadNPC(npcslot); // Assign pointer to desired enemy.
		int origtile = invisible->OriginalTile;  // Back up his original tiles position.
		while (invisible->isValid()){ // If enemy is dead - script ends as well.
			if (!Link->Item[revealitem]) invisible->OriginalTile=INVISITILE; 
                 // Render enemy invisible.
			else invisible->OriginalTile=origtile; 
                 // Restore original tiles if Link finds or already has the amulet.
			Waitframe(); // Crashing ZC is always not good.
		}
	}
}


#92 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 08 March 2014 - 08:54 PM

Nice! I'll add that to my scripts set in the next few days, and test it in the appropriate testing game.

 

I would still think that adding functions along these lines to a boss script is important, as the boss enemies generally use 4x4 tiles, and handling that would need to be slightly different to handle that.



#93 Alucard648

Alucard648

    Wizard

  • Members
  • Location:castle Dracula

Posted 08 March 2014 - 09:03 PM

Nice! I'll add that to my scripts set in the next few days, and test it in the appropriate testing game.

 

I would still think that adding functions along these lines to a boss script is important, as the boss enemies generally use 4x4 tiles, and handling that would need to be slightly different to handle that.

It`s up to finding a set of blank tiles large enough to fit the tiles used by invisible bosses/enemies.

As for bosses made with BossMaker script: place one FFC for each enemy used as part of boss. Assign D0 for each NPC slot used and D1 for item needed to reveal it. And, of course, assign the script for those FFC`s.



#94 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 08 March 2014 - 11:26 PM

Aye, I know. O just suggest setting some functions to make enemies invisible, cloak enemies, or use alternate sprites for the generic boss script, as it would be useful to people not familiar with scripting to have these options in one place, in an easy-to-read, and easy-to-use format.

 

I was trying to do that with my generic ghosted enemy, but in the middle of making some progress, my life sunk into the ninth level of hell.

 

You may also want to look at my request and bounty in the tango.zh thread.


Edited by ZoriaRPG, 08 March 2014 - 11:27 PM.


#95 kurt91

kurt91

    Follower of Destiny

  • Members
  • Real Name:Kurtis
  • Location:Eastern Washington University

Posted 08 March 2014 - 11:42 PM

I'm going to make a quick change to the script, after getting some advice from Moscowmodder via PM after submitting it, so it shouldn't use any global variables. Other than that, I don't plan on adding any new features to this version of the script. (Also, in a massive moment of stupidity, forgot to include a section to thank all of you guys for all the help... Sorry. I'm adding it to the resubmission when I have the time to do so.)

 

I'm already rolling ideas around for a "plugin" based Intermediate Custom Boss Kit. It will work completely differently, but it will take me quite some time to learn how to put it together. I know enough to realize the concept should work, just not enough at the moment to implement it.

 

The idea is to have a "skeleton" script that calls up separate functions for movement, attacks, and collision, rather than overlapping enemies. If these functions don't exist, they're ignored and the script moves on to the next one. The functions are distributed separately from the "skeleton", and will be designed to all be compatible with each other. The user would simply open a copy of the "skeleton" script in a text editor, copy/paste the individual functions into the labeled slots for the script (renaming them if necessary to include as many as desired), and import the finished boss into ZQuest. As long as the functions are all compatible with each other, anybody should be able to easily put together and upload their own custom-made parts for anybody to mix-and-match and create a limitless number of new bosses. (Which also means, for me, that once I get the initial set finished, this can keep getting updates and improvements without me needing to do any additional work :) )


Edited by kurt91, 08 March 2014 - 11:44 PM.


#96 anikom15

anikom15

    Dictator

  • Banned
  • Real Name:Westley
  • Location:California, United States

Posted 09 March 2014 - 02:43 AM

A hook-centric enemy API? Sounds ambitious ... And awesome.

#97 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 10 March 2014 - 02:26 AM

An easy to use framework would be very useful for most ZQ users, so best wishes on that project. I never finished my ghost framework project, that is still sitting in my backlog of work. The idea behind that was similar, and would use simple settings to replicate any normal ZC enemy, with ghost.zh, or create entirely custom enemies. I'll get back to it at some point, and may use what you have done with this as a basis, to allow compatibility between 'plug-in' scripts.

 

I need to look over your master code, as it may already do essentially what I was doing, but not accept the number of options required, and need only slight modification to work as what I had intended to make in the past.



#98 kurt91

kurt91

    Follower of Destiny

  • Members
  • Real Name:Kurtis
  • Location:Eastern Washington University

Posted 10 March 2014 - 02:48 AM

Master code? I've got nothing. I said earlier, I'm just planning out an idea. I haven't actually written any code yet, I just have the idea to do it.



#99 Deedee

Deedee

    Bug Frog Dragon Girl

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

Posted 20 September 2014 - 07:53 PM

I know this is dead, but can you make this script a ghost script? I want an enemy to split into this boss upon death...




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users