uox3/source/cEffects.h
Dragon Slayer d86725cd43 feat(magic): support configurable spellbook expansions
Make spell and spellbook ranges data-driven so custom schools can extend beyond the original Magery limits.

- add SPELLBOOKDATA persistence and use configured spell/scroll ranges across book lookup, display, packets, scroll drops, and casting
- load spell definitions by their highest configured ID and widen spell IDs through core and JavaScript event paths
- support section-based custom reagents with optional amounts and colors, including JavaScript inspection
- add script-owned temporary effects with pause, resume, removal, and expiration callbacks
2026-07-22 16:01:21 -05:00

42 lines
2.3 KiB
C++

#ifndef __CEFFECTS_H__
#define __CEFFECTS_H__
class cEffects
{
private:
void HandleMakeItemEffect( CTEffect *tMake );
public:
void TempEffect( CChar *source, CChar *dest, UI08 num, UI16 more1, UI16 more2, UI16 more3, CItem *targItemPtr = nullptr, UI16 assocScript = 0xFFFF );
void TempEffect( CChar *source, CItem *dest, UI08 num, UI16 more1, UI16 more2, UI16 more3, UI16 assocScript = 0xFFFF );
void CheckTempeffects( void );
void SaveEffects( void );
void LoadEffects( void );
// Visual Effects
void DeathAction( CChar *s, CItem *x, UI08 fallDirection );
CItem * SpawnBloodEffect( UI08 worldNum, UI16 instanceId, UI16 bloodColour, BloodTypes bloodType );
void PlayStaticAnimation( CBaseObject *target, UI16 effect, UI08 speed, UI08 loop, bool explode = false );
void PlayStaticAnimation( SI16 x, SI16 y, SI08 z, UI16 effect, UI08 speed, UI08 loop, bool explode );
void PlayMovingAnimation( CBaseObject *source, CBaseObject *dest, UI16 effect, UI08 speed, UI08 loop, bool explode, UI32 dwHue = 0, UI32 dwRenderMode = 0, bool playLocalMoveFX = false );
void PlayMovingAnimation( SI16 srcX, SI16 srcY, SI08 srcZ, SI16 x, SI16 y, SI08 z, UI16 effect, UI08 speed, UI08 loop, bool explode, UI32 dwHue = 0, UI32 dwRenderMode = 0, bool playLocalMoveFX = false );
void PlayMovingAnimation( CBaseObject *source, SI16 x, SI16 y, SI08 z, UI16 effect, UI08 speed, UI08 loop, bool explode, UI32 dwHue = 0, UI32 dwRenderMode = 0, bool playLocalMoveFX = false );
void PlayCharacterAnimation( CChar *mChar, UI16 actionId, UI08 frameDelay = 0, UI08 frameCount = 7, bool playBackwards = false );
void PlayNewCharacterAnimation( CChar *mChar, UI16 actionId, UI16 subActionId = 0, UI08 subSubActionId = 0 );
void PlaySpellCastingAnimation( CChar *mChar, UI16 actionId, bool monsterCast, bool areaCastAnim );
void Bolteffect( CChar *player );
// Sound Effects
void PlaySound( CSocket *mSock, UI16 soundId, bool allHear );
void PlaySound( CBaseObject *baseObj, UI16 soundId, bool allHear = true );
void PlayBGSound( CSocket& mSock, CChar& mChar );
void ItemSound( CSocket *s, CItem *item, bool bAllHear = false );
void GoldSound( CSocket *s, UI32 goldTotal, bool bAllHear = false);
void PlayTileSound( CChar *mChar, CSocket *mSock );
void PlayDeathSound( CChar *i );
void PlayMusic( CSocket *s, UI16 number );
void DoSocketMusic( CSocket *s );
};
extern cEffects *Effects;
#endif