Jump to content

Photo

[ZC Fork: 2.future] Binaries for ZC Build '2.54' As Requested

Fork New ZC Version Beta Build

  • Please log in to reply
65 replies to this topic

#1 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 04 December 2016 - 02:48 PM

Note: The list of additions, new features, and the changelog are all too long to now fit in this post. Please view the latest posts in the thread for further updates.
 
ZC [2.future] v2.54
If anyone wants to play with it, you can download the beta for Windows (latest, beta 48) here.

The source package for this build is here.

This includes everything from the 2.50.x branch of ZC as of the first Gamma (RC), so most fixes for 2.50.3, plus a few additions.

What is known to work, at present, are the following:
 
ZScript
itemdata is wholly revised, with a plethora of new variables, including the often requested 'ID'.
The ZQuest Item Editor has also be revamped, to allow the user to set any of the options, for custom item class items, or essentially anything, ensuring that these flags, and values are always available.

The user arrays: npc->Misc[], Link->Misc[], lweapon->Misc[], eweapon->Misc[], and item->Misc[] are all now a size of [32], rather than [16]. The size of ffc->Misc[16] remains unchanged, for memory conservation reasons, as does Screen->D[8] (for the same reasons).

Screen->DrawBitmapEx
This is a new bitmap drawing handler, with multiple modes, including translucent, flip, lit, and pivot.
 
Link->Diagonal
Manually enable or disable diagonal movement by script.
That's right: I've dared to work on link.cpp. :D

Link->Eaten
Returns non-zero if Link is inside a LikeLike, or similar enemy.
 
Link->BigHitbox
Manually change if Link uses the 'big hitbox' drawing mode.

Game->CappedFPS
This returns if the game is capped. If a player 'uncaps' either by pressing the Tilde key, or by pressing F1 (or disabling throttle in the menus), this function will return false.
This allows you to prohibit a player from using uncapping to quickly regenerate health, or magic.

OverlayTile(int first, int second)
This allows you to overlay one tile onto another. For example, if you want to give Link a hat, you can overlay a tile with the hat, onto all Link tiles. This works by masking out colour 0, and drawing every other colour from the tile 'second' to the tile 'first'.

Screen->ZapIn
Screen->ZapOut
Screen->WavyIn
Screen->WavyOut
Screen->OpeningWipe
Calls the internal animations, without warping.

int Link->WarpSound
int Link->WarpEffect
int Link->UseWarpReturn
int Link->SideWarpSounds
int Link->WarpPitWarpSounds
New Link variables to give sound effects, and visuals to various warps.

Link->Extend
Manually set, or get the *Extend value for Link's sprite. This is still a bit buggy.
 
npc->ScriptDefense[10]
Used to set defences for the ten script weapon types, individually.

String Control Codes
/26/dmap/screen -> Warp Link
/27/dmap/screen/return
/28/dmap/screen/return/sound
/29/dmap/screen/return/sound/visual_effect
/18/register/value -> Set Screen->D[]
/19/screen/register/value -> Set Screen->D[] for 'screen' on the current DMap
/23/dmap/screen/register/value -> Set Screen->D[] for 'screen' on 'dmap'
 
We might swap 23 into 19, and remove the one that does another screen on the current dmap. Likewise, we may trim warps down by one, or two, in the future.
Enemy Editor
The Enemy Editor now has a third tab, 'Defense 3', that allows you to configure defence settings for all ten Script Weapon types, individually.

Other new commands are partially implemented, but do nothing:
Game->GetDMapScreenDoor
Game->SetDMapScreenDoor
Game->GetDMapScreenState
Game->SetDMapScreenState


Link->SetTile(int,int,int,int)
Manually change the tile associated with each of Link's sprites.

Link->GetTile(int,int,int)
Read the tile associated with each of Link's sprites.

Link->SetLinkExtend(int,int,int)
Manually change the *Extend value associated with each of Link's sprites.

Link->GetLinkExtend(int,int)
Read the *Extend value associated with each of Link's sprites.

Screen->BitmapQuad()
This is like Quad, but it renders bitmaps as textures, for the purpose of doing Mode 7 effects. It does not work properly at present.
 
