Jump to content

Photo

ghost.zh


  • Please log in to reply
645 replies to this topic

#436 MoscowModder

MoscowModder

    Sometimes lurking. Rarely posting.

  • Members
  • Location:Wisconsin

Posted 14 May 2015 - 01:08 PM

You mean disable knockback? Ghost.zh enemies don't have knockback by default. If you want to remove knockback from a ghost.zh enemy, look for and remove a line adding the flag GHF_KNOCKBACK (or something similar).



#437 Gégé

Gégé

    Senior

  • Members
  • Real Name:Gérard
  • Location:France

Posted 14 May 2015 - 01:54 PM

I try to ghosted a classic enemy to disable knockback.


Edited by Gégé, 14 May 2015 - 02:26 PM.


#438 Mero

Mero

    Touch Fluffy Tail

  • Banned
  • Real Name:Tamamo No Mae
  • Location:Rainbow Factory

Posted 26 May 2015 - 09:38 AM

Here's a list of things I know need to be fixed/changed.

 

1. Additional Combos are broken.

2. Dummy Weapons are broken.

3. Weapons with EWF_ROTATE_360 are drawn while link is dying.

4. You mentioned something to do with Ghost_TileWidth, Ghost_TileHeight, Ghost_Ax and Ghost_Ay.

5. GHF_IGNORE_PITS doesn't work with custom pit combos only direct warps.

6. We really need a EWF_FAKE_Z.

7. Combo Drawing isn't effected by invisibility flags.



#439 Lejes

Lejes

    Seeker of Runes

  • Members
  • Location:Flying High Above Monsteropolis

Posted 28 June 2015 - 03:30 AM

