Proxy Records: Difference between revisions

From Kolmafia
Jump to navigation Jump to search
imported>Bale
update
No edit summary
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Proxy Records is a way for KoLmafia to pass additional information to the scripter. Many datatypes contain these proxy records. such as items, skills, effects, monsters and coinmasters. This information is referred to as proxy records because the manner of reference is similar to a field of a [[Data_Structures#Records|record]].
Proxy records are special records associated with the special [[Data Types|data types]] available to scripters. These records are always available for the special datatypes. The fields in a proxy record are referenced in the same manner as a [[Data_Structures#Records|record]].


==Special Datatypes==


{{CodeSample|
===bounty===
description=This is an example of how to retrieve proxy record information in a script. Notice it uses the same notation as if the item datatype is a record.|
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
code=<syntaxhighlight>
|- | style="background-color: #F2F2F2"
item it = $item[coffee pixie stick];
|-
print("You can buy a "+ it +" at the "+ it.seller);
! Field
print("It will consume "+ it.spleen +" spleen and give "+ it.adventures +" adventures.");
! Data type
</syntaxhighlight>}}
! Default value
! ASH Accessor Function / Notes
|-
| plural
| string
| ""
|
|-
| type
| string
| ""
|
|-
| kol_internal_type
| string
| ""
|
|-
| number
| int
| 0
|
|-
| image
| string
| ""
|
|-
| monster
| monster
| none
|
|-
| location
| location
| none
|
|}


===class===
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
|- | style="background-color: #F2F2F2"
|-
! Field
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| primestat
| stat
| Muscle
|
|}


Here's an example of displaying a proxy record in the CLI. Note that it displays all fields associated with that datatype.
===coinmaster===
<pre>
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
> ash $item[coffee pixie stick]
|- | style="background-color: #F2F2F2"
|-
! Field
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| token
| string
| ""
|
|-
| item
| item
| none
|
|-
| property
| string
| ""
|
|-
| available_tokens
| int
| 0
|
|-
| buys
| boolean
| false
|
|-
| sells
| boolean
| false
|
|}


Returned: coffee pixie stick
===effect===
plural => coffee pixie sticks
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
descid => 936288573
|- | style="background-color: #F2F2F2"
image => cpstick.gif
|-
smallimage => cpstick.gif
! Field
levelreq => 4
! Data type
quality =>
! Default value
adventures => 5-10
! ASH Accessor Function / Notes
muscle => 0
|-
mysticality => 0
| default
moxie => 0
| string
fullness => 0
| ""
inebriety => 0
|
spleen => 4
|-
minhp => 0
| note
maxhp => 0
| string
minmp => 0
| ""
maxmp => 0
|
dailyusesleft => 0
|-
notes =>
| all
quest => false
| aggregate
gift => false
boolean [string] =>
tradeable => false
|
discardable => true
|-
combat => false
| image
combat_reusable => false
| string
usable => true
| "/images/debug.gif"
reusable => false
|
multi => true
|-
fancy => false
| descid
candy => false
| string
seller => Arcade Ticket Counter
| ""
buyer => none
|
name_length => 18
|}


> ash $coinmaster[Arcade Ticket Counter]
===element===
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
|- | style="background-color: #F2F2F2"
|-
! Field
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| image
| string
| "circle.gif"
|
|}


Returned: Arcade Ticket Counter
===familiar===
token => ticket
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
item => Game Grid ticket
|- | style="background-color: #F2F2F2"
property =>
|-
available_tokens => 0
! Field
buys => false
! Data type
sells => true
! Default value
! ASH Accessor Function / Notes
|-
| hatchling
| item
| none
|
|-
| image
| string
| "debug.gif"
|
|-
| name
| string
| ""
|
|-
| experience
| int
| 0
|
|-
| charges
| int
| 0
|
|-
| drop_name
| string
| ""
|
|-
| drop_item
| item
| none
|
|-
| drops_today
| int
| 0
|
|-
| drops_limit
| int
| 0
|
|-
| combat
| boolean
| false
|
|-
| physical_damage
| boolean
| false
|
|-
| elemental_damage
| boolean
| false
|
|-
| block
| boolean
| false
|
|-
| delevel
| boolean
| false
|
|-
| hp_during_combat
| boolean
| false
|
|-
| mp_during_combat
| boolean
| false
|
|-
| other_action_during_combat
| boolean
| false
|
|-
| hp_after_combat
| boolean
| false
|
|-
| mp_after_combat
| boolean
| false
|
|-
| other_action_after_combat
| boolean
| false
|
|-
| passive
| boolean
| false
|
|-
| variable
| boolean
| false
|
|}