For more information, read the included zscript.txt or see the file 2.54_New-ZScript.txt if you only wish to view the details for new instructions.

This includes some test files, the 'std_update' pack for 2.future, and other included headers, and miscellaneous files.

I do not yet know which updates/changes from this package will be pulled into full ZC builds, but if you want something new to play with in the interim, here's your chance.
 
Change Log



Otherwise current with 2.50.3Γ1.
 
Brought to you, by:
 
[2.future] Dev Staff

  • Dimentio
  • Grayswandir
  • ZoriaRPG

[2.future] Testers

  • / TBA /

[2.future] Contributors

  • / TBA /

Edited by ZoriaRPG, 02 January 2017 - 11:31 AM.

  • Anthus, MoscowModder and Jared like this

#2 MoscowModder

MoscowModder

    Sometimes lurking. Rarely posting.

  • Members
  • Location:Wisconsin

Posted 04 December 2016 - 02:56 PM

OverlayTile(int first, int second)

 

You're blowing my mind here. You're saying it's now possible to make a bunch of stuff to stick on Link without having to make all of the dozens of different combinations by hand?



#3 ShadowTiger

ShadowTiger

    The Doctor Is In

  • Members

Posted 04 December 2016 - 05:47 PM

Game->CappedFPS
This returns if the game is capped. If a player 'uncaps' either by pressing the Tilde key, or by pressing F1 (or disabling throttle in the menus), this function will return false.
This allows you to prohibit a player from using uncapping to quickly regenerate health, or magic.

Oh neat. I've been thinking of something like this to make sure an MP3-driven action scene stays in beat with the actual on-screen action so nothing desyncs. Though I do love speeding up the action to zoom faster from place to place. I really do.

#4 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 04 December 2016 - 06:18 PM

You're blowing my mind here. You're saying it's now possible to make a bunch of stuff to stick on Link without having to make all of the dozens of different combinations by hand?

Heh. It sure is. In fact, it's always been in ZASM, but few people would have the patience for that.

I tested the ZASM instruction months back, but in this build, I ensured that it is in ZScript.

It only persists until the quest is fully reloaded, just like SwapTile it CopyTile, but you can use a global script (or Init) to set it up per session.

Edited by ZoriaRPG, 04 December 2016 - 06:19 PM.


#5 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 08 December 2016 - 12:20 AM

Beta 6 is now available.

Beta 9 is now available; see my next post.
I also updated a few things in this post, to avoid user confusion.
 
This adds DrawBitmapEx(), which supports translucent bitmap drawing, for translucent darkness effects, and similar.
The Windows binaries include a test file (bitytest.qst) for DrawBitmapEx(), and a more interesting demo is in the works.

Note that the colour palette in the Classic tileset butchers multiple overlays, but they look rather striking in Pure:

 
drawbitmapex.gif
 
Here is the Demo Quest for DrawBitmapEx to use with Beta 7.

Next on the list to merge/migrate, DrawTileArray(), DrawPixelArray(), DrawTileArray(), from 'master' (now abandoned) to 2.0.x.

The new, working ZScript instructions are as follows:

//Global

void OverlayTile(int firsttile, int secondtile); ZASM Instruction:
OVERLAYTILEVV
OVERLAYTILEVR
OVERLAYTILERV
OVERLAYTILERR
/**
* Overlays secondtile onto firsttile, ignoring all pixels of colour 0.
* The valid tile value range is 0 to 65519.
* This change is *TEMPORARY* within the quest file
* and will not be retained when saving the game.
*
*/ Example Use:


//Game->
bool CappedFPS ZASM: THROTTLEFPS

/**
* Returns if the user enabled an uncapped mode either with F1 or TILDE.
* Returns 'true' is the game is capped to 60fps, or false otherwise.
* At present, you may get (read), but NOT set (write to) this value.
*/ Example Use: !#!

/************************************************************************************************************/

//Screen

