User:Crush/Scripting
From The Mana World
ToDo List for script bindings on the new server:
World Interaction
- Modify the map
- Collision
- Tile appearance
- Overlays
- Music
- Game rules like PvP allowed/denied.
- Activate weather effects
- Query and set persistent global variables
Spawn particle effects- Global announcements
- Check walkability of tiles
Being interaction
Spawn beings- Move beings
Hurt beings- Make beings perform different actions
- Remove beings
- Callback functions for events like
death- leave game
- change map
- getting hurt
Get beings in area- Apply/Remove status effects to beings
Query andset being attributes- GM Cheats
- Query the direction a being is facing
Character interaction
- query/set hairstyle and color
query and set skill experience
Player interaction
Sending private chat messages- Sending dialog box messages (and catch the players answer?)
- Maybe control GUI windows? (could be useful for tutorial)
Dialog system
- Text input boxes
- Show images
Chat interaction
- Log chat channels
- Send messages to chat channels
- Filter chat channels (useful for flexible censorship systems) - needs either script support on account server or the netcode to route the chat of a chat channel through a game server when it is requested by it.
- access / control users in chat channel
AI
- Command monsters
- Override attack target selection
- Override move target selection
- Make the monster use combat abilities
- Override spawn and death events
Idea: class ScriptedMonster is a derivate from class Monster. It replaces every member function of the monster class with a call to a LUA function. This LUA function can call the function from the base class. This would allow to selectively replace or complement any behavior of the monster. This requires:
- Access to all member variables and functions of class Monster (including protected variables)
General
Set timers- Querry external data sources (already possible with LUA interpreter?)
- Local file
- HTTP
- Database
Inter-map scripting
- Executing script code in the context of the script object of another map which might even be on a different server.