> ash $location[The Penultimate Fantasy Airship]
===item===
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
|- | style="background-color: #F2F2F2"
|-
! Field
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| plural
| string
| ""
|
|-
| descid
| string
| ""
|
|-
| image
| string
| ""
|
|-
| smallimage
| string
| ""
|
|-
| levelreq
| int
| 0
|
|-
| quality
| string
| ""
|
|-
| adventures
| string
| ""
|
|-
| muscle
| string
| ""
|
|-
| mysticality
| string
| ""
|
|-
| moxie
| string
| ""
|
|-
| fullness
| int
| 0
|
|-
| inebriety
| int
| 0
|
|-
| spleen
| int
| 0
|
|-
| minhp
| int
| 0
|
|-
| maxhp
| int
| 0
|
|-
| minmp
| int
| 0
|
|-
| maxmp
| int
| 0
|
|-
| dailyusesleft
| int
| 0
|
|-
| notes
| string
| ""
|
|-
| quest
| boolean
| false
|
|-
| gift
| boolean
| false
|
|-
| tradeable
| boolean
| false
|
|-
| discardable
| boolean
| false
|
|-
| combat
| boolean
| false
|
|-
| combat_reusable
| boolean
| false
|
|-
| usable
| boolean
| false
|
|-
| reusable
| boolean
| false
|
|-
| multi
| boolean
| false
|
|-
| fancy
| boolean
| false
|
|-
| candy
| boolean
| false
|
|-
| seller
| coinmaster
| none
|
|-
| buyer
| coinmaster
| none
|
|-
| name_length
| int
| 0
|
|}


Returned: The Penultimate Fantasy Airship
===location===
nocombats => false
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
zone => Beanstalk
|- | style="background-color: #F2F2F2"
parent => Beanstalk
|-
parentdesc => Above the Beanstalk
! Field
environment => outdoor
! Data type
bounty => burned-out arcanodiode
! Default value
combat_queue => MagiMechTech MechaMech; Quiet Healer; MagiMechTech MechaMech; MagiMechTech MechaMech; lobsterfrogman
! ASH Accessor Function / Notes
noncombat_queue => Random Lack of an Encounter; Random Lack of an Encounter; F-F-Fantastic!; Rainy Fax Dreams on your Wedding Day; Rainy Fax Dreams on your Wedding Day
|-
turns_spent => 30
| id
kisses => 0
| int
recommended_stat => 90
| 0
water_level => 2
|
|-
| nocombats
| boolean
| false
|
|-
| combat_percent
| float
| 0.0
|
|-
| zone
| string
| ""
|
|-
| parent
| string
| ""
|
|-
| parentdesc
| string
| ""
|
|-
| environment
| string
| ""
|
|-
| fire_level
| int
| 0
|
|-
| bounty
| bounty
| none
|
|-
| combat_queue
| string
| ""
|
|-
| noncombat_queue
| string
| ""
|
|-
| turns_spent
| int
| 0
|
|-
| kisses
| int
| 0
|
|-
| recommended_stat
| int
| 0
|
|-
| water_level
| int
| 0
|
|-
| wanderers
| boolean
| false
|
|}


> ash $skill[empathy of the newt]
===monster===
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
|- | style="background-color: #F2F2F2"
|-
! Field
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| id
| int
| 0
|
|-
| base_hp
| int
| 0
| {{f|monster_hp}} (includes modifiers)
|-
| base_attack
| int
| 0
| {{f|monster_attack}} (includes modifiers)
|-
| base_defense
| int
| 0
| {{f|monster_defense}} (includes modifiers)
|-
| raw_hp
| int
| 0
| (excludes modifiers)
|-
| raw_attack
| int
| 0
| (excludes modifiers)
|-
| raw_defense
| int
| 0
| (excludes modifiers)
|-
| base_initiative
| int
| 0
| {{f|monster_initiative}} (includes modifiers)
|-
| raw_initiative
| int
| 0
| (excludes modifiers)
|-
| element attack_element
| element
| none
|
|-
| element defense_element
| element
| none
| {{f|monster_element}}
|-
| physical_resistance
| int
| 0
|
|-
| min_meat
| int
| 0
| (excludes modifiers)
|-
| max_meat
| int
| 0
| (excludes modifiers)
|-
| base_mainstat_exp
| float
| 0.0
| (includes bonus stats from +ML, but not from +stat effects)
|-
| phylum
| phylum
| none
| {{f|monster_phylum}}
|-
| poison
| effect
| none
|
|-
| boss
| boolean
| false
|
|-
| dummy
| boolean
| false
|
|-
| image
| string
| ""
|
|-
| images
| aggregate boolean [string]
|
|
|-
| attributes
| string
| ""
| A compilation of attack, defense, initiative, element, meat drop, and phylum
|-
| random_modifiers
| aggregate boolean [string]
|
| The monster's random modifiers - like those generated in the One Crazy Random Summer path
|-
| manuel_name
| string
| ""
|
|}