void DrawBitmapEx    ( int layer,
            int bitmap_id,
            int source_x, int source_y, int source_w, int source_h,
            int dest_x, int dest_y, int dest_w, int dest_h,
            float rotation, int cx, int cy, int mode, int lit, bool mask);
            
            ZASM: BITMAPEXR
            
    /**
    *
    * As DrawBitmap(), except that it can do more things.
    *
    * The 'mode' parameter sets up drawing modes. AT PRESENT this supports normal opaque drawing as DrawBitmap()
    * AND it supports TRANSLUCENT MODE, which will allow drawing translucent bitmaps.
    * The translucent mode does not yet support rotation, and some other modes are temporarily suspended, pending
    * full implementation.
    *
    * See std_constants.zh, under BITDX_* (or possibly we'll change this to BMPDX_* later?) for a list of modes,
    * and more information
    *
    * Draws a source rect from off-screen Bitmap with id of bitmap_id onto
    * an area of the screen described by dest rect at the given layer.
    *
    *    (!) Note* Script drawing functions are enqueued and executed in a frame-by-frame basis
    *    based on the order of which layer they need to be drawn to. Drawing to or from
    *    separate render targets or bitmaps is no exception! So keep in mind in order to
    *    eliminate unwanted drawing orders or bugs.
    *
    * Set 'mode' to a value of '1' to draw a translucent bitmap.
    *
    * Note: Rotation does not work with translucent bitmaps at this time.
    *
    * cx, cy: Used for pivot
    * lit: used for lit colour in light table (may not work).

    *
    */ Example Use:     
            Screen->DrawBitmapEx( 6, myBitmapId, 0, 0, 16, 16, 79, 57, 32, 32, 0, 0, 0, BITDX_TRANS, 0, true );
                This would draw a translucent 16x16 area starting at the upper-left corner of source
                bitmap to layer 6 of the current screen at coordinates 79,57 with a width and height of

                const int BITDX_NORMAL = 0;
                const int BITDX_TRANS = 1; //Translucent
                const int BITDX_PIVOT = 2; //Partially implemented. Use cy and cy to set the pivot.
                const int BITDX_VFLIP = 4; //Partially Implemented
                const int BITDX_HFLIP = 8; //Partially implemented.
                const int BITDX_VHFLIP = 12; //Partially implemented.
                const int BITDX_HVFLIP = 12; //Partially implemented.
                const int BITDX_LIT = 16; //Partially implemented.
                const int BITDX_GOURAUD = 32; //Not implemented.

Edited by ZoriaRPG, 08 December 2016 - 12:43 PM.


#6 kurt91

kurt91

    Follower of Destiny

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

Posted 08 December 2016 - 01:34 AM

Whoa wait, is that actual transparency or using the nearest color in the palette? Is it scripting-only, or can overlays made manually on Layers 5 and 6 get that kind of transparency as well? I've been having some trouble with palette issues in my quest, and it would be awesome to get those fixed! (I also have a couple little tricks that I've been dying to try, but they also need real transparency to work right.)



#7 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 08 December 2016 - 06:47 AM

Whoa wait, is that actual transparency or using the nearest color in the palette? Is it scripting-only, or can overlays made manually on Layers 5 and 6 get that kind of transparency as well? I've been having some trouble with palette issues in my quest, and it would be awesome to get those fixed! (I also have a couple little tricks that I've been dying to try, but they also need real transparency to work right.)

 
ZC uses a colour table to define what colour to use, when colours A and B are blended. The choice is based on the quest palette, and the results van vary from fantastic, to decent, to 'oi, you're bonkers'.
 
Alpha levels, and other 'real transparency' dose not work in, and is not available to 8-bit drawing modes.
 
I plan to introduce 'lit' mode effects, that use a light table and a selected blending colour. I believe that I enabled that for DrawBitmapDx, but I do not properly know if we have a working light table set up; or if it is automatically generated by something that I've overlooked.
 
DrawBitmapEx, obviously, is scripting-only, but it can be combined with translucent layers from ZQuest.
 
I've also updated this to Beta 9 (Stable):
 
Widows ZC/ZQuest Package, Beta 9
Beta 9 Sources
 
This updates DrawBitmapEx, and adds in all of its supported mode flags, although many modes are still disabled; but you are welcome to try them.

