Tree | Branch | Item | Type | Fires when expected | Content as Expected | Bugs | Comments/future dev |
---|---|---|---|---|---|---|---|
Action | Possible add "you are attacked by" type information here. | ||||||
Heartbeat | Cache | Yes | Yes | ||||
Damage_dealt | Yes | Yes | |||||
Idle | Yes | Yes | |||||
Heartbeat_number | Yes | Yes | |||||
Xp | Yes | Yes | |||||
Damage_received | Yes | Yes | |||||
Round | Cache | Yes | Yes* | observed issue with stale heartbeat, not repeatable | |||
Round_Heartbeat_number | Yes | Yes* | Request: Add "Singing/Playing", here or effects (bard) | ||||
Calm | Yes | Yes* | I am not sure this information is available in the game using normal commands | ||||
Berserked | Yes | Yes* | null should be replaced by 0, see below | Shows Berserk levels
| |||
Protecting_here | Yes | Yes | |||||
Fighting | Yes | Yes | |||||
Hibernating | Yes | Yes |
| ||||
Meditating | Yes | Yes | Does not update when meditating |
| |||
Damage_dealt | Yes | Yes | Currently includes all damage, including effects from equip etc. This might be "more powerful" than you intend. I like it and would like to keep it | ||||
Damage_received | Yes | Yes | |||||
Spell | Event | No |
| Note, stoneskin used to work on (end) event | |||
Command | Event | No |
Added output below | I don't really have a usecast for this yet, as most of the persistant states are covered by effects. It would be relevant to determine "success" of commands like "bash". I am also not certain it needs to include the "cast" command, or "bury" commands | |||
Char | |||||||
Effects | Event | No* | Yes |
| General duration updates should be cyclic as now, however statechange (on/off) should be instant. possibly in a separate branch or item (char.EffectChanged("bless","off")) | ||
Inventory | Event | Yes | Future, include item weight? | ||||
Carrying | Yes | ||||||
Wielding | No | Lacking Shield in Wielding |
| ||||
Worn | Yes | Add location (Char.Inventory.Worn.Body= ...) | |||||
Skills | Event | Yes | |||||
Untrained | ? | Yes | |||||
Spells | Cache | No | Sometimes include a "0x0C" char (FF, form feed).
| Change "learnable" from string to "learnable.maj" etc? | |||
Status | Event | No | Bug on ac, see below | Missing Several attributes from sheet:
Possibly include "walking mode" here? Possibly include "schools" here? | |||
ac | ? | No | Shows 24 when AC on sheet is -25 | ||||
str | ? | Yes* | Content is string, this might be unavoidable but is inconsistent with other stats (might choose to have a numeric str, then a "str_string" to show extreme strength. Or numeric, but float (18.6) | ||||
Vitals | Event | Yes | |||||
Worth | Event | Yes | |||||
Comm | |||||||
Channel | Cache | No | No | Shout does not work (does not fire Channel | Add history on channels, pollable (aka shout <40) | ||
Tell | Cache | Yes | Yes | ||||
Say | Cache | Yes | Yes | Does not work with "mutter" | |||
Game | |||||||
Time | Event | Yes | Could contain info from "date" command (Year, Month, Day, Hour, Minute) (note these are mud dates) | ||||
Who | Cache | No | No | never fired | |||
Omiqs | Cache | No | No | never fired | |||
Group | |||||||
Faction | Cache | Yes | |||||
Party | Event | Yes | |||||
Groups | Cache | Yes* | Not sure, only have guild, dont know what it looks like with sig | ||||
Room | |||||||
Info | Cache | No? |
| ||||
WrongDir | Cache | Yes | Yes | Typo in name in help wiki, should be "WrongDir" | |||
Blockdir | Cache | Yes? | Not sure what this means, i can see it has fired on some chars, it does not indicate a movement that was blocked (e.g. by thorn hedge). It does not indicate a direction blocked by wall of thorns |
Action.Round.Berserked - null
Mudlet does not really like the null object
- because it does not have a tostring method
- because it isnt a string
- because it isnt really a number
- because it isnt the lua nil object
We can workaround this in Lua by doing the following:
rd = gmcp.Action.Round rd.Berserked = tonumber(rd.Berserked) if rd.Berserked == nil then rd.Berserked = 0 end
This will replace the null with 0, however, it would be more convenient if the null was replaced with 0 on the server side to ensure consistent behavior.
Action.Round - Stale data
You crush Rat with your Talin Thunder for 36 HPs damage. Snake misses you. Rat misses you. Rat misses you. onGmcpActionRound { Hunting = { }, Round_Heartbeat_number = 1600625828, Protected_by = { "tarek" }, Berserked = "No", Fighting = { }, Damage_dealt = 4, Hibernating = "No", Meditating = "No", Calm = "Yes", Damage_received = 0 } onGmcpCharEffects() { ["Berserk Fatigue"] = 99 } ------------------- You flatten Snake with your Talin Thunder for 30 HPs damage. Snake misses you. Rat misses you. Rat misses you. Your Pendant of Power slashes Snake. onGmcpActionRound { Hunting = { }, Round_Heartbeat_number = 1600625828, Protected_by = { "tarek" }, Berserked = "No", Fighting = { }, Damage_dealt = 4, Hibernating = "No", Meditating = "No", Calm = "Yes", Damage_received = 0 } onGmcpCharEffects() { ["Berserk Fatigue"] = 97 } ------------------- You pulverize Rat with your Talin Thunder for 34 HPs damage. Snake misses you. Rat misses you. Rat misses you. You dealt the death blow to Rat. Rat dies. onGmcpActionRound { Hunting = { }, Round_Heartbeat_number = 1600625828, Protected_by = { "tarek" }, Berserked = "No", Fighting = { }, Damage_dealt = 4, Hibernating = "No", Meditating = "No", Calm = "Yes", Damage_received = 0 } onGmcpCharEffects() { ["Berserk Fatigue"] = 95 } ------------------- You crush Rat with your Talin Thunder for 32 HPs damage. Snake misses you. Rat misses you. onGmcpActionRound { Hunting = { }, Round_Heartbeat_number = 1600625828, Protected_by = { "tarek" }, Berserked = "No", Fighting = { }, Damage_dealt = 4, Hibernating = "No", Meditating = "No", Calm = "Yes", Damage_received = 0 } onGmcpCharEffects() { ["Berserk Fatigue"] = 93 } ------------------- You pulverize Snake with your Talin Thunder for 53 HPs damage. You pulverize Snake with your Talin Thunder for 26 HPs damage. Snake misses you. Rat misses you. You dealt the death blow to Snake. Snake dies. Your Pendant of Power slashes Rat. onGmcpActionRound { Hunting = { }, Round_Heartbeat_number = 1600625880, Protected_by = { "tarek" }, Berserked = "No", Fighting = { }, Damage_dealt = 57, Hibernating = "No", Meditating = "No", Calm = "No", Damage_received = 0 } onGmcpCharEffects() { ["Berserk Fatigue"] = 91 } -------------------
gmcp.Char.Action.Command / gmcp.Char.Effects
// Notice that "evade end" leads to unpredicted results // Also notice that evade end, does not trigger an instant gmcp.Char.Effects > evade onGmcpActionCommand { trigger = "command", initiate = "start", command = "evade" } --------------- You begin to concentrate on evading attack. ... onGmcpCharEffects() { ["Lockout : Commands"] = 0, Bless = 150, evade = 35 } ... onGmcpCharEffects() { Bless = 148, evade = 33 } .... > evade end onGmcpActionCommand { trigger = "command", initiate = "start", target = "end", command = "evade" } --------------- You grow tired of holding your defensive stance. ..... ..... ..... ..... ..... onGmcpCharEffects() { Bless = 146 }
gmcp.Group.Who - bad content
<Lua error:InvalidJSONInput: parse error: unallowed token at this point in JSON text Galinna","Tarek"],"players":[,,,,,,,,,,,,,,,,,,,,,,,],"time" (right here) ------^ at lua_yajl.c line 253>