Updates for Unit Controller Script Commands

* Follow up to 2cee5b6.
* Fixes #516 - Base stats (STR, AGI, etc) will now stick after the unit's statuses are recalculated.
* Statuses are directly modifiable now (ATK, DEF, etc)
* Created constant values so it's a lot easier to read.
* Updated script command documentation to reflect changes.
This commit is contained in:
aleos89 2015-11-14 11:47:38 -05:00
parent 27858bd43d
commit e276970723
3 changed files with 995 additions and 301 deletions

View File

@ -7151,69 +7151,95 @@ This is used to get and set special data related to the unit.
With getunitdata, the array given will be filled with the current data. In setunitdata With getunitdata, the array given will be filled with the current data. In setunitdata
the indexes in the array would be used to set that data on the unit. the indexes in the array would be used to set that data on the unit.
Parameters (indexes) for monsters are: Note: When adjusting a unit's stat (STR, AGI, etc) the unit's respective statuses are
recalculated (HIT, FLEE, etc) automatically. Keep in mind that some stats don't
affect a unit's status and will have to directly be modified.
0 - size (big, small, normal) 7 - y 14 - hair style 21 - weapon 28 - LUK Parameters (indexes) for monsters are:
1 - level 8 - speed 15 - hair color 22 - looking dir 29 - for slave to copy master's mode UMOB_SIZE UMOB_Y UMOB_HAIRSTYLE UMOB_WEAPON UMOB_LUK UMOB_MDEF UMOB_ELELEVEL
2 - HP 9 - mode 16 - head gear bottom 23 - STR 30 - immune from attacks state UMOB_LEVEL UMOB_SPEED UMOB_HAIRCOLOR UMOB_LOOKDIR UMOB_SLAVECPYMSTRMD UMOB_HIT UMOB_AMOTION
3 - max HP 10 - special AI state 17 - head gear middle 24 - AGI UMOB_HP UMOB_MODE UMOB_HEADBOTTOM UMOB_STR UMOB_DMGIMMUNE UMOB_FLEE UMOB_ADELAY
4 - master AID 11 - SC option 18 - head gear top 25 - VIT UMOB_MAXHP UMOB_AI UMOB_HEADMIDDLE UMOB_AGI UMOB_ATKRANGE UMOB_PDODGE UMOB_DMOTION
5 - map ID 12 - sex 19 - cloth color 26 - INT UMOB_MASTERAID UMOB_SCOPTION UMOB_HEADTOP UMOB_VIT UMOB_ATK UMOB_CRIT
6 - x 13 - class (Monster ID, Job ID) 20 - shield 27 - DEX UMOB_MAPID UMOB_SEX UMOB_CLOTHCOLOR UMOB_INT UMOB_MATK UMOB_RACE
UMOB_X UMOB_CLASS UMOB_SHIELD UMOB_DEX UMOB_DEF UMOB_ELETYPE
-----
Parameter (indexes) for homunculi are: Parameter (indexes) for homunculi are:
UHOM_SIZE UHOM_MAPID UHOM_CANMOVETICK UHOM_DMGIMMUNE UHOM_FLEE UHOM_ADELAY
UHOM_LEVEL UHOM_X UHOM_STR UHOM_ATKRANGE UHOM_PDODGE UHOM_DMOTION
UHOM_HP UHOM_Y UHOM_AGI UHOM_ATK UHOM_CRIT
UHOM_MAXHP UHOM_HUNGER UHOM_VIT UHOM_MATK UHOM_RACE
UHOM_SP UHOM_INTIMACY UHOM_INT UHOM_DEF UHOM_ELETYPE
UHOM_MAXSP UHOM_SPEED UHOM_DEX UHOM_MDEF UHOM_ELELEVEL
UHOM_MASTERCID UHOM_LOOKDIR UHOM_LUK UHOM_HIT UHOM_AMOTION
0 - size (big, small, normal) 7 - map ID 14 - canmove_tick 21 - immune from attacks state -----
1 - level 8 - x 15 - STR
2 - HP 9 - y 16 - AGI
3 - max HP 10 - hunger 17 - VIT
4 - SP 11 - intimacy 18 - INT
5 - max SP 12 - speed 19 - DEX
6 - master Character ID 13 - looking dir 20 - LUK
Parameter (indexes) for pets are: Parameter (indexes) for pets are:
UPET_SIZE UPET_Y UPET_AGI UPET_ATK UPET_CRIT
UPET_LEVEL UPET_HUNGER UPET_VIT UPET_MATK UPET_RACE
UPET_HP UPET_INTIMACY UPET_INT UPET_DEF UPET_ELETYPE
UPET_MAXHP UPET_SPEED UPET_DEX UPET_MDEF UPET_ELELEVEL
UPET_MASTERAID UPET_LOOKDIR UPET_LUK UPET_HIT UPET_AMOTION
UPET_MAPID UPET_CANMOVETICK UPET_DMGIMMUNE UPET_FLEE UPET_ADELAY
UPET_X UPET_STR UPET_ATKRANGE UPET_PDODGE UPET_DMOTION
0 - size (big, small, normal) 7 - y 14 - AGI -----
1 - level 8 - hunger 15 - VIT
2 - HP 9 - intimacy 16 - INT
3 - max HP 10 - speed 17 - DEX
4 - master AID 11 - looking dir 18 - LUK
5 - map ID 12 - canmove_tick 19 - immune from attacks state
6 - x 13 - STR
Parameter (indexes) for mercenaries are: Parameter (indexes) for mercenaries are:
UMER_SIZE UMER_KILLCOUNT UMER_VIT UMER_MATK UMER_RACE
UMER_HP UMER_LIFETIME UMER_INT UMER_DEF UMER_ELETYPE
UMER_MAXHP UMER_SPEED UMER_DEX UMER_MDEF UMER_ELELEVEL
UMER_MASTERCID UMER_LOOKDIR UMER_LUK UMER_HIT UMER_AMOTION
UMER_MAPID UMER_CANMOVETICK UMER_DMGIMMUNE UMER_FLEE UMER_ADELAY
UMER_X UMER_STR UMER_ATKRANGE UMER_PDODGE UMER_DMOTION
UMER_Y UMER_AGI UMER_ATK UMER_CRIT
0 - size (big, small, normal) 7 - kill count 14 - VIT -----
1 - HP 8 - life time 15 - INT
2 - max HP 9 - speed 16 - DEX
3 - master Character ID 10 - looking dir 17 - LUK
4 - map ID 11 - canmove_tick 18 - immune from attacks state
5 - x 12 - STR
6 - y 13 - AGI
Parameter (indexes) for elementals are: Parameter (indexes) for elementals are:
UELE_SIZE UELE_X UELE_STR UELE_ATKRANGE UELE_PDODGE UELE_DMOTION
UELE_HP UELE_Y UELE_AGI UELE_ATK UELE_CRIT
UELE_MAXHP UELE_LIFETIME UELE_VIT UELE_MATK UELE_RACE
UELE_SP UELE_MODE UELE_INT UELE_DEF UELE_ELETYPE
UELE_MAXSP UELE_SPEED UELE_DEX UELE_MDEF UELE_ELELEVEL
UELE_MASTERCID UELE_LOOKDIR UELE_LUK UELE_HIT UELE_AMOTION
UELE_MAPID UELE_CANMOVETICK UELE_DMGIMMUNE UELE_FLEE ELE_ADELAY
0 - size (big, small, normal) 7 - x 14 - STR -----
1 - HP 8 - y 15 - AGI
2 - max HP 9 - life time 16 - VIT
3 - SP 10 - mode 17 - INT
4 - max SP 11 - speed 18 - DEX
5 - master Character ID 12 - looking dir 19 - LUK
6 - map ID 13 - canmove_tick 20 - immune from attacks state
Parameter (indexes) for NPCs are: Parameter (indexes) for NPCs are:
UNPC_DISPLAY UNPC_LOOKDIR UNPC_PLUSALLSTAT UNPC_HIT UNPC_AMOTION
UNPC_LEVEL UNPC_STR UNPC_DMGIMMUNE UNPC_FLEE UNPC_ADELAY
UNPC_HP UNPC_AGI UNPC_ATKRANGE UNPC_PDODGE UNPC_DMOTION
UNPC_MAXHP UNPC_VIT UNPC_ATK UNPC_CRIT
UNPC_MAPID UNPC_INT UNPC_MATK UNPC_RACE
UNPC_X UNPC_DEX UNPC_DEF UNPC_ELETYPE
UNPC_Y UNPC_LUK UNPC_MDEF UNPC_ELELEVEL
0 - display 7 - looking dir *Notes:
1 - level 8 - STR - *_SIZE: small (0); medium (1); large (2)
2 - HP 9 - AGI - *_MAPID: this refers to the map_data index (from src/map/map.c), not the mapindex_db index (from src/common/mapindex.c)
3 - max HP 10 - VIT -- For 'setunitdata', map name can also be passed in as a valid value instead of map ID
4 - map ID 11 - INT - *_SPEED: 20 - 1000
5 - x 12 - DEX - *_MODE: see doc/mob_db_mode_list.txt
6 - y 13 - LUK - *_LOOKDIR: north (0), northwest (1), west (2), etc
- *_CANMOVETICK: seconds * 1000 the unit will be unable to move
- *_DMGIMMUNE: unit will be immune to damage (1), or will receive damage (0)
- *_HUNGER: 0 - 100
- *_INTIMACY: 0 - 1000
- *_LIFETIME: seconds * 1000 the unit will be 'alive' for
- *_AMOTION: see doc/mob_db.txt
- *_ADELAY: see doc/mob_db.txt
- *_DMOTION: see doc/mob_db.txt
*Notes: For mode, see doc/mob_db_mode_list.txt - UMOB_AI: none (0); attack (1); marine sphere (2); flora (3); zanzou (4); legion (5); faw (6)
For map ID, this refers to the map_data index (from src/map/map.c), not the mapindex_db index (from src/common/mapindex.c) - UMOB_SCOPTION: see the 'Variables' section at the top of this document
For 'setunitdata', map name can also be passed in as a valid value instead of map ID - UMOB_SLAVECPYMSTRMD: make the slave copy the master's mode (1), or not (0)
- UNPC_PLUSALLSTAT: same as 'bAllStats'; increases/decreses all stats by given amount
Example: Example:
// Spawn some Porings and save the Game ID. // Spawn some Porings and save the Game ID.
@ -7228,7 +7254,7 @@ Example:
getunitdata .GID,@por_arr; getunitdata .GID,@por_arr;
// Set the max HP of the Poring to 1000 (current HP will also get updated to 1000). // Set the max HP of the Poring to 1000 (current HP will also get updated to 1000).
setunitdata .GID,3,1000; setunitdata .GID,UMOB_MAXHP,1000;
--------------------------------------- ---------------------------------------