const int BITDX_NORMAL = 0;
const int BITDX_TRANS = 1; //Translucent
const int BITDX_PIVOT = 2; //Partially implemented. Use cy and cy to set the pivot.
const int BITDX_VFLIP = 4; //Partially Implemented
const int BITDX_HFLIP = 8; //Partially implemented.
const int BITDX_VHFLIP = 12; //Partially implemented.
const int BITDX_HVFLIP = 12; //Partially implemented.
const int BITDX_LIT = 16; //Partially implemented.
const int BITDX_GOURAUD = 32; //Not implemented.

These are constants for its modes, and they can be stacked. Some combinations are entirely impossible, and ZC should warn you with errors in these cases.
 
Here is the revised (likely final) function with its args:
 
/************************************************************************************************************/

    void DrawBitmapEx    ( int layer,
            int bitmap_id,
            int source_x, int source_y, int source_w, int source_h,
            int dest_x, int dest_y, int dest_w, int dest_h,
            float rotation, int cx, int cy, int mode, int lit, bool mask);
            
            ZASM: BITMAPEXR
            
    /**
    *
    * As DrawBitmap(), except that it can do more things.
    *
    * The 'mode' parameter sets up drawing modes. AT PRESENT this supports normal opaque drawing as DrawBitmap()
    * AND it supports TRANSLUCENT MODE, which will allow drawing translucent bitmaps.
    * The translucent mode does not yet support rotation, and some other modes are temporarily suspended, pending
    * full implementation.
    *
    * See std_constants.zh, under BITDX_* (or possibly we'll change this to BMPDX_* later?) for a list of modes,
    * and more information
    *
    * Draws a source rect from off-screen Bitmap with id of bitmap_id onto
    * an area of the screen described by dest rect at the given layer.
    *
    *    (!) Note* Script drawing functions are enqueued and executed in a frame-by-frame basis
    *    based on the order of which layer they need to be drawn to. Drawing to or from
    *    separate render targets or bitmaps is no exception! So keep in mind in order to
    *    eliminate unwanted drawing orders or bugs.
    *
    * Set 'mode' to a value of '1' to draw a translucent bitmap.
    *
    * Note: Rotation does not work with translucent bitmaps at this time.
    *
    * cx, cy: Used for pivot
    * lit: used for lit colour in light table (may not work).
    *
    */ Example Use:     
            Screen->DrawBitmapEx( 6, myBitmapId, 0, 0, 16, 16, 79, 57, 32, 32, 0, 0, 0, BITDX_TRANS, 0, true );
                This would draw a translucent 16x16 area starting at the upper-left corner of source
                bitmap to layer 6 of the current screen at coordinates 79,57 with a width and height of
                
    

Beta 8 is also done, but unstable. You can find it, and the sources on the server, but it might be abandoned, reverting the changes back to 7. I would not advise using b8 other than for the sake of sheer curiosity.
 
Here is the Demo Quest for DrawBitmapEx


-------------

Beta 9 adds some modes to DrawBitmapEx: I managed to do a partial merge of drawing functions from Allegro 4.4.2 into Allegro 4.2, which now permits a few things that we could not do in the past.

It also adds the function Screen->BitmapQuad(), but at present, this is unstable.

-------------
 

You're blowing my mind here. You're saying it's now possible to make a bunch of stuff to stick on Link without having to make all of the dozens of different combinations by hand?


If you liked that, you're going to love this...

Updated to Beta 10

Adding:
Link->Diagonal : Turn diagonal movement on, or off.
Link->BigHitbox : Turn 'big hitbox' on, or off.

Files in the top post.


Edited by ZoriaRPG, 08 December 2016 - 06:49 PM.

  • ShadowTiger likes this

#8 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 10 December 2016 - 07:12 AM

Beta 13 is Ready
 
Beta 14 is Ready

(See Update, below. The change log is in the top post.)
 
Windows Download | Source Files
 
The theme this time, is itemdata...
 
For a long time, I've been discussing the need for completing the itemdata class, and now I've effectively done precisely that.
 
Here is the expanded table of itemdata variables, in addition to those that you will find in ZScript.txt:
 

New itemdata ZScript variables

->ID //The item number. YES, you can call this->ID in item scripts now, instead of manually entering the item ID in D0.

