github ZQuestClassic/ZQuestClassic 2.54-Alpha-21
Zelda Classic 2.54, Alpha 21

pre-release6 years ago

//Alpha 21
Fixed a bug in Game->LoadComboData that could crash ZC, and copied
the fix to all of the other, new Game->Load functions, in the event that
they also have this issue.

The problem was caused by setting their ref to LONG_MAX, which could
cause memory corruption; trying to access invalid memory areas.

Added combodata variables and arrays:
Type, Tile, Flip, Walk, CSet, Foo, Frames, NextData,
NextCSet, Flag, SkipAnim, NextTimer, SkipAnimY, AnimFlags,
Expansion[6], Attributes[4], TriggerFlags[3], UserFlags,
TriggerLevel, BlockNPC, BlockHole, BlockTrigger, BlockWeapon[32],
ConveyorSpeedX, ConveyorSpeedY, SpawnNPC, SpawnNPCWhen, SpawnNPCChange,
DirChange, DistanceChangeTiles, DiveItem, Dock, Fairy,
FFCAttributeChange, DecorationTile, DecorationType, Hookshot,
Ladder, LockBlock, LockBlockChange, Mirror, DamageAmount, DamageDelay,
DamageType, MagicAmount, MagicDelay, MagicType, NoPushBlocks,
Overhead, PlaceNPC, PushDir, PushDelay, PushHeavy, Pushed, Raft,
ResetRoom, SavePoint, FreezeScreen, SecretCombo, Singular (self-only),
SlowWalk, Statue, Step, StepChange, Strike[32], StrikeRemnants,
StrikeRemnantsType, StrikeChange, StrikeItem, TouchItem,
TouchStairs, TriggerType, TriggerSensitivity, Warp, WarpSensitivity,
WarpDirect, WarpLocation, Water, Whistle, WinGame, BlockWeaponLevel.

Fixed TypingMode not cleared on 'Reset System' from FKeys/menus.
( ZoriaRPG, 26th December, 2017 )

Added Game->TypingMode : This sets a flag in FFCore that disables KB input from
moving Link, or using his button items, and so forth, to ensure that all keypresses
are read as char keys, instead of controller keys.
It is reset to false on every quest load, and on F6 (or death, save, etc.)

Fixed a packfile error with loading combos (V_COMBOS was not set to 10).
Renamed 'Script n' counters to 'Custom n'.
Changed how item 'magic cost' works, allowing the user to set it to any counter.
Added this to ZScript as itemdata->CostCounter.
itemdata->MagicCost still exists, but I have added a second interface to it as itemdata->Cost
to reflect that Cost is no longer tied to magic.
( ZoriaRPG, 25th December, 2017 )

Expanded triggerflags[2] to triggerflags[3] so that there is enough room for more weapons
that we will be adding. V_COMBOS is now 10, and V9 only uses the lowest two.
Added UI links to set the triggerflags[] and triggerlevel values from the Combo Editor.
Added combo vars long triggerflags[2] and long triggerlevel.
Finished the 'Attributes' tab of the Combo Editor.
Added mock-up 'Triggered by' (1) and (2) tabs for all weapon types, with a level requirement field.
Added mock-up 'Attributes' tab to the Combo Editor. (The fields are in place, but they do nothing.)
Moved the ZASM label for Version (ZELDAVERSION) to a code that was accessible by 2.50.3 and earlier.
Changed combo editor dialogue to add tabs 'Data' and 'Attributes'
Added long Attributes[4] and long usrflags to *newcombo
combodata->Attributes[] and Screen->GetComboAttribute(pos, indx) / SetComboAttribute(pos, indx)
combodata->Flags and Screen->ComboFlags[pos] -- Maybe ComboMisc[pos] to avoid confusion?
Combo QR rules will become ComboMisc[] !
( ZoriaRPG, 18th December, 2017 )
Added Link->Stun (When Link is stunned he cannot move, or attack, but he can change direction)
Added a 32-index array of questmisc[] to the misc struct.
This is to be used in quest Init Data, to set up global quest
values for use by scripts. The Init Data dialogue is not yet done,
but the ZScript interface is, under Game->Misc[32].
Added char questmisc_strings[32][128] to store the user-defined names of each of the Game->Misc[] fields.
Added subscreen counters Life, Max Life, Magic, Max Magic. ( ZoriaRPG, 12th December, 2017 )
Added Graphics->Wavy(bool), Zap(bool), Greyscale(bool).
These replace Screen->WavyIn(), WavyOut(), ZapIn(), ZapOut()
GreyscaleOn(), and GreyscaleOff().