I think I found a big oversight. Ghost_HaltingWalk4 (and maybe the other walk functions too, I didn't check) completely ignore the rate argument. Though maybe it's more accurate to say that __Ghost_NewDir4 is what ignores it, because the 4 way walk function is at least passing rate to it. An enemy using Ghost_HaltingWalk4 with 0 Rate, Hunger, and Homing Factor will still turn frequently, while an enemy with zeroes in all three using built-in movement will just bounce back and forth off walls without otherwise turning.



#440 Saffith

Saffith

    IPv7 user

  • Members

Posted 28 June 2015 - 12:28 PM

Yep, that's not good. I'll have to think a bit about how it should work, though; the way it is in ZC is actually pretty weird.

#441 Kivitoe

Kivitoe

    Sponsored by Taco Bell

  • Members
  • Location:Beyond Sagittarius A*

Posted 27 July 2015 - 11:20 AM

It would make a cool boss!  :slycool:



#442 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 27 July 2015 - 12:43 PM

I try to ghosted a classic enemy to disable knockback.

 

I have a full header to directly control player knockback, invincibility frames, and the like. I could expand it to work with enemies, if you wish. It may be simpler than ghosting all of your enemies, just to set GHF_NOKNOCKBACK.

 

 

It would make a cool boss!  :slycool:

 

I know you are trying to beef up your postcount, to publish a demo, but IMO, this is a very bad thread for random posts, with no context. :/


Edited by ZoriaRPG, 27 July 2015 - 12:45 PM.

  • coolgamer012345 likes this

#443 Evan20000

Evan20000

    P͏҉ę͟w͜� ̢͝!

  • Members
  • Real Name:B̵̴̡̕a҉̵̷ņ̢͘͢͜n̷̷ę́͢d̢̨͟͞
  • Location:B̕҉̶͘͝a̶̵҉͝ǹ̵̛͘n̵e̸͜͜͢d҉̶

Posted 30 July 2015 - 03:57 PM

I completely forgot if I reported this, but EWF360 Rotation doesn't seem to play nicely with larger eweapons. Is the setup different than normal or is it broken?

#444 Saffith

Saffith

    IPv7 user

  • Members

Posted 31 July 2015 - 10:09 AM

It just doesn't work, but it's a simple change. eweapon.zh, line 512:

        Screen->DrawTile(4, endX, endY-wpn->Z, wpn->Tile,
          wpn->TileWidth, wpn->TileHeight, wpn->CSet, -1, -1,
          endX, endY-wpn->Z, angle, flip, true, OP_OPAQUE);

  • Evan20000 likes this

#445 Evan20000

Evan20000

    P͏҉ę͟w͜� ̢͝!

  • Members
  • Real Name:B̵̴̡̕a҉̵̷ņ̢͘͢͜n̷̷ę́͢d̢̨͟͞
  • Location:B̕҉̶͘͝a̶̵҉͝ǹ̵̛͘n̵e̸͜͜͢d҉̶

Posted 01 August 2015 - 12:55 AM

You're a legend. Thanks very much, I wasn't having fun thinking about workarounds to that.

#446 Saffith

Saffith

    IPv7 user

  • Members

Posted 06 October 2015 - 12:25 PM

Hey, I'm actually updating it. How about that.

The biggest change this time is the __GH_ALWAYS_USE_NAME setting. If it's enabled, AutoGhost() will always read an enemy's name to get the script and combo number. Misc. attributes 11 and 12 will be free for other scripts to use.
The script and combo number both go after @ in the name. Order and spacing aren't important, and other characters are allowed afterward. Either of these will work:
Goriya (LttP, Green) [@Goriya_LttP, @25804]
Goriya (LttP, Green) @25804@Goriya_LttP
You have to provide the script name, but if you don't specify a combo, it'll default to GH_INVISIBLE_COMBO. This will work fine:
Armos @Armos_LttP

The downside to this is that enemy scripts can no longer assume misc. attribute 11 specifies the base combo. I don't think that was a common thing to do, anyway.

Other notable changes:
The files in the ghost_zh directory have been moved to a numbered subdirectory. This will allow multiple versions to coexist.
Ghost_TileWidth and Ghost_TileHeight should now be considered read-only. Ghost_SetSize() should be used to set them.
You can now control what constitutes a pit by editing the __IsPit() function in the main file.
There's also a __HaveAmulet() function, used to determine if enemies are visible when the "All Enemies Are Invisible" screen flag is used.
Weapons can now have fake Z movement, both individually and globally.
Added a new death animation, as well as constants to use as arguments to Ghost_DeathAnimation() and Ghost_Waitframe().

There haven't been any changes to global data, so this version should be compatible with existing saves using 2.7.x. Still, be careful.

#447 cavthena

cavthena

    Apprentice

  • Members
  • Real Name:Clayton
  • Location:I wish I knew

Posted 13 November 2015 - 11:49 PM

Is it possible to control multiple ghosted enemies with one ffc script? If so how does ghost allow you to access each one?



#448 Saffith

Saffith

    IPv7 user

  • Members

Posted 17 November 2015 - 01:42 AM

Could you explain a bit further? Do you mean something like a segmented enemy, with a single FFC controlling multiple regular enemies? Or more like the Armos Knights, where each one has its own script, but there's one controller telling them all what to do?

#449 cavthena

cavthena

    Apprentice

  • Members
  • Real Name:Clayton
  • Location:I wish I knew

Posted 17 November 2015 - 09:01 AM

Both. Currently when working with a segmented enemy, I create each segments with normal non-ghosted enemies. Then control the ghosted enemy (typically the head) and each segment with ghosted enemies' ffc. I did try to create each segment, with a for loop, using Ghost_InitCreate(ffc, int). However with no luck.

 

I haven't attempted to create something like a Armos Knights with a group of ghosted enemies each with their own script being controlled by a separate ffc. Although I would like to know if that's possible as I can think of a few neat enemies that could be made!



#450 Saffith

Saffith

    IPv7 user

  • Members

Posted 17 November 2015 - 04:30 PM

There isn't really much support for either, I'm afraid. There's no particular standard way of doing things; you just have to come up with something that works for what you're trying to accomplish.

If there's only one script running, all you can really do is create the enemies and move them around like you would in a regular FFC script. They don't each get their own Ghost_ variables or any special drawing. You can use Ghost_MarkAsInUse() to stop scripts from being set up automatically; that's about all the help you'll get.

If the other enemies are scripted, that's probably trickier. If you create the other enemies like normal and let the scripts be set up automatically, they need some way of determining that they're the subservient ones, and the controller needs to be able to find them afterward. It's also possible for the controller to set up the other enemies and FFCs itself. That's how the Armos Knight work; the controller supplies arguments to the other FFCs' scripts so each knows which one it is. In any case, their ability to communicate is pretty limited. You'll probably need to use ffc->Misc[], with each one that receives instructions checking each frame to see if it's gotten any.


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users