->Modifier //The Link Tile Modifier
->Script //The Action Script
->PScript     //The Pickup Script
->MagicCost //The MP Cost of the item
->MinHearts //The minimum hearts to pick up the item (e.g. swords in Z1)
->Tile //The tile used by the item
->Flash //Flash, and two-hand.
->CSet //The item CSet
->AFrames //The number of animation frames
->ASpeed //The animation speed
->Delay //The animation delay

//These correspond to the ten pulldown values on the 'data' page.
->Misc1    //For a sword, this is 'Beam Hearts
->Misc2    //For a sword, this is 'Beam Damage'
->Misc3    
->Misc4    
->Misc5
->Misc6    
->Misc7    
->Misc8    
->Misc9    
->Misc10    

//These correspond to the ten pulldown values on the 'action' page.
->Attribute1 //For a sword, this is the normal sprite.
->Attribute2 //For a sword, this is the slash sprite.
->Attribute3 //For a sword, this is the beam sprite.
->Attribute4
->Attribute5
->Attribute6
->Attribute7
->Attribute8
->Attribute9
->Attribute10

//Flags
->Combine, Downgrade, KeepOld, RupeeCost, Edible, GainLower, Flag1, Flag2, Flag3, Flag4, Flag5, and 'Unused'.

 
All of these, save for ID, are read-write. In theory, this means that you can change any aspect of an item, dynamically by script, just as you can using the item editor. This effectively removes the cap on the number of items, as you can swap out their attributes as needed. Furthermore, trading-sequences, and dummy items to accomplish things can be streamlined down to a minimum number of item objects.
 
You should even be able to change the script of an item at any time.
 
I have not yet added a few, small entries, such as 'can slash', but I will get to them at some point. This set gives far more power than ever before, and converts itemdata from a barely used relic, to a fully-rounded feature of ZScript.

This could also be a cheap way to make custom subscreens, or modify Link's equipment.
 
Here is an excerpt of itemdata from the revised zscript.txt.
 
--------------------------------------------------
 
Beta 14 is Ready
 
Windows Download | Source Files

This release adjusts the UI in ZQuest, specifically the Item Editor, to permit using the new itemdata features without limitation. The UI change is 75% done, with only one set of fields left to complete.

ZC_2.5.4_Beta_14_Item_Editor.png

As a bonus, this also expands the ->Misc array for most objects (Link, lweapon, eweapon, and item) from a size of 16, to a size of 32. I have not changed ffc->Misc, because of the RAM wastage involved.

Edited by ZoriaRPG, 11 December 2016 - 07:18 AM.

  • Anthus likes this

#9 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 15 December 2016 - 06:31 AM

Beta 21 is now available, and it has three separate groups of new content.

 

Windows Download | Source Files

 

Warping

 

In prior versions of ZC, Link->Warp did not allow using a sound. In fact, there are no sound effects for warping in ZC at all,prior to now, and any warp would instantly kill all sound effects being played, so setting them by script manually was not an option.

 

Introduced in this beta, are three script variables in the Link class that allow setting sounds for:

  1. Link->Warp, and tile warps.

  2. Side warps

  3. Pit warps

 

The Link->WarpSound variable allows you to set a sound to play when Link is warped. This affects any warp in the game, but sidewarps and pitwarps are disabled by default. You may enable sidewarps by setting bool Link->SideWarpSounds true, which persists until it is set false. You may also set PitWarps to produce a sound, using bool Link->PitWarpSounds, but this persists only until the next pit warp. The default value '0' never even tries to play a sound, so this will not break any existing quests.

 

A separate set of sound vars for side warps, and pit warps, is being considered for the future.

 

We may change this to be static until disabled, in the future. You may enable or disable any of these prior to Waitdraw, and have full control over warping sounds.

 

We also added int Link->UseWarpReturn for Link->Warp. This allows you to set a specific warp return for scripted warps, instead of defaulting to A. Warp returns are as follows: A is 0, B is 1, C is 2, and D is 3. If not set, A will be used as normal, so no existing quest will break.

 

Next, you may give Link->Warp a visual effect, using the in-built effects. Do this by setting int Link->WarpEffect. This only affects Link->Warp at present, not Link->PitWarp; however the latter is planned. The default value of '0' is 'no effect', so existing quests are again safe.

 