Added Link->Pushing. This returns the number of frames for which Link has been
walking in place, pushing on a solid object.
Note: I decided that this was better than hacking
a real pushing action in, or adding a fake action, as the latter would conflict
with existing scripts that use LA_WALKING for /n/ frames, to determine if
Link is walking in place, and thus, pushing on an object.
Link.cpp now sets script-engine only actions. Reading Link->Action reads these
rather than the actual, internal 'action' variable.
( ZoriaRPG, 9th December, 2017 )
This allows setting actions arbitrarily in Link.cpp to give scripts more useful access,
or adding arbitrary script actions, without affecting the hardcoded action stuff and
general frame timing.
I would prefer these set action bits, but then clearing them would be a mess.
Link->Action == DYING is still never set, despite setting (the fake ffcore) var earlier
than the engine variable. :(
( ZoriaRPG, 7th December, 2017 )
Revised the priority of Init and Continue scripts, to run immediately prior to the opening wipe.
Changed the priority of global Init and OnContinue scripts so that
they can affect environmental values before the opening wipe.
Let's hope that this didn't break anything. (Tosses coin). ( ZoriaRPG, 5th December, 2017 )
Added an automatic shop script (untested) to /testscripts.
Added a new path, /testscripts/* to the repo.
Added a flag to items/itemdata->PickupFlags that prevents the engine from
marking the string as having been played, as value 0x04, 'itemdataPSTRING_NOMARK'.
( ZoriaRPG, 3rd December, 2017 )
//Alpha 20
Fixed a conflict with item messages in shops, and shop messages.
The new behaviour is this:
1. Buying an item in a shop plays the shop string, not the item pickup string.
2. It does not set the FFCore flag for that item.
3. A placed or dropset item that is in a shop room will play the item string.
4. Placed / dropset items in shop rooms set the flag.
5. Shop items ignore if the flag for them is set.
Fixed an error in messagedata->Font
Fixed two missing commands in script_command command_list[]
( ZoriaRPG, 3rd December, 2017 )
Renamed Audio->AdjustVolume() to AdjustMusicVolume()
Items now have info strings that the user may set in the item editor.
These have a default behaviour, as follows:
1. If the user has never acquired the item in the current game session,
the string plays, and a flag is set in FFCore that that item has
displayed its string.
2. These flags are cleared on a complete exit on the game (not just a continue).
3. The user may set an ALWAYS flag to cause the string to always appear.
4. The user may set a flag ON_IP_HOLDUP, so that the string is always shown, if
the item is held over Link's head.
The string value, and the flags for it, are accessible in ZScript both from item, and
from itemdata.
The string is clamped in the item editor to valid strings.
If an invalid string ID is set, ZC does not play it.
( ZoriaRPG, 1st December, 2017 )
ZQuest Shops now have an info string. When you buy an item, if this is set to a valid string, ZC will display that string.
I'm working on making that work from items, too.
Increased combo aliases to 8192 (for Lut).
Added an info string to the item shop editor, and to the struct.
I think that the default behaviour for this, should be to show the
string when a player buys an item.
Added Audio->AdjustVolume(int percent) and AdjustSFXVolume(int percent)
( ZoriaRPG, 30th November, 2017 )
Began implementing the FFCore class. ( ZoriaRPG, 29th November, 2017 )

//Alpha 19

Added dmapdata with the following syntax.
dmapdata dmd = Game->LoadDMapData(id);
Functions:
SetName(), GetName(), SetTitle(), GetTitle(), SetIntro(), GetIntro()
SetMusic(), GetMusic();
Variables:
int Map, Level, Offset, Compass, Palette, MIDI, Continue, Type;
int MusicTrack, ActiveSubscreen, PassiveSubscreen, Grid[8];
int MiniMapTile[2], MiniMapCSet[2], MapTile[2], MapCSet[2];
int DisabledItems[256], Flags

Fixed missing Screen->WavtIn, WavyOut, ZapIn, and ZapOut.
Added messagedata vars and functions:
messagedata msgd = Game->LoadMessageData(msg_id);
msgd->Set("String");
int buffer_str[80];
msgd->Get(buffer_str);
Vars:
msgd->
int Next, Tile, CSet, Font, X, Y, Width, Height;
int SoundListPosition, VSpace, HSpace, Flags;
bool Transparent; (unused at this time).

( ZoriaRPG, 27th November, 2017 )

Added Audio->Volume[4] and Audio->PanStyle ( ZoriaRPG 26th November, 2017 )

Added bool Shield[5] to npc-> and npcdata->
The indices are { up, left, right, back, can_break } ( ZoriaRPG, 25th November, 2017 )

Added shopdata for item shops, and info shops.
Both types use the same ref, and thus, the same pointer type, called using:
shopdata shop = Game->LoadShopData(shop_id);
shopdata info = Game->LoadInfoShopData(shop_id).
The latter offsets the ID by +256. If the shop id is > 255, it is an info shop.
The members are:
shop->Price[3]
infoshop->Price[3]
infoshop->String[3]
shop->Item[3]
shop->HasItem[3]

If the user attempts to r/w to a variable that is inappropriate for the shop type,
ZScript will log an error informing them of the nature of the error.

Changed lweapon->ParentItem to lweapon->Parent.
Added eweapon->Parent (parent npc).
Added lweapon->Level and lweapon->ParentItem. ( ZoriaRPG, 24th November 2017 )

Un-typed initD and SizeOfArray().
Added preliminary, untyped Null() and an Untype() function to the global pointer. ( ZoriaRPG, 23rd November, 2017 )

Rebased 2.54 while backporting fixes to switch-case from master.
Renamed the 'nil' type to 'untyped'. ( Grayswandir, 22nd November, 2017 )

//Alpha 18
Added new datatypes: dmapdata, messagedata, shopdata, nil.
THe 'nil' type is untyped data. ( ZoriaRPG, 21st November, 2017 )

Don't miss a new ZQuestClassic release

NewReleases is sending notifications on new releases.