Added "combat_data" script function

Added a new argument to HOOK_COMBATDAMAGE.
Removed the check for valid objects from get/set_object_data functions.
Some code fixes/edits.
This commit is contained in:
NovaRain
2020-10-08 13:50:37 +08:00
parent 27963fd064
commit 66ff811bcd
14 changed files with 85 additions and 34 deletions
@@ -341,6 +341,53 @@
#define OBJ_DATA_DAMAGE_LAST_TURN (0x48)
#define OBJ_DATA_WHO_HIT_ME (0x54) // current target of the critter
// compute attack result data offsets
#define C_ATTACK_SOURCE (0x00)
#define C_ATTACK_HIT_MODE (0x04)
#define C_ATTACK_WEAPON (0x08)
#define C_ATTACK_UNUSED (0x0C)
#define C_ATTACK_DAMAGE_SOURCE (0x10) // Amount
#define C_ATTACK_FLAGS_SOURCE (0x14) // see DAM_* values in define.h
#define C_ATTACK_ROUNDS (0x18)
#define C_ATTACK_MESSAGE (0x1C) // message number set from the critical table
#define C_ATTACK_TARGET (0x20)
#define C_ATTACK_BODY_PART (0x28)
#define C_ATTACK_DAMAGE_TARGET (0x2C) // Amount
#define C_ATTACK_FLAGS_TARGET (0x30) // see DAM_*
#define C_ATTACK_KNOCKBACK_VALUE (0x34)
#define C_ATTACK_MAIN_TARGET (0x38)
#define C_ATTACK_AROUND_NUMBER (0x3C) // The number of critters around the target
#define C_ATTACK_TARGET1 (0x40)
#define C_ATTACK_TARGET2 (0x44)
#define C_ATTACK_TARGET3 (0x48)
#define C_ATTACK_TARGET4 (0x4C)
#define C_ATTACK_TARGET5 (0x50)
#define C_ATTACK_TARGET6 (0x54)
#define C_ATTACK_BODY_PART1 (0x58)
#define C_ATTACK_BODY_PART2 (0x5C)
#define C_ATTACK_BODY_PART3 (0x60)
#define C_ATTACK_BODY_PART4 (0x64)
#define C_ATTACK_BODY_PART5 (0x68)
#define C_ATTACK_BODY_PART6 (0x6C)
#define C_ATTACK_DAMAGE_TARGET1 (0x70) // Amount
#define C_ATTACK_DAMAGE_TARGET2 (0x74)
#define C_ATTACK_DAMAGE_TARGET3 (0x78)
#define C_ATTACK_DAMAGE_TARGET4 (0x7C)
#define C_ATTACK_DAMAGE_TARGET5 (0x80)
#define C_ATTACK_DAMAGE_TARGET6 (0x84)
#define C_ATTACK_FLAGS_TARGET1 (0x88) // see DAM_*
#define C_ATTACK_FLAGS_TARGET2 (0x8C)
#define C_ATTACK_FLAGS_TARGET3 (0x90)
#define C_ATTACK_FLAGS_TARGET4 (0x94)
#define C_ATTACK_FLAGS_TARGET5 (0x98)
#define C_ATTACK_FLAGS_TARGET6 (0x9C)
#define C_ATTACK_KNOCKBACK_VALUE1 (0xA0)
#define C_ATTACK_KNOCKBACK_VALUE2 (0xA4)
#define C_ATTACK_KNOCKBACK_VALUE3 (0xA8)
#define C_ATTACK_KNOCKBACK_VALUE4 (0xAC)
#define C_ATTACK_KNOCKBACK_VALUE5 (0xB0)
#define C_ATTACK_KNOCKBACK_VALUE6 (0xB4)
/* Playback mode defines for the soundplay function */
#define soundraw (0x80000000) // sfall flag
#define Stereo8bit (soundstereo)
+1
View File
@@ -264,6 +264,7 @@
#define add_trait(traitID) sfall_func1("add_trait", traitID)
#define art_cache_clear sfall_func0("art_cache_clear")
#define attack_is_aimed sfall_func0("attack_is_aimed")
#define combat_data sfall_func0("combat_data")
#define create_win(winName, x, y, w, h) sfall_func5("create_win", winName, x, y, w, h)
#define create_win_flag(winName, x, y, w, h, flag) sfall_func6("create_win", winName, x, y, w, h, flag)
#define critter_inven_obj2(obj, type) sfall_func2("critter_inven_obj2", obj, type)
+1
View File
@@ -174,6 +174,7 @@ int arg9 - Damage Multiplier (this is divided by 2, so a value of 3 does 1.
int arg10 - Number of bullets actually hit the target (1 for melee attacks)
int arg11 - The amount of knockback to the target
int arg12 - Attack Type (see ATKTYPE_* constants)
mixed arg13 - computed attack data (see C_ATTACK_* for offsets and use get/set_object_data functions to get/set the data)
int ret1 - The damage to the target
int ret2 - The damage to the attacker
@@ -675,6 +675,11 @@ optional arguments:
0x2000000 - fills the background of the text with black color, the 'textnofill' compiler constant (works the other way around)
- width (optional): the maximum width of the text. The text will be wrapped to fit within the specified width
> mixed sfall_func0("combat_data")
- returns a pointer to the C_ATTACK_* data for the current combat attack turn (see defined constants in define_extra.h)
- can be used in conjunction with the get_object_data and set_object_data functions
example: sfall_func3("set_object_data", sfall_func0("combat_data"), C_ATTACK_UNUSED, 255);
------------------------
------ MORE INFO -------
------------------------