Visual Effects

 

These warping effects can further now be called as a visual effect at any time, without warping. The new Screen variables, Screen->ZapIn, Screen->ZapOut, Screen->WavyIn, Screen->WavyOut, and Screen->OpeningWipe allow you to call these visuals on-demand. Note that Screen->OpeningWipe uses the wipe animation style that you establish in Quest Rules (triangle, circle, and so forth).

 

WavyIn/Out automatically set Link to be invisible during their animation, so they are useful for cutscenes in which Link's position changes, as you can move him during the fade-to-white, without the player noticing.

 

Last, we added two groups of new String Control Codes:

 

3x codes,allow you to warp Link with strings. These are not fully-tested, but they do work in most circumstances. Screen 80 caves tend to play havoc with them at present, though.

 

Group 3x: Warp Codes

 

/30/dmap/screen warps Link to the desired dmap and screen.

/31/dmap/screen/return further allows you to choose a return point with the third argument, where 0 is warp return A, 1 is B, 2 is C, and 3 is D.

/32/dmap/screen/return/sound allows playing a sound during the warp. Specify the sound ID for this argument, from Quest->Audio->SFX.

/33/dmap/screen/return/sound/effect is the last of this group, and you may specify a visual effect for the warp with this one. See the effects list in 'std_constants' under WARPFX_* for a list of these values.

 

The second SCC group is 4x, Screen->D Codes

 

The only code in this group at present, is:

/40/register/value

This allows you to set Screen->D[register] = value for the current screen.

A version with a screen arg; and a version with a scree arg, and a dmap arg, are being considered for the future.

 

See the Change Log in the top post for a comprehensive list of changes, and see 2.54_NewZScript.txt, and 2.54_New_ZStrings.txt for a listing of all the new instructions, and codes. The files zscript.txt, and zstrings.txt have been similarly updated.


  • ShadowTiger likes this

#10 Saffith

Saffith

    IPv7 user

  • ZC Developers

Posted 15 December 2016 - 10:19 AM

Try playing the first quest in this build.

The big problem with adding more string control codes is that once they get above 30, they're indistinguishable from ASCII values. \40 activates every time ) appears in the text. \31 triggers on space.

#11 Deedee

Deedee

    Bug Frog Dragon Girl

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

Posted 15 December 2016 - 10:41 AM

Those were my concerns as well. Originally, I set the warping SCC as 23, and the Screen->D one to be 24. Having things in groups is nice, but to do so we'll either have to move these new codes past the ASCII table and add an or check to see if it's above... 128, I believe is the last ASCII code, or we'll have to move the ASCII code up a couple of numbers. 50 or so would be good. That said, it hopefully shouldn't be too difficult, but adding the warping SCC (thanks for assisting me on that, Zoria) was irritating on it's own, so  :shrug:



#12 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 15 December 2016 - 08:29 PM

Those were my concerns as well. Originally, I set the warping SCC as 23, and the Screen->D one to be 24. Having things in groups is nice, but to do so we'll either have to move these new codes past the ASCII table and add an or check to see if it's above... 128, I believe is the last ASCII code, or we'll have to move the ASCII code up a couple of numbers. 50 or so would be good. That said, it hopefully shouldn't be too difficult, but adding the warping SCC (thanks for assisting me on that, Zoria) was irritating on it's own, so :shrug:

Moving the ASCII code would be a bad idea, as it would break existing quests. Usinh a value above 127 would work, but the only thing that us a politely suffering g is a function to SetDMapScreenD from an SCC, that isn't grouped.

I could make new entries starting at 200 though, which may be mandatory if you plan to add more SCCs. IIRC, there are two unused values that you could use, at all, at all.

It could be one code with tags that users need to set to 0...but that wpuld waste 4 chars of space per string whenever it is used, and the user doesn't need the area.

I wouldn't mind upping the max length to 255 chars though. Who wants to bet that would be fun.

I rearranged them again for Beta 22+, so they will again work, and there's more order to the new codes.

All the old codes remain unchanged.

[...]



Would you potentially use any of these new toys in DoY, and if so, which?

Edited by ZoriaRPG, 15 December 2016 - 08:38 PM.


