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 and set 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.