Returned: Empathy of the Newt
===path===
level => 8
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
image => empathy.gif
|- | style="background-color: #F2F2F2"
traincost => 3250
|-
class => Turtle Tamer
! Field
libram => false
! Data type
passive => false
! Default value
buff => true
! ASH Accessor Function / Notes
combat => false
|-
song => false
| id
expression => false
| int
permable => true
| 0
dailylimit => -1
|
timescast => 1
|-
| name
| string
| ""
|
|-
| avatar
| boolean
| false
| Whether this path overrides the character's class
|-
| image
| string
| "blank.gif"
|
|-
| points
| int
| 0
| The number of path points the current character has accumulated, if available
|-
| familiars
| boolean
| true
| Whether the path allows familiars
|}


> ash $familiar[slimeling]
===phylum===
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
|- | style="background-color: #F2F2F2"
|-
! Field
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| image
| string
| none
|
|}


Returned: Slimeling
===servant===
combat => true
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
hatchling => squirming Slime larva
|- | style="background-color: #F2F2F2"
image => slimeling.gif
|-
name => Princess Vina
! Field
charges => 0
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| id
| int
| 0
|
|-
| name
| string
| ""
|
|-
| level
| int
| 0
|
|-
| experience
| int
| 0
|
|-
| image
| string
| ""
|
|-
| level1_ability
| string
| ""
|
|-
| level7_ability
| string
| ""
|
|-
| level14_ability
| string
| ""
|
|-
| level21_ability
| string
| ""
|
|}


> ash $monster[black widow]
===skill===
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
|- | style="background-color: #F2F2F2"
|-
! Field
! Data type
! Default value
! ASH Accessor Function / Notes
|-
| level
| int
| -1
|
|-
| image
| string
| none
|
|-
| traincost
| int
| 0
|
|-
| class
| class
| none
|
|-
| libram
| boolean
| false
|
|-
| passive
| boolean
| false
|
|-
| buff
| boolean
| false
|
|-
| combat
| boolean
| false
|
|-
| song
| boolean
| false
| Avatar of Boris song
|-
| expression
| boolean
| false
|
|-
| summon
| boolean
| false
|
|-
| permable
| boolean
| true
|
|-
| dailylimit
| int
| -1
|
|-
| timescast
| int
| 0
|
|}


Returned: black widow
=== slot ===
base_hp => 257
Slot does not have any fields.
base_attack => 268
base_defense => 246
raw_hp => 121
raw_attack => 132
raw_defense => 110
base_initiative => 430
raw_initiative => 50
attack_element => none
defense_element => none
physical_resistance => 0
min_meat => 40
max_meat => 60
base_mainstat_exp => 56.16666666666667
phylum => bug
poison => Really Quite Poisoned
boss => false
image => blackwidow.gif
attributes => Atk: 132 Def: 110 HP: 121 Init: 50 Meat: 50 "Really Quite Poisoned" P: bug


> ash $effect[sugar rush]
===stat===
Stat does not have any fields.


Returned: Sugar Rush
===thrall===
default => use either 1 Angry Farmer candy, 1 Tasty Fun Good rice candy, 1 Crimbo candied pecan, Crimbo fudge, Crimbo peppermint bark, 1 Breath mint, 1 that gum you like
{| cellpadding="3" cellspacing="0" border="1px" class="sortable"
note =>
|- | style="background-color: #F2F2F2"
all => aggregate boolean [string]
|-
  use 1 Angry Farmer candy => true
! Field
  use 1 Tasty Fun Good rice candy => true
! Data type
  use 1 Crimbo candied pecan => true
! Default value
  use Crimbo fudge => true
! ASH Accessor Function / Notes
  use Crimbo peppermint bark => true
|-
  use 1 Breath mint => true
| id
  use 1 that gum you like => true
| int
image => http://images.kingdomofloathing.com/itemimages/hoppedup.gif
| 0
descid => 83695b70e0470a36125feca3198a16b4
|
 
|-
> ash $thrall[Spice Ghost]
| name
 
| string
Returned: Spice Ghost
| ""
id => 7
|
name =>
|-
level => 0
| level
image => spiceghost.gif
| int
tinyimage => t_spiceghost.gif
| 0
skill => Bind Spice Ghost
|
current_modifiers =>
|-
</pre>
| image
 
| string
[[Category:Scripting]]
| ""
|
|-
| tinyimage
| string
| ""
|
|-
| skill
| skill
| none
|
|-
| current_modifiers
| string
| ""
|
|}

Latest revision as of 19:33, 2 October 2022