File diff suppressed because it is too large Load Diff

View File

@ -297,6 +297,243 @@ enum script_parse_options {
SCRIPT_RETURN_EMPTY_SCRIPT = 0x4// returns the script object instead of NULL for empty scripts SCRIPT_RETURN_EMPTY_SCRIPT = 0x4// returns the script object instead of NULL for empty scripts
}; };
enum unitdata_mobtypes {
UMOB_SIZE = 0,
UMOB_LEVEL,
UMOB_HP,
UMOB_MAXHP,
UMOB_MASTERAID,
UMOB_MAPID,
UMOB_X,
UMOB_Y,
UMOB_SPEED,
UMOB_MODE,
UMOB_AI,
UMOB_SCOPTION,
UMOB_SEX,
UMOB_CLASS,
UMOB_HAIRSTYLE,
UMOB_HAIRCOLOR,
UMOB_HEADBOTTOM,
UMOB_HEADMIDDLE,
UMOB_HEADTOP,
UMOB_CLOTHCOLOR,
UMOB_SHIELD,
UMOB_WEAPON,
UMOB_LOOKDIR,
UMOB_STR,
UMOB_AGI,
UMOB_VIT,
UMOB_INT,
UMOB_DEX,
UMOB_LUK,
UMOB_SLAVECPYMSTRMD,
UMOB_DMGIMMUNE,
UMOB_ATKRANGE,
UMOB_ATK,
UMOB_MATK,
UMOB_DEF,
UMOB_MDEF,
UMOB_HIT,
UMOB_FLEE,
UMOB_PDODGE,
UMOB_CRIT,
UMOB_RACE,
UMOB_ELETYPE,
UMOB_ELELEVEL,
UMOB_AMOTION,
UMOB_ADELAY,
UMOB_DMOTION,
};
enum unitdata_homuntypes {
UHOM_SIZE = 0,
UHOM_LEVEL,
UHOM_HP,
UHOM_MAXHP,
UHOM_SP,
UHOM_MAXSP,
UHOM_MASTERCID,
UHOM_MAPID,
UHOM_X,
UHOM_Y,
UHOM_HUNGER,
UHOM_INTIMACY,
UHOM_SPEED,
UHOM_LOOKDIR,
UHOM_CANMOVETICK,
UHOM_STR,
UHOM_AGI,
UHOM_VIT,
UHOM_INT,
UHOM_DEX,
UHOM_LUK,
UHOM_DMGIMMUNE,
UHOM_ATKRANGE,
UHOM_ATK,
UHOM_MATK,
UHOM_DEF,
UHOM_MDEF,
UHOM_HIT,
UHOM_FLEE,
UHOM_PDODGE,
UHOM_CRIT,
UHOM_RACE,
UHOM_ELETYPE,
UHOM_ELELEVEL,
UHOM_AMOTION,
UHOM_ADELAY,
UHOM_DMOTION,
};
enum unitdata_pettypes {
UPET_SIZE = 0,
UPET_LEVEL,
UPET_HP,
UPET_MAXHP,
UPET_MASTERAID,
UPET_MAPID,
UPET_X,
UPET_Y,
UPET_HUNGER,
UPET_INTIMACY,
UPET_SPEED,
UPET_LOOKDIR,
UPET_CANMOVETICK,
UPET_STR,
UPET_AGI,
UPET_VIT,
UPET_INT,
UPET_DEX,
UPET_LUK,
UPET_DMGIMMUNE,
UPET_ATKRANGE,
UPET_ATK,
UPET_MATK,
UPET_DEF,
UPET_MDEF,
UPET_HIT,
UPET_FLEE,
UPET_PDODGE,
UPET_CRIT,
UPET_RACE,
UPET_ELETYPE,
UPET_ELELEVEL,
UPET_AMOTION,
UPET_ADELAY,
UPET_DMOTION,
};
enum unitdata_merctypes {
UMER_SIZE = 0,
UMER_HP,
UMER_MAXHP,
UMER_MASTERCID,
UMER_MAPID,
UMER_X,
UMER_Y,
UMER_KILLCOUNT,
UMER_LIFETIME,
UMER_SPEED,
UMER_LOOKDIR,
UMER_CANMOVETICK,
UMER_STR,
UMER_AGI,
UMER_VIT,
UMER_INT,
UMER_DEX,
UMER_LUK,
UMER_DMGIMMUNE,
UMER_ATKRANGE,
UMER_ATK,
UMER_MATK,
UMER_DEF,
UMER_MDEF,
UMER_HIT,
UMER_FLEE,
UMER_PDODGE,
UMER_CRIT,
UMER_RACE,
UMER_ELETYPE,
UMER_ELELEVEL,
UMER_AMOTION,
UMER_ADELAY,
UMER_DMOTION,
};
enum unitdata_elemtypes {
UELE_SIZE = 0,
UELE_HP,
UELE_MAXHP,
UELE_SP,
UELE_MAXSP,
UELE_MASTERCID,
UELE_MAPID,
UELE_X,
UELE_Y,
UELE_LIFETIME,
UELE_MODE,
UELE_SPEED,
UELE_LOOKDIR,
UELE_CANMOVETICK,
UELE_STR,
UELE_AGI,
UELE_VIT,
UELE_INT,
UELE_DEX,
UELE_LUK,
UELE_DMGIMMUNE,
UELE_ATKRANGE,
UELE_ATK,
UELE_MATK,
UELE_DEF,
UELE_MDEF,
UELE_HIT,
UELE_FLEE,
UELE_PDODGE,
UELE_CRIT,
UELE_RACE,
UELE_ELETYPE,
UELE_ELELEVEL,
UELE_AMOTION,
UELE_ADELAY,
UELE_DMOTION,
};
enum unitdata_npctypes {
UNPC_DISPLAY = 0,
UNPC_LEVEL,
UNPC_HP,
UNPC_MAXHP,
UNPC_MAPID,
UNPC_X,
UNPC_Y,
UNPC_LOOKDIR,
UNPC_STR,
UNPC_AGI,
UNPC_VIT,
UNPC_INT,
UNPC_DEX,
UNPC_LUK,
UNPC_PLUSALLSTAT,
UNPC_DMGIMMUNE,
UNPC_ATKRANGE,
UNPC_ATK,
UNPC_MATK,
UNPC_DEF,
UNPC_MDEF,
UNPC_HIT,
UNPC_FLEE,
UNPC_PDODGE,
UNPC_CRIT,
UNPC_RACE,
UNPC_ELETYPE,
UNPC_ELELEVEL,
UNPC_AMOTION,
UNPC_ADELAY,
UNPC_DMOTION,
};
/** /**
* used to generate quick script_array entries * used to generate quick script_array entries
**/ **/