#13 ShadowTiger

ShadowTiger

    The Doctor Is In

  • Members

Posted 16 December 2016 - 08:55 AM

Would you potentially use any of these new toys in DoY, and if so, which?

Nah. The one I mentioned is more suited for a Dance Dance Revolution quest.

Yes that's right, I said it.

As for the rest of them, their usage is more obvious for specific applications that require them. I can imagine thousands of things, but to answer your specific question, no. But thank you for asking, I think.

#14 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 17 December 2016 - 11:54 AM

Beta 26 is now available.

Windows Download | Source Files

This fixes the SCC numbering, to prevent conflicts with ASCII chars, as follows:

String Control Codes

Spoiler


New also in this beta are the following ZScript instructions:

Link->Eaten
This returns the internal timer for when Link is inside a LinkLike, or similar enemy.
    
Link->Extend
This is partially implemented, and relates tot he Extend values for large Link sprites. It should be possible to set it, however the values may not yet be correct.
    
All of the new ZScript for b26
Spoiler


As always, check the Change Log, which is also included in the package, and the updated zscript.txt, and zstrings.txt files, or the '254_New*.txt' files in the packages.

 
  • ShadowTiger likes this

#15 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 19 December 2016 - 07:18 PM

Beta 35 is now available.
Windows Download (35MB) | Source Package (44MB)
 
So, if you don't use ZScript personally, why would you want to try this?
 
Here's one good reason, and a new toy for scripting too:
 
Enemy Editor Updates
In prior ZC versions, you could not separately define defence types for the 'LW_SCRIPT' weapons. Thus, if you wanted to use an electricity weapon, or an ice weapon, you were stuck playing around, juggling defence types, or manually scripting enemies to handle these.
 
Now you can set defence types for all ten script weapons in the enemy editor.
 
beta30.png
 
This took some effort, I'll admit. Older quests will automatically load the generic 'Script' weapon defence into each of the ten slots, and I have put some safeguards in place to help ensure that older quests don't break; but no-one is perfect, and I'll admit that this needs some extra testing with older quests.
 
You can also define these by script, using the new npc array npc->ScriptDefense[10]. As always, the docs are updated, and you can read ChangeLog.txt if you want to laugh at my pain, and suffering; and the grief involved in setting this up.
 
Furthermore, I updated ag.cfg, and the .dat files to be in line with 2.50.3. This should prevent issues running on Win 8 and above, and I cleaned out the archives, removing many unnecessary files, scripts, test quests and the like. The binaries archive should only have the main test quest files, a handful of test scripts, and the header packages.
 
This includes some housekeeping on std.zh, too. I included the hybridised Allegro in the source package, and I put in a path labelled ./mingw-allegro. This is a copy of my full includes path, laid out precisely as it exists on my C:\ drive, so that if you wish to compile, all you need to after configuring MinGW+msys, is copy the files from the include path to the matching path on your system. You will find that I mirrored the entire directory structure, so that you know where to place the files:
 
Spoiler

 
Here are some compiling instructions on AGN
 
I updated the change log above, and the downloads in the top post, should you care to review them there.
 
----
 
In other news, Saffith said he might want to add *weapon->Defense at some point. I'm not sure what he means by this, or how he intends to implement it, if he does at all. ...however...  This could be an interesting way to apply a special defence type to an existing weapon, and I might see about implementing some base stuff for that, to, for example, set a sword to use the defence type of LW_SCRIPT4. Thus, if you want to make an ice sword, that could be possible in a future build.
 
I'd probably call it itemdata->UseDefense, if I do it as I outlined above.
 
I am also trying to define setting Link->Action = LA_CASTING, to use the animation of the 'magic items' (e.g. Din's Fire) at any time. The present implementation is not ready, and does not fully work. Set it at your own peril.
 
If you test this, please report any bugs or any issues in this thread. Furthermore, please report any positive results, too.
 
Note: This build changes the quest format to support the new defence types. Quests made in b35and later will not load properly in earlier betas.

Edited by ZoriaRPG, 02 January 2017 - 10:26 AM.

  • ywkls likes this



Also tagged with one or more of these keywords: Fork, New ZC, Version, Beta, Build

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users