Proxy records are special records associated with the special data types available to scripters. These records are always available for the special datatypes. The fields in a proxy record are referenced in the same manner as a record.

Special Datatypes

bounty

Field Data type Default value ASH Accessor Function / Notes
plural string ""
type string ""
kol_internal_type string ""
number int 0
image string ""
monster monster none
location location none

class

Field Data type Default value ASH Accessor Function / Notes
primestat stat Muscle

coinmaster

Field Data type Default value ASH Accessor Function / Notes
token string ""
item item none
property string ""
available_tokens int 0
buys boolean false
sells boolean false

effect

Field Data type Default value ASH Accessor Function / Notes
default string ""
note string ""
all aggregate

boolean [string] =>

image string "/images/debug.gif"
descid string ""

element

Field Data type Default value ASH Accessor Function / Notes
image string "circle.gif"

familiar

Field Data type Default value ASH Accessor Function / Notes
hatchling item none
image string "debug.gif"
name string ""
experience int 0
charges int 0
drop_name string ""
drop_item item none
drops_today int 0
drops_limit int 0
combat boolean false
physical_damage boolean false
elemental_damage boolean false
block boolean false
delevel boolean false
hp_during_combat boolean false
mp_during_combat boolean false
other_action_during_combat boolean false
hp_after_combat boolean false
mp_after_combat boolean false
other_action_after_combat boolean false
passive boolean false
variable boolean false

item

Field Data type Default value ASH Accessor Function / Notes
plural string ""
descid string ""
image string ""
smallimage string ""
levelreq int 0
quality string ""
adventures string ""
muscle string ""
mysticality string ""
moxie string ""
fullness int 0
inebriety int 0
spleen int 0
minhp int 0
maxhp int 0
minmp int 0
maxmp int 0
dailyusesleft int 0
notes string ""
quest boolean false
gift boolean false
tradeable boolean false
discardable boolean false
combat boolean false
combat_reusable boolean false
usable boolean false
reusable boolean false
multi boolean false
fancy boolean false
candy boolean false
seller coinmaster none
buyer coinmaster none
name_length int 0

location

Field Data type Default value ASH Accessor Function / Notes
id int 0
nocombats boolean false
combat_percent float 0.0
zone string ""
parent string ""
parentdesc string ""
environment string ""
fire_level int 0
bounty bounty none
combat_queue string ""
noncombat_queue string ""
turns_spent int 0
kisses int 0
recommended_stat int 0
water_level int 0
wanderers boolean false

monster

Field Data type Default value ASH Accessor Function / Notes
id int 0
base_hp int 0 monster_hp() (includes modifiers)
base_attack int 0 monster_attack() (includes modifiers)
base_defense int 0 monster_defense() (includes modifiers)
raw_hp int 0 (excludes modifiers)
raw_attack int 0 (excludes modifiers)
raw_defense int 0 (excludes modifiers)
base_initiative int 0 monster_initiative() (includes modifiers)
raw_initiative int 0 (excludes modifiers)
element attack_element element none
element defense_element element none monster_element()
physical_resistance int 0
min_meat int 0 (excludes modifiers)
max_meat int 0 (excludes modifiers)
base_mainstat_exp float 0.0 (includes bonus stats from +ML, but not from +stat effects)
phylum phylum none monster_phylum()
poison effect none
boss boolean false
dummy boolean false
image string ""
images aggregate boolean [string]
attributes string "" A compilation of attack, defense, initiative, element, meat drop, and phylum
random_modifiers aggregate boolean [string] The monster's random modifiers - like those generated in the One Crazy Random Summer path
manuel_name string ""

path

Field Data type Default value ASH Accessor Function / Notes
id int 0
name string ""
avatar boolean false Whether this path overrides the character's class
image string "blank.gif"
points int 0 The number of path points the current character has accumulated, if available
familiars boolean true Whether the path allows familiars

phylum

Field Data type Default value ASH Accessor Function / Notes
image string none

servant

Field Data type Default value ASH Accessor Function / Notes
id int 0
name string ""
level int 0
experience int 0
image string ""
level1_ability string ""
level7_ability string ""
level14_ability string ""
level21_ability string ""

skill

Field Data type Default value ASH Accessor Function / Notes
level int -1
image string none
traincost int 0
class class none
libram boolean false
passive boolean false
buff boolean false
combat boolean false
song boolean false Avatar of Boris song
expression boolean false
summon boolean false
permable boolean true
dailylimit int -1
timescast int 0

slot

Slot does not have any fields.

stat

Stat does not have any fields.

thrall

Field Data type Default value ASH Accessor Function / Notes
id int 0
name string ""
level int 0
image string ""
tinyimage string ""
skill skill none
current_modifiers string ""