Rename entitytype to attackflags

This commit is contained in:
Ryan Dwyer
2021-05-23 12:08:26 +10:00
parent 24a9b5013f
commit 152c955a6f
29 changed files with 281 additions and 285 deletions
+9 -9
View File
@@ -1259,7 +1259,7 @@ u8 func040f_cass[] = {
stop_chr
yield
unset_stage_flag(STAGEFLAG_SECETARY_SAW_JO_OR_COOP)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x5b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x5b)
beginloop(0x5b)
if_chr_stopped(/*goto*/ 0x5c)
@@ -1290,7 +1290,7 @@ u8 func040f_cass[] = {
// Face target again
label(0x06)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x64)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x64)
beginloop(0x64)
if_target_in_fov_left(10, /*goto*/ 0x65)
@@ -1363,7 +1363,7 @@ u8 func040f_cass[] = {
label(0x06)
restart_timer
try_face_entity(ENTITYTYPE_PAD, 0x0042, /*goto*/ 0xb8)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0042, /*goto*/ 0xb8)
beginloop(0xb8)
if_timer_gt(60, /*goto*/ 0x63)
@@ -1397,13 +1397,13 @@ u8 func040f_cass[] = {
label(0x6b)
stop_chr
yield
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x6c)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x6c)
beginloop(0x6c)
call_rng
if_rand_lt(250, /*goto*/ 0x06)
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x2c)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x2c)
label(0x2c)
call_rng
if_distance_to_target_gt(500, /*goto*/ 0x06)
@@ -1479,7 +1479,7 @@ u8 func0411_secretary[] = {
endloop(0x7a)
label(0x7b)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x7c)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x7c)
beginloop(0x7c)
if_timer_lt(80, /*goto*/ 0x2c)
@@ -1523,7 +1523,7 @@ u8 func0411_secretary[] = {
goto_next(0x81)
// Unreachable
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x7f)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x7f)
beginloop(0x7f)
if_target_in_fov_left(10, /*goto*/ 0x81)
@@ -1732,7 +1732,7 @@ u8 func0414_programmer[] = {
restart_timer
set_alertness(255)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x9a)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x9a)
beginloop(0x9a)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -1831,7 +1831,7 @@ u8 func0414_programmer[] = {
speak(CHR_TARGET, L_AME_071, MP3_0323, CHANNEL_3, COLOR_09_BLUE) // "Move it!"
label(0x06)
set_stage_flag(STAGEFLAG_TALKED_TO_PROGRAMMER)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x9b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x9b)
beginloop(0x9b)
if_stage_flag_eq(STAGEFLAG_TALKED_TO_PROGRAMMER, TRUE, /*goto*/ 0x06)
+10 -10
View File
@@ -831,7 +831,7 @@ u8 func040f_top_guard[] = {
endloop(0x21)
label(0x00)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x1f)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x1f)
beginloop(0x1f)
if_distance_to_target_lt(200, /*goto*/ 0x20)
@@ -929,7 +929,7 @@ u8 func0406_general_combat[] = {
label(0x14)
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x00)
label(0x20)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x10)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x10)
label(0x00)
kneel
@@ -1000,7 +1000,7 @@ u8 func0406_general_combat[] = {
say_quip(CHR_BOND, QUIP_SEEPLAYER, 0xff, 0x02, 0xff, BANK_0, 0x00, 0x00)
label(0x20)
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x17)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x12)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x12)
goto_next(0x13)
beginloop(0x12)
@@ -1059,10 +1059,10 @@ u8 func0406_general_combat[] = {
goto_first(0x15)
label(0x17)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x16)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x00)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x00)
goto_next(0x20)
label(0x00)
goto_first(0x12)
@@ -1209,7 +1209,7 @@ u8 func0408_hovercopter[] = {
// Low shooting
label(0x43)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x44)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x44)
goto_first(0x22)
label(0x44)
@@ -1236,7 +1236,7 @@ u8 func0408_hovercopter[] = {
// Mid shooting
label(0x48)
dprint 'S','H','O','O','T',' ','M','I','D','\n',0,
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x49)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x49)
goto_first(0x24)
label(0x49)
@@ -1262,7 +1262,7 @@ u8 func0408_hovercopter[] = {
// High shooting (roof)
label(0x4d)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x00)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x00)
label(0x00)
set_stage_flag(STAGEFLAG_HOVERCOPTER_ON_ROOF)
if_stage_flag_eq(STAGEFLAG_SAID_FINAL_WARNING, TRUE, /*goto*/ 0x20)
@@ -1277,7 +1277,7 @@ u8 func0408_hovercopter[] = {
endloop(0x29)
label(0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x00)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x00)
goto_first(0x26)
label(0x00)
@@ -2094,7 +2094,7 @@ u8 func040d_cass[] = {
dprint 'M','O','V','E',' ','F','A','I','L','\n',0,
label(0x00)
dprint 'M','O','V','E',' ','G','O','O','D','\n',0,
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x20)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x20)
label(0x20)
set_ailist(CHR_SELF, GAILIST_IDLE)
endlist
+6 -6
View File
@@ -421,9 +421,9 @@ u8 func0402_guard_combat[] = {
// 2 seconds have passed without seeing guard, or guard has been shot
label(0x06)
if_chr_dead(CHR_TARGET, /*goto*/ 0x2e)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x2d)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2d)
label(0x2d)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0c)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
@@ -464,10 +464,10 @@ u8 func0403_jon_combat[] = {
reloop(0x08)
label(0x06)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x2d)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2d)
label(0x2d)
try_attack_roll(/*goto*/ 0x0c)
try_attack_kneel(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0c)
try_attack_kneel(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
@@ -503,9 +503,9 @@ u8 func0404_trent_combat[] = {
// Attack
label(0x06)
if_chr_dead(CHR_TARGET, /*goto*/ 0x2e)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x2d)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2d)
label(0x2d)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0c)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_chr_stopped(/*goto*/ 0x06)
+3 -3
View File
@@ -1339,7 +1339,7 @@ u8 func0418_robot[] = {
set_target_chr(CHR_P1P2)
restart_timer
dprint 'P','A','R','T',' ','3','a','\n',0,
try_attack_stand(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0e)
try_attack_stand(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0e)
goto_first(0x04)
beginloop(0x0e)
@@ -1748,10 +1748,10 @@ u8 func041f_trent_shooting[] = {
label(0x08)
label(0xa8)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xa7)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xa7)
label(0xa7)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0a)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a)
goto_next(0x31)
// Shoot worked
+11 -11
View File
@@ -1229,7 +1229,7 @@ u8 func0407_stewardess[] = {
// Saw player
label(0x04)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x05)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x05)
beginloop(0x05)
if_target_in_fov_left(10, /*goto*/ 0x02)
@@ -1526,7 +1526,7 @@ u8 func0408_secretary[] = {
// Joanna within 14 units (?) of distance
label(0x02)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x05)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x05)
beginloop(0x05)
if_target_in_fov_left(10, /*goto*/ 0x02)
@@ -2118,7 +2118,7 @@ u8 func0409_office1[] = {
// Picked up briefcase
label(0x02)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
beginloop(0x0b)
if_sound_finished(CHANNEL_4, /*goto*/ 0x31)
@@ -2145,7 +2145,7 @@ u8 func0409_office1[] = {
label(0x07)
object_do_animation(0x025a, 0xff, 0x02, 0xffff)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x05)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x05)
beginloop(0x05)
if_target_in_fov_left(10, /*goto*/ 0x02)
@@ -2226,7 +2226,7 @@ u8 func040a_office2[] = {
label(0x02)
object_do_animation(0x025a, 0xff, 0x02, 0xffff)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x05)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x05)
// Wait for other guy to finish talking
beginloop(0x05)
@@ -2505,7 +2505,7 @@ u8 func040f_nsa[] = {
label(0x04)
restart_timer
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x02)
@@ -2625,7 +2625,7 @@ u8 func0411_takeover_lackey[] = {
goto_next(0x02)
label(0x31)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x02)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x02)
label(0x02)
if_self_flag_bankx_eq(CHRFLAG0_00002000, FALSE, BANK_0, /*goto*/ 0x31)
if_target_in_sight(/*goto*/ 0x02)
@@ -2640,9 +2640,9 @@ u8 func0411_takeover_lackey[] = {
if_chr_death_animation_finished(0x0c, /*goto*/ 0x02)
if_chr_knockedout(0x0c, /*goto*/ 0x02)
set_target_chr(0x0c)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x31)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x31)
label(0x31)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x04)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x04)
beginloop(0x04)
if_chr_stopped(/*goto*/ 0x02)
@@ -2743,7 +2743,7 @@ u8 func0414_officeworker[] = {
label(0x02)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x78)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x78)
beginloop(0x78)
if_target_in_fov_left(10, /*goto*/ 0x02)
@@ -3414,7 +3414,7 @@ u8 func0419_ba8c[] = {
label(0x0f)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x08)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x08)
label(0x08)
yield
if_target_in_fov_left(10, /*goto*/ 0x02)
+3 -3
View File
@@ -1576,7 +1576,7 @@ u8 func040d_labtech3[] = {
u8 func0411_labtech_alerted[] = {
restart_timer
label(0x0b)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0c)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_target_in_fov_left(10, /*goto*/ 0x04)
@@ -2220,9 +2220,9 @@ u8 func0404_angry_pilot[] = {
goto_first(0x00)
label(0x07)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x04)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x04)
label(0x04)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x6e)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x6e)
beginloop(0x6e)
if_chr_stopped(/*goto*/ 0x07)
+2 -2
View File
@@ -2315,9 +2315,9 @@ u8 func0412_cloak_guard[] = {
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
label(0x0a)
label(0x2c)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x2c)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2c)
label(0x2c)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
beginloop(0x0b)
if_chr_stopped(/*goto*/ 0x0c)
+17 -17
View File
@@ -591,7 +591,7 @@ u8 func041e_colleague[] = {
restart_timer
label(0x08)
if_self_flag_bankx_eq(CHRFLAG1_DOINGIDLEANIMATION, TRUE, BANK_1, /*goto*/ 0x06)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -620,7 +620,7 @@ u8 func041e_colleague[] = {
label(0x06)
restart_timer
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x59)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x59)
beginloop(0x59)
if_target_in_sight(/*goto*/ 0x06)
@@ -2464,7 +2464,7 @@ u8 func0429_grimshaw_disguise[] = {
restart_timer
label(0x08)
if_self_flag_bankx_eq(CHRFLAG1_DOINGIDLEANIMATION, TRUE, BANK_1, /*goto*/ 0x06)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_stage_flag_eq(STAGEFLAG_DEVICE_ABORTING, TRUE, /*goto*/ 0x0d)
@@ -2656,7 +2656,7 @@ u8 func042a_carrington_cloak[] = {
restart_timer
label(0x08)
if_self_flag_bankx_eq(CHRFLAG1_DOINGIDLEANIMATION, TRUE, BANK_1, /*goto*/ 0x06)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -2923,7 +2923,7 @@ u8 func042c_carrington_tour[] = {
set_returnlist(CHR_SELF, AILIST_CARRINGTON_TOUR)
set_self_chrflag(CHRCFLAG_00040000)
restart_timer
try_face_entity(ENTITYTYPE_PAD, 0x0054, /*goto*/ 0x04)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0054, /*goto*/ 0x04)
beginloop(0x04)
dprint 'F','A','C','E',' ','P','A','D',0,
@@ -2977,7 +2977,7 @@ u8 func042c_carrington_tour[] = {
label(0x06)
stop_chr
restart_timer
try_face_entity(ENTITYTYPE_PAD, 0x0068, /*goto*/ 0x5c)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0068, /*goto*/ 0x5c)
beginloop(0x5c)
if_timer_lt(60, /*goto*/ 0x06)
@@ -3029,7 +3029,7 @@ u8 func042c_carrington_tour[] = {
label(0x06)
restart_timer
try_face_entity(ENTITYTYPE_CHR, 0x01, /*goto*/ 0x65)
try_face_entity(ATTACKFLAG_AIMATCHR, 0x01, /*goto*/ 0x65)
beginloop(0x65)
if_timer_gt(40, /*goto*/ 0x06)
@@ -3121,7 +3121,7 @@ u8 func042c_carrington_tour[] = {
label(0x06)
restart_timer
try_face_entity(ENTITYTYPE_CHR, 0x01, /*goto*/ 0x70)
try_face_entity(ATTACKFLAG_AIMATCHR, 0x01, /*goto*/ 0x70)
beginloop(0x70)
if_timer_gt(40, /*goto*/ 0x06)
@@ -3174,7 +3174,7 @@ u8 func042c_carrington_tour[] = {
label(0x06)
restart_timer
set_target_chr(CHR_BOND)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x79)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x79)
beginloop(0x79)
if_timer_gt(120, /*goto*/ 0x2f)
@@ -3206,7 +3206,7 @@ u8 func042d_unused[] = {
set_alertness(1)
set_self_chrflag(CHRCFLAG_00040000)
restart_timer
try_face_entity(ENTITYTYPE_CHR, CHR_CARRINGTON, /*goto*/ 0x5f)
try_face_entity(ATTACKFLAG_AIMATCHR, CHR_CARRINGTON, /*goto*/ 0x5f)
beginloop(0x5f)
if_timer_gt(40, /*goto*/ 0x06)
@@ -3235,7 +3235,7 @@ u8 func042e_devicegirl_reply_to_carrington[] = {
set_alertness(1)
set_self_chrflag(CHRCFLAG_00040000)
restart_timer
try_face_entity(ENTITYTYPE_CHR, CHR_CARRINGTON, /*goto*/ 0x5f)
try_face_entity(ATTACKFLAG_AIMATCHR, CHR_CARRINGTON, /*goto*/ 0x5f)
beginloop(0x5f)
if_timer_gt(40, /*goto*/ 0x06)
@@ -4549,7 +4549,7 @@ u8 func0404_holo4_guard2[] = {
set_ailist(CHR_SELF, GAILIST_IDLE)
label(0x06)
if_distance_to_target_lt(500, /*goto*/ 0x2f)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x08)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x08)
beginloop(0x08)
if_distance_to_target_lt(500, /*goto*/ 0x2f)
@@ -4809,7 +4809,7 @@ u8 func0407_holo5_guard1[] = {
label(0x06)
if_distance_to_target_lt(300, /*goto*/ 0x2f)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x08)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x08)
beginloop(0x08)
if_distance_to_target_lt(300, /*goto*/ 0x2f)
@@ -4866,7 +4866,7 @@ u8 func0409_holo5_guard2[] = {
label(0x06)
label(0x09)
set_self_chrflag(CHRCFLAG_INVINCIBLE)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0a)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a)
beginloop(0x0a)
if_can_see_target(/*goto*/ 0x06)
@@ -5248,7 +5248,7 @@ u8 func0416_holo_guard_unarmed_alert2[] = {
if_target_in_fov_left(10, /*goto*/ 0x06)
if_target_out_of_fov_left(246, /*goto*/ 0x06)
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_chr_dead(CHR_TARGET, /*goto*/ 0x57)
@@ -5604,14 +5604,14 @@ u8 func0419_holo_guard_armed_alert[] = {
set_ailist(CHR_SELF, AILIST_HOLO_GUARD_UNARMED_ALERT)
label(0x2f)
label(0x8f)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x04)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x04)
beginloop(0x04)
if_can_see_attack_target(/*goto*/ 0x2f)
endloop(0x04)
label(0x2f)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x08)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x08)
beginloop(0x08)
if_chr_injured_target(CHR_SELF, /*goto*/ 0x2f)
+4 -4
View File
@@ -1020,7 +1020,7 @@ u8 func0404_scientist[] = {
label(0x06)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_sound_finished(CHANNEL_6, /*goto*/ 0x2f)
@@ -1204,7 +1204,7 @@ u8 func0406_nasty_scientist[] = {
label(0x13)
label(0x08)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_sound_finished(CHANNEL_6, /*goto*/ 0x2f)
@@ -2862,9 +2862,9 @@ u8 func0402_k7_guard[] = {
endloop(0x04)
label(0x06)
try_attack_stand(ENTITYTYPE_PAD | ENTITYTYPE_AIMONLY, 0x0159, /*goto*/ 0x2f)
try_attack_stand(ATTACKFLAG_AIMATPAD | ATTACKFLAG_AIMONLY, 0x0159, /*goto*/ 0x2f)
label(0x2f)
try_modify_attack(ENTITYTYPE_PAD, 0x0159, /*goto*/ 0x2f)
try_modify_attack(ATTACKFLAG_AIMATPAD, 0x0159, /*goto*/ 0x2f)
label(0x2f)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x32, 0x02, 0xff, BANK_0, 0x00, 0x00)
+10 -10
View File
@@ -1500,7 +1500,7 @@ u8 func0402_taker[] = {
label(0x06)
set_target_chr(CHR_BOND)
label(0x03)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x05)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x05)
beginloop(0x05)
if_distance_to_target_gt(1000, /*goto*/ 0x2e)
@@ -1519,7 +1519,7 @@ u8 func0402_taker[] = {
// Jo got too close
label(0x06)
set_self_flag_bankx(CHRFLAG0_00002000, BANK_0)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
label(0x09)
yield
if_chr_stopped(/*goto*/ 0x06)
@@ -1546,7 +1546,7 @@ u8 func0402_taker[] = {
restart_timer
set_target_chr(CHR_NEGOTIATOR)
label(0x03)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x04)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x04)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
@@ -1584,7 +1584,7 @@ u8 func0402_taker[] = {
// Shoot
label(0x6f)
label(0x06)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x08)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x08)
beginloop(0x08)
if_chr_death_animation_finished(CHR_NEGOTIATOR, /*goto*/ 0x06)
@@ -1805,19 +1805,19 @@ u8 func0404_sniper[] = {
if_rand_lt(64, /*goto*/ 0x59)
if_rand_lt(128, /*goto*/ 0x5a)
if_rand_lt(196, /*goto*/ 0x5b)
try_face_entity(ENTITYTYPE_DIRECTION, 0, /*goto*/ 0x06)
try_face_entity(ATTACKFLAG_AIMATDIRECTION, 0, /*goto*/ 0x06)
reloop(0x04)
label(0x59)
try_face_entity(ENTITYTYPE_DIRECTION, 0x4000, /*goto*/ 0x06)
try_face_entity(ATTACKFLAG_AIMATDIRECTION, 0x4000, /*goto*/ 0x06)
reloop(0x04)
label(0x5a)
try_face_entity(ENTITYTYPE_DIRECTION, 0x8000, /*goto*/ 0x06)
try_face_entity(ATTACKFLAG_AIMATDIRECTION, 0x8000, /*goto*/ 0x06)
reloop(0x04)
label(0x5b)
try_face_entity(ENTITYTYPE_DIRECTION, 0xc000, /*goto*/ 0x06)
try_face_entity(ATTACKFLAG_AIMATDIRECTION, 0xc000, /*goto*/ 0x06)
reloop(0x04)
// Not actually running to a pad. Just waiting 2 seconds for the change
@@ -1889,13 +1889,13 @@ u8 func0404_sniper[] = {
label(0x2d)
restart_timer
label(0x06)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x08)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x08)
reloop(0x04)
label(0x08)
yield
label(0x06)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
reloop(0x04)
beginloop(0x09)
+6 -6
View File
@@ -1898,10 +1898,10 @@ u8 func041f_holoclone[] = {
set_target_chr(holoclone) \
label(0x04) \
yield \
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xb9) \
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xb9) \
label(0xb9) \
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00) \
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0a) \
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a) \
\
beginloop(0x0a) \
if_chr_stopped(/*goto*/ 0x08) \
@@ -1987,7 +1987,7 @@ u8 func0425_hostage_thank_and_run[] = {
label(0x08)
restart_timer
label(0x0a)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
beginloop(0x0b)
if_timer_gt(60, /*goto*/ 0x08)
@@ -2079,7 +2079,7 @@ u8 func0427_drop_devastator[] = {
label(0x08)
restart_timer
label(0x0a)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
beginloop(0x0b)
if_timer_gt(60, /*goto*/ 0x08)
@@ -2365,10 +2365,10 @@ u8 func0432_taker_attack[] = {
// Healthy
label(0x04)
yield
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xb9)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xb9)
label(0xb9)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0a)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a)
beginloop(0x0a)
if_chr_stopped(/*goto*/ 0x08)
+6 -6
View File
@@ -1489,7 +1489,7 @@ u8 func0408_knifeable_skedar[] = {
label(0x2c)
restart_timer
set_target_chr(CHR_CASS)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x04)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x04)
beginloop(0x04)
chr_toggle_p1p2(CHR_SELF)
@@ -1525,7 +1525,7 @@ u8 func0408_knifeable_skedar[] = {
label(0x06)
restart_timer
set_target_chr(CHR_CASS)
try_face_entity(ENTITYTYPE_PAD, 0x00ef, /*goto*/ 0x0b)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x00ef, /*goto*/ 0x0b)
beginloop(0x0b)
chr_toggle_p1p2(CHR_SELF)
@@ -2339,7 +2339,7 @@ u8 func041a_bridgeclone[] = {
if_target_in_fov_left(10, /*goto*/ 0x06)
if_target_out_of_fov_left(246, /*goto*/ 0x06)
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 1, /*goto*/ 0x0b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 1, /*goto*/ 0x0b)
beginloop(0x0b)
if_chr_dead(CHR_SELF, /*goto*/ 0xb8)
@@ -2990,7 +2990,7 @@ u8 func0421_bridge_skedar[] = {
label(0xc6)
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x06)
set_target_chr(CHR_BOND)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xc7)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xc7)
label(0x06)
kneel
@@ -3085,10 +3085,10 @@ u8 func0421_bridge_skedar[] = {
label(0xca)
if_self_flag_bankx_eq(CHRFLAG0_00002000, FALSE, BANK_0, /*goto*/ 0x60)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xb1)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xb1)
label(0xb1)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x06)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x06)
goto_next(0x2c)
label(0x60)
+12 -12
View File
@@ -1354,7 +1354,7 @@ u8 func0410_labtech_showers_sa_pa[] = {
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x56)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -1365,7 +1365,7 @@ u8 func0410_labtech_showers_sa_pa[] = {
dprint 'T','A','L','K',' ','1','\n',0,
speak(CHR_TARGET, L_LIP_037, MP3_032D, CHANNEL_4, COLOR_08_RED) // "Who are you?"
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x64)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x64)
// Wait until seeing Jo with a gun, or Jo has clothes
beginloop(0x64)
@@ -1725,7 +1725,7 @@ u8 func0418_doorman[] = {
label(0x03)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -1958,7 +1958,7 @@ u8 func041a_labtech_harrysmate[] = {
label(0x2d)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -2328,7 +2328,7 @@ u8 func0413_mechanic[] = {
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -2632,7 +2632,7 @@ u8 func041f_labtech_lights[] = {
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x53)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -2727,7 +2727,7 @@ u8 func041f_labtech_lights[] = {
label(0x06)
set_self_chrflag(CHRCFLAG_00000080)
restart_timer
try_face_entity(ENTITYTYPE_PAD, 0x0428, /*goto*/ 0x6e)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0428, /*goto*/ 0x6e)
beginloop(0x6e)
if_timer_gt(120, /*goto*/ 0x6f)
@@ -2859,7 +2859,7 @@ u8 func0420_labtech_doors[] = {
label(0x03)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_saw_injury(0x00, /*goto*/ 0x89)
@@ -2925,9 +2925,9 @@ u8 func0420_labtech_doors[] = {
label(0x06)
restart_timer
if_self_flag_bankx_eq(CHRFLAG0_00000004, TRUE, BANK_0, /*goto*/ 0x2d)
try_face_entity(ENTITYTYPE_PAD, 0x03c6, /*goto*/ 0x70)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x03c6, /*goto*/ 0x70)
label(0x2d)
try_face_entity(ENTITYTYPE_PAD, 0x03c7, /*goto*/ 0x70)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x03c7, /*goto*/ 0x70)
beginloop(0x70)
if_timer_gt(30, /*goto*/ 0x2d)
@@ -2956,7 +2956,7 @@ u8 func0420_labtech_doors[] = {
label(0x06)
restart_timer
try_face_entity(ENTITYTYPE_PAD, 0x0107, /*goto*/ 0x73)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0107, /*goto*/ 0x73)
beginloop(0x73)
if_timer_gt(30, /*goto*/ 0x06)
@@ -3094,7 +3094,7 @@ u8 func0422_labtech_records[] = {
label(0x2d)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
label(0x09)
yield
if_target_in_fov_left(10, /*goto*/ 0x06)
+5 -5
View File
@@ -1536,14 +1536,14 @@ u8 func0417_traitor[] = {
label(0x2e)
call_rng
if_rand_gt(128, /*goto*/ 0x2e)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x0a)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x0a)
label(0x2e)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x0a)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x0a)
dprint 'S','H','O','O','T','F','A','I','L','E','D','\n',0,
yield
label(0x0a)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
goto_next(0x0c)
beginloop(0x0b)
@@ -1655,7 +1655,7 @@ u8 func0416_mechanic[] = {
label(0x2e)
set_alertness(100)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0a)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a)
beginloop(0x0a)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -1729,7 +1729,7 @@ u8 func040a_top_interceptor[] = {
goto_first(0x09)
label(0x59)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x5b)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x5b)
reloop(0x0a)
label(0x5b)
+4 -4
View File
@@ -1210,7 +1210,7 @@ u8 func0406_elvis_follow_and_do_sa_megaweapon[] = {
label(0x2e)
restart_timer
try_face_entity(ENTITYTYPE_PAD, 0x0115, /*goto*/ 0x97)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0115, /*goto*/ 0x97)
beginloop(0x97)
if_timer_gt(60, /*goto*/ 0x06)
@@ -3222,9 +3222,9 @@ u8 func041d_sniper[] = {
set_chr_cloaked(CHR_SELF, FALSE, TRUE)
label(0x0a)
label(0x2e)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x2e)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2e)
label(0x2e)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
beginloop(0x0b)
if_chr_stopped(/*goto*/ 0x0c)
@@ -3466,7 +3466,7 @@ u8 func040f_miniskedar[] = {
restart_timer
dprint 'F','A','C','E',' ','T','A','R','G','E','T','\n',0,
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
beginloop(0x0b)
if_timer_gt(30, /*goto*/ 0x06)
+4 -4
View File
@@ -1437,7 +1437,7 @@ u8 func0412_cia[] = {
label(0x1e)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x04)
@@ -1586,7 +1586,7 @@ u8 func0413_bugspotter[] = {
// Player in sight - face them
label(0x04)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x04)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x04)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x04)
@@ -1868,7 +1868,7 @@ u8 func041d_fbi[] = {
label(0x04)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0d)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0d)
beginloop(0x0d)
if_target_in_fov_left(10, /*goto*/ 0x04)
@@ -2040,7 +2040,7 @@ u8 func041a_robot[] = {
label(0x03)
set_target_chr(CHR_P1P2)
restart_timer
try_attack_stand(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_attack_stand(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
reloop(0x02)
beginloop(0x09)
+18 -18
View File
@@ -1209,7 +1209,7 @@ u8 func0405_president_in_room[] = {
set_target_chr(CHR_PRESET)
restart_timer
label(0x08)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
// Wait for Carrington's "on this level" message to finish
@@ -1245,7 +1245,7 @@ u8 func0405_president_in_room[] = {
speak(CHR_TARGET, L_RIT_037, MP3_02BC, CHANNEL_7, COLOR_09_BLUE) // "Mr. President, you're in danger. Trent is trying t..."
restart_timer
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x78)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x78)
// In this loop the president will continue to turn to face the player
// because it lacks an if_target_in_fov_left check.
@@ -1326,7 +1326,7 @@ u8 func0405_president_in_room[] = {
set_stage_flag(STAGEFLAG_PRESIDENT_CALLED_SECURITY)
yield
increase_squadron_alertness(100)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0a)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a)
beginloop(0x0a)
endloop(0x0a)
@@ -1338,7 +1338,7 @@ u8 func0405_president_in_room[] = {
stop_chr
speak(CHR_TARGET, L_RIT_041, MP3_02BD, CHANNEL_6, COLOR_09_BLUE) // "This is a recording of a meeting between Trent and..."
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0b)
// This loop uses an if_sound_finished check rather than a timer check,
// which allows the speech to be skipped.
@@ -1412,7 +1412,7 @@ u8 func0405_president_in_room[] = {
set_stage_flag(STAGEFLAG_PRESIDENT_STARTED_RUNNING)
speak(CHR_TARGET, L_RIT_039, MP3_02BE, CHANNEL_6, COLOR_09_BLUE) // "We have to get you to the escape pod. Follow me."
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0e)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0e)
beginloop(0x0e)
if_timer_gt(120, /*goto*/ 0x06)
@@ -1773,9 +1773,9 @@ u8 func0413_taker[] = {
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0x11)
if_chr_dead(CHR_TARGET, /*goto*/ 0x11)
if_chr_knockedout(CHR_TARGET, /*goto*/ 0x11)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x06)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x06)
label(0x06)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x08)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x08)
label(0x08)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x00, BANK_0, 0x00, 0x00)
say_quip(CHR_BOND, QUIP_ATTACK2, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
@@ -2755,7 +2755,7 @@ u8 func041e_blonde[] = {
set_self_chrflag(CHRCFLAG_00000040)
label(0x68)
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x06)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x75)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x75)
label(0x06)
kneel
@@ -2781,7 +2781,7 @@ u8 func041e_blonde[] = {
goto_next(0x6c)
// Unreachable
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x6d)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x6d)
goto_next(0x6e)
// Reachable from below
@@ -2842,7 +2842,7 @@ u8 func041e_blonde[] = {
label(0x6c)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x06)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x06)
label(0x06)
goto_first(0x6d)
@@ -2850,10 +2850,10 @@ u8 func041e_blonde[] = {
goto_first(0x6e)
label(0x76)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x74)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x74)
label(0x74)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x06)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x06)
goto_next(0x2d)
label(0x06)
goto_first(0x6d)
@@ -2915,10 +2915,10 @@ u8 func0420_trent_attacking[] = {
// President in sight
label(0x06)
label(0x76)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x74)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x74)
label(0x74)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x08)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x08)
goto_next(0x2d)
beginloop(0x08)
@@ -3041,7 +3041,7 @@ u8 func0429_be_unalert[] = {
set_alertness(0)
label(0x03)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x04)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x04)
beginloop(0x04)
if_chr_stopped(/*goto*/ 0x06)
@@ -3219,7 +3219,7 @@ u8 func0407_steward[] = {
endloop(0x87)
label(0x06)
try_face_entity(ENTITYTYPE_PAD, PAD_PRESET, /*goto*/ 0x88)
try_face_entity(ATTACKFLAG_AIMATPAD, PAD_PRESET, /*goto*/ 0x88)
beginloop(0x88)
if_chr_stopped(/*goto*/ 0x06)
@@ -3238,7 +3238,7 @@ u8 func0407_steward[] = {
label(0x89)
set_alertness(100)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -3294,7 +3294,7 @@ u8 func0407_stewardess[] = {
// Alerted
label(0x2d)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_target_in_fov_left(10, /*goto*/ 0x06)
+9 -9
View File
@@ -614,7 +614,7 @@ u8 func0402_unarmed_skedar[] = {
if_target_out_of_fov_left(246, /*goto*/ 0x06)
stop_chr
set_action(MA_FACING, TRUE)
try_face_entity(ENTITYTYPE_TARGET, 1, /*goto*/ 0x0c)
try_face_entity(ATTACKFLAG_AIMATTARGET, 1, /*goto*/ 0x0c)
beginloop(0x0c)
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ 0x10)
@@ -802,7 +802,7 @@ u8 func0404_miniskedar[] = {
restart_timer
dprint 'F','A','C','E',' ','T','A','R','G','E','T','\n',0,
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0c)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0c)
beginloop(0x0c)
if_timer_gt(30, /*goto*/ 0x06)
@@ -1693,7 +1693,7 @@ u8 func0409_reaper_slayer_skedar[] = {
label(0x5e)
if_self_flag_bankx_eq(CHRFLAG0_00002000, TRUE, BANK_0, /*goto*/ 0x06)
set_target_chr(CHR_BOND)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x5f)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x5f)
label(0x06)
kneel
@@ -1800,10 +1800,10 @@ u8 func0409_reaper_slayer_skedar[] = {
label(0x71)
if_self_flag_bankx_eq(CHRFLAG0_00002000, FALSE, BANK_0, /*goto*/ 0x72)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x70)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x70)
label(0x70)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x06)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x06)
goto_next(0x2d)
label(0x72)
@@ -1981,7 +1981,7 @@ u8 func040d_king_combat[] = {
label(LABEL_MAINLOOP)
chr_toggle_p1p2(CHR_SELF)
set_target_chr(CHR_P1P2)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x04)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x04)
beginloop(0x04)
if_chr_death_animation_finished(CHR_P1P2, /*goto*/ LABEL_PLAYER_DEAD)
@@ -2042,10 +2042,10 @@ u8 func040d_king_combat[] = {
label(0x06)
say_quip(CHR_BOND, QUIP_ATTACK2, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x70)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x70)
label(0x70)
say_quip(CHR_BOND, QUIP_ATTACK1, 0x19, 0x02, 0x01, BANK_0, 0x00, 0x00)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x7b)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x7b)
goto_next(0x2d)
label(0x06)
@@ -2161,7 +2161,7 @@ u8 func040d_king_combat[] = {
if_target_in_fov_left(10, /*goto*/ 0x06)
if_target_out_of_fov_left(246, /*goto*/ 0x06)
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x09)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x09)
beginloop(0x09)
if_chr_death_animation_finished(CHR_P1P2, /*goto*/ 0x0b)
+5 -5
View File
@@ -837,7 +837,7 @@ u8 func0402_jonathan_waiting_for_meetup[] = {
label(0x06)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x0a)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x0a)
beginloop(0x0a)
if_sound_finished(CHANNEL_4, /*goto*/ 0x32)
@@ -981,7 +981,7 @@ u8 func0404_jonathan_following_and_mine[] = {
label(0x06)
play_x_track(XREASON_DEFAULT, 10, 30)
restart_timer
try_face_entity(ENTITYTYPE_PAD, 0x0173, /*goto*/ 0xc4)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0173, /*goto*/ 0xc4)
beginloop(0xc4)
if_timer_gt(60, /*goto*/ 0x06)
@@ -1101,7 +1101,7 @@ u8 func0413_jonathan_hangar[] = {
set_stage_flag(STAGEFLAG_JON_WAITING_AT_UFO)
stop_chr
set_target_chr(CHR_P1P2)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x14)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x14)
// Wait until both Joanna and Elvis within 400 units
beginloop(0x14)
@@ -1336,7 +1336,7 @@ u8 func0413_jonathan_hangar[] = {
label(0x59)
speak(CHR_BOND, L_TRA_047, MP3_02AC, CHANNEL_5, COLOR_09_BLUE) // "Jonathan, go with Elvis. I'll see to the consoles."
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x46)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x46)
beginloop(0x46)
if_target_in_fov_left(10, /*goto*/ 0x06)
@@ -1460,7 +1460,7 @@ u8 func0405_jonathan_shot_while_planting[] = {
endloop(0x0c)
label(0x06)
try_face_entity(ENTITYTYPE_PAD, 0x0173, /*goto*/ 0xc4)
try_face_entity(ATTACKFLAG_AIMATPAD, 0x0173, /*goto*/ 0xc4)
beginloop(0xc4)
if_timer_gt(60, /*goto*/ 0x06)
+5 -5
View File
@@ -1316,7 +1316,7 @@ u8 func0411_cass_in_office[] = {
label(0x55)
stop_chr
yield
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x56)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x56)
beginloop(0x56)
if_target_in_fov_left(10, /*goto*/ 0x57)
@@ -1350,9 +1350,9 @@ u8 func0411_cass_in_office[] = {
reloop(0x5a)
label(0x83)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x2c)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2c)
label(0x2c)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x82)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x82)
// Wait until shooting animation finished
beginloop(0x82)
@@ -1586,9 +1586,9 @@ u8 func0415_chief[] = {
// Attack while in sight
label(0x2c)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x2c)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x2c)
label(0x2c)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x82)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x82)
beginloop(0x82)
if_chr_stopped(/*goto*/ 0x06)
+48 -49
View File
@@ -1618,17 +1618,17 @@ glabel var7f1a8cfc
/* f02e36c: 00000000 */ nop
);
f32 chrGetDistanceToEntity(struct chrdata *chr, u32 entitytype, s32 entityid)
f32 chrGetDistanceToEntity(struct chrdata *chr, u32 attackflags, s32 entityid)
{
if (entitytype & ENTITYTYPE_TARGET) {
if (attackflags & ATTACKFLAG_AIMATTARGET) {
return chrGetDistanceToTarget(chr);
}
if (entitytype & ENTITYTYPE_CHR) {
if (attackflags & ATTACKFLAG_AIMATCHR) {
return chrGetDistanceToChr(chr, entityid);
}
if (entitytype & ENTITYTYPE_PAD) {
if (attackflags & ATTACKFLAG_AIMATPAD) {
return chrGetDistanceToPad(chr, entityid);
}
@@ -1818,8 +1818,8 @@ void func0f02e9a0(struct chrdata *chr, f32 arg1)
chrStopFiring(chr);
chr->actiontype = ACT_STAND;
chr->act_stand.unk02c = 0;
chr->act_stand.face_entitytype = 0;
chr->act_stand.face_entityid = 0;
chr->act_stand.flags = 0;
chr->act_stand.entityid = 0;
chr->act_stand.unk038 = 0;
chr->act_stand.unk03c = 2;
chr->act_stand.unk040 = 0;
@@ -1859,8 +1859,8 @@ void chrStand(struct chrdata *chr)
chrStopFiring(chr);
chr->actiontype = ACT_STAND;
chr->act_stand.unk02c = 1;
chr->act_stand.face_entitytype = 0;
chr->act_stand.face_entityid = 0;
chr->act_stand.flags = 0;
chr->act_stand.entityid = 0;
chr->act_stand.unk038 = 0;
chr->act_stand.unk03c = 2;
chr->act_stand.unk040 = 0;
@@ -1884,8 +1884,8 @@ void chrStand(struct chrdata *chr)
} else if (race == RACE_DRCAROLL || race == RACE_ROBOT) {
chr->actiontype = ACT_STAND;
chr->act_stand.unk02c = 1;
chr->act_stand.face_entitytype = 0;
chr->act_stand.face_entityid = 0;
chr->act_stand.flags = 0;
chr->act_stand.entityid = 0;
chr->act_stand.unk038 = 0;
chr->act_stand.unk03c = 2;
chr->act_stand.unk040 = 0;
@@ -1910,10 +1910,10 @@ bool chrFaceCover(struct chrdata *chr)
chrStand(chr);
chr->act_stand.unk038 = 0;
chr->act_stand.face_entitytype = ENTITYTYPE_DIRECTION;
chr->act_stand.flags = ATTACKFLAG_AIMATDIRECTION;
chr->act_stand.unk03c = 1;
//chr->act_stand.face_entityid = atan2f(-cover.look->x, -cover.look->z) * (0x4000 / BADDEG2RAD(90));
chr->act_stand.face_entityid = atan2f(-cover.look->x, -cover.look->z) * 10432.039f;
//chr->act_stand.entityid = atan2f(-cover.look->x, -cover.look->z) * (0x4000 / BADDEG2RAD(90));
chr->act_stand.entityid = atan2f(-cover.look->x, -cover.look->z) * 10432.039f;
return true;
}
@@ -2514,14 +2514,14 @@ glabel chrAttackLie
);
// Mismatch because some instructions are swapped
//void chrAttackLie(struct chrdata *chr, s32 entitytype, s32 entityid)
//void chrAttackLie(struct chrdata *chr, u32 attackflags, s32 entityid)
//{
// u32 stack1[2];
// struct prop *gun = chrGetEquippedWeaponProp(chr, 0);
// s32 firing[2] = {false, false};
// u32 stack2[2];
//
// if (entitytype & 0x20) {
// if (attackflags & 0x20) {
// firing[1] = false;
// firing[0] = false;
// } else {
@@ -2529,7 +2529,7 @@ glabel chrAttackLie
// firing[0] = !firing[1];
// }
//
// chrAttack(chr, &g_LieAttackAnims, gun == NULL, firing, entitytype, entityid, 0);
// chrAttack(chr, &g_LieAttackAnims, gun == NULL, firing, attackflags, entityid, 0);
//}
GLOBAL_ASM(
@@ -2665,7 +2665,7 @@ glabel chrAttackKneel
/* f030580: 00000000 */ nop
);
//void chrAttackKneel(struct chrdata *chr, s32 entitytype, s32 entityid)
//void chrAttackKneel(struct chrdata *chr, u32 attackflags, s32 entityid)
//{
// struct prop *leftprop = chrGetEquippedWeaponProp(chr, HAND_LEFT); // 54
// struct prop *rightprop = chrGetEquippedWeaponProp(chr, HAND_RIGHT); // 50
@@ -2719,7 +2719,7 @@ glabel chrAttackKneel
// firing[HAND_RIGHT] = !firing[HAND_LEFT];
// }
//
// chrAttack(chr, iVar5, sp48, firing, entitytype, entityid, 0);
// chrAttack(chr, iVar5, sp48, firing, attackflags, entityid, 0);
//}
void chrAttackWalkChooseAnimation(struct chrdata *chr)
@@ -3813,7 +3813,7 @@ void func0f031254(struct chrdata *chr)
struct model *model = chr->model;
struct attackanimconfig *animcfg = chr->act_attack.animcfg;
if (chr->act_attack.entitytype & ENTITYTYPE_AIMONLY) {
if (chr->act_attack.flags & ATTACKFLAG_AIMONLY) {
if (animcfg->unk20 >= 0 && animcfg->unk20 < animcfg->unk18) {
modelSetAnimEndFrame(model, animcfg->unk20);
} else {
@@ -3840,7 +3840,7 @@ void func0f031254(struct chrdata *chr)
* This function implements attack behaviour common to all the attack types,
* such as stand, kneel and lie.
*/
void chrAttack(struct chrdata *chr, struct attackanimgroup **animgroups, bool flip, bool *firing, u32 entitytype, u32 entityid, u32 arg6)
void chrAttack(struct chrdata *chr, struct attackanimgroup **animgroups, bool flip, bool *firing, u32 attackflags, u32 entityid, u32 arg6)
{
struct model *model = chr->model;
s32 i;
@@ -3873,7 +3873,7 @@ void chrAttack(struct chrdata *chr, struct attackanimgroup **animgroups, bool fl
}
} else {
// Non-sniping animations: Choose animation based on angle to target
angle = chrGetRelativeAttackAngle(chr, entitytype, entityid);
angle = chrGetRelativeAttackAngle(chr, attackflags, entityid);
if (flip) {
groupindex = (M_BADTAU - angle) * 5.0937690734863f + 0.5f;
@@ -3957,20 +3957,20 @@ void chrAttack(struct chrdata *chr, struct attackanimgroup **animgroups, bool fl
chr->act_attack.maxshots = 1;
}
} else {
if (entitytype & ENTITYTYPE_SINGLESHOT) {
if (attackflags & ATTACKFLAG_SINGLESHOT) {
chr->act_attack.maxshots = 1;
} else {
chr->act_attack.maxshots = (random() % 4) + 2;
}
// @bug: ENTITYTYPE_SINGLESHOT is not respected here if both guns
// @bug: ATTACKFLAG_SINGLESHOT is not respected here if both guns
// are firing.
if (firing[HAND_RIGHT] && firing[HAND_LEFT]) {
chr->act_attack.maxshots += (random() % 4) + 2;
}
}
chr->act_attack.entitytype = entitytype;
chr->act_attack.flags = attackflags;
chr->act_attack.entityid = entityid;
chr->act_attack.unk054 = arg6;
chr->act_attack.unk058 = 0;
@@ -3994,7 +3994,7 @@ void chrAttack(struct chrdata *chr, struct attackanimgroup **animgroups, bool fl
}
}
void chrAttackAmount(struct chrdata *chr, u32 entitytype, u32 entityid, u32 maxshots)
void chrAttackAmount(struct chrdata *chr, u32 attackflags, u32 entityid, u32 maxshots)
{
u32 stack;
struct prop *prop = chrGetEquippedWeaponProp(chr, 0);
@@ -4009,7 +4009,7 @@ void chrAttackAmount(struct chrdata *chr, u32 entitytype, u32 entityid, u32 maxs
firing[0] = true;
}
chrAttack(chr, things, false, firing, entitytype, entityid, 0);
chrAttack(chr, things, false, firing, attackflags, entityid, 0);
chr->actiontype = ACT_ATTACKAMOUNT;
chr->act_attack.numshots = 0;
@@ -8636,15 +8636,15 @@ glabel chrCanSeeEntity
bool chrCanSeeAttackTarget(struct chrdata *chr, struct coord *pos, s16 *rooms, bool arg3)
{
u32 entitytype = ENTITYTYPE_TARGET;
u32 attackflags = ATTACKFLAG_AIMATTARGET;
u32 entityid = 0;
if (chr->actiontype == ACT_ATTACK) {
entitytype = chr->act_attack.entitytype;
attackflags = chr->act_attack.flags;
entityid = chr->act_attack.entityid;
}
return chrCanSeeEntity(chr, pos, rooms, arg3, entitytype, entityid);
return chrCanSeeEntity(chr, pos, rooms, arg3, attackflags, entityid);
}
bool chrCanSeeChr(struct chrdata *chr, struct chrdata *target, s16 *room)
@@ -9233,7 +9233,7 @@ bool chrTryAttackAmount(struct chrdata *chr, u32 arg1, u32 arg2, u8 lower, u8 up
return false;
}
bool chrTryAttackStand(struct chrdata *chr, s32 entitytype, s32 entityid)
bool chrTryAttackStand(struct chrdata *chr, u32 attackflags, s32 entityid)
{
s32 race = CHRRACE(chr);
@@ -9250,7 +9250,7 @@ bool chrTryAttackStand(struct chrdata *chr, s32 entitytype, s32 entityid)
if (race == RACE_HUMAN || race == RACE_SKEDAR) {
if (chrGetEquippedWeaponPropWithCheck(chr, 0) ||
(chrGetEquippedWeaponPropWithCheck(chr, 1))) {
chrAttackStand(chr, entitytype, entityid);
chrAttackStand(chr, attackflags, entityid);
return true;
}
}
@@ -9259,13 +9259,13 @@ bool chrTryAttackStand(struct chrdata *chr, s32 entitytype, s32 entityid)
return false;
}
bool chrTryAttackKneel(struct chrdata *chr, s32 entitytype, s32 entityid)
bool chrTryAttackKneel(struct chrdata *chr, u32 attackflags, s32 entityid)
{
s32 race = CHRRACE(chr);
if (race == RACE_HUMAN || race == RACE_SKEDAR) {
if (chrIsReadyForOrders(chr) && (chrGetEquippedWeaponPropWithCheck(chr, 0) || chrGetEquippedWeaponPropWithCheck(chr, 1))) {
chrAttackKneel(chr, entitytype, entityid);
chrAttackKneel(chr, attackflags, entityid);
return true;
}
}
@@ -9273,13 +9273,13 @@ bool chrTryAttackKneel(struct chrdata *chr, s32 entitytype, s32 entityid)
return false;
}
bool chrTryAttackLie(struct chrdata *chr, s32 entitytype, s32 entityid)
bool chrTryAttackLie(struct chrdata *chr, u32 attackflags, s32 entityid)
{
s32 race = CHRRACE(chr);
if (race == RACE_HUMAN || race == RACE_SKEDAR) {
if (chrIsReadyForOrders(chr) && (chrGetEquippedWeaponPropWithCheck(chr, 0) || chrGetEquippedWeaponPropWithCheck(chr, 1))) {
chrAttackLie(chr, entitytype, entityid);
chrAttackLie(chr, attackflags, entityid);
return true;
}
}
@@ -9287,7 +9287,7 @@ bool chrTryAttackLie(struct chrdata *chr, s32 entitytype, s32 entityid)
return false;
}
bool chrTryModifyAttack(struct chrdata *chr, u32 entitytype, s32 entityid)
bool chrTryModifyAttack(struct chrdata *chr, u32 attackflags, s32 entityid)
{
s32 race = CHRRACE(chr);
@@ -9296,8 +9296,8 @@ bool chrTryModifyAttack(struct chrdata *chr, u32 entitytype, s32 entityid)
}
if (chr->actiontype == ACT_ATTACK
&& (chr->act_attack.entitytype & (ENTITYTYPE_AIMONLY | ENTITYTYPE_DONTTURN))) {
chr->act_attack.entitytype = entitytype;
&& (chr->act_attack.flags & (ATTACKFLAG_AIMONLY | ATTACKFLAG_DONTTURN))) {
chr->act_attack.flags = attackflags;
chr->act_attack.entityid = entityid;
func0f031254(chr);
return true;
@@ -9306,23 +9306,22 @@ bool chrTryModifyAttack(struct chrdata *chr, u32 entitytype, s32 entityid)
return false;
}
bool chrFaceEntity(struct chrdata *chr, u32 entitytype, u32 entityid)
bool chrFaceEntity(struct chrdata *chr, u32 attackflags, u32 entityid)
{
if (chrIsReadyForOrders(chr)) {
if (chr->actiontype != ACT_STAND) {
chrStand(chr);
}
if (entitytype != chr->act_stand.face_entitytype ||
entityid != chr->act_stand.face_entityid) {
chr->act_stand.face_entitytype = entitytype;
chr->act_stand.face_entityid = entityid;
if (attackflags != chr->act_stand.flags || entityid != chr->act_stand.entityid) {
chr->act_stand.flags = attackflags;
chr->act_stand.entityid = entityid;
chr->act_stand.unk038 = 0;
chr->act_stand.unk040 = 0;
if (entitytype == ENTITYTYPE_TARGET && entityid == 1) {
if (attackflags == ATTACKFLAG_AIMATTARGET && entityid == 1) {
chr->act_stand.face_target = true;
chr->act_stand.face_entityid = 0;
chr->act_stand.entityid = 0;
}
}
@@ -9981,7 +9980,7 @@ bool chrTryStartAlarm(struct chrdata *chr, s32 pad_id)
return false;
}
s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 entitytype, u32 entityid)
s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 attackflags, u32 entityid)
{
bool done = false;
@@ -10030,7 +10029,7 @@ s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 entitytype, u32 entityid)
if (weapon->weaponnum == WEAPON_GRENADE || weapon->weaponnum == WEAPON_NBOMB) {
chrThrowGrenade(chr, 0, false);
chr->act_throwgrenade.entitytype = entitytype;
chr->act_throwgrenade.flags = attackflags;
chr->act_throwgrenade.entityid = entityid;
done = true;
}
@@ -10041,7 +10040,7 @@ s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 entitytype, u32 entityid)
if (weapon->weaponnum == WEAPON_GRENADE || weapon->weaponnum == WEAPON_NBOMB) {
chrThrowGrenade(chr, 1, false);
chr->act_throwgrenade.entitytype = entitytype;
chr->act_throwgrenade.flags = attackflags;
chr->act_throwgrenade.entityid = entityid;
done = true;
}
@@ -10068,7 +10067,7 @@ s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 entitytype, u32 entityid)
weapon = prop->weapon;
weapon->base.hidden |= OBJHFLAG_00000800;
chrThrowGrenade(chr, rightprop == NULL ? 0 : 1, true);
chr->act_throwgrenade.entitytype = entitytype;
chr->act_throwgrenade.flags = attackflags;
chr->act_throwgrenade.entityid = entityid;
done = true;
}
+1 -1
View File
@@ -740,7 +740,7 @@ bool ai00f0(void)
if (g_Vars.chrdata->actiontype == ACT_ATTACK &&
!g_Vars.chrdata->act_attack.unk058 &&
g_Vars.chrdata->act_attack.entitytype & ENTITYTYPE_DONTTURN) {
g_Vars.chrdata->act_attack.flags & ATTACKFLAG_DONTTURN) {
g_Vars.aioffset = chraiGoToLabel(g_Vars.ailist, g_Vars.aioffset, cmd[2]);
} else {
g_Vars.aioffset += 3;
+33 -33
View File
@@ -1168,7 +1168,7 @@ u8 func0007_alerted[] = {
dprint 'A','T',' ','T','R','A','P',' ','P','A','D','\n',0,
label(0x9b)
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ LABEL_CLOAKED)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x03)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x03)
beginloop(0x03)
if_can_see_attack_target(/*goto*/ 0x9a)
@@ -1188,7 +1188,7 @@ u8 func0007_alerted[] = {
// Aiming only
label(0x9a)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x04)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x04)
beginloop(0x04)
if_chr_stopped(/*goto*/ 0x16)
@@ -1260,7 +1260,7 @@ u8 func0007_alerted[] = {
dprint 'U','N','D','E','R',' ','P','O','P','P','E','R','\n',0,
label(0xa8)
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ LABEL_CLOAKED)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xa9)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xa9)
beginloop(0xa9)
chr_toggle_p1p2(CHR_SELF)
@@ -1278,7 +1278,7 @@ u8 func0007_alerted[] = {
goto_next(0x13)
label(0x16)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0xaa)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xaa)
label(0x13)
kneel
restart_timer
@@ -1297,7 +1297,7 @@ u8 func0007_alerted[] = {
label(0x13)
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ LABEL_CLOAKED)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x13)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x13)
goto_first(0xa8)
label(0x13)
@@ -1305,7 +1305,7 @@ u8 func0007_alerted[] = {
goto_first(0xa8)
label(0x13)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x13)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x13)
goto_first(0xa8)
label(0x13)
@@ -1331,7 +1331,7 @@ u8 func0007_alerted[] = {
if_target_out_of_fov_left(246, /*goto*/ 0x13)
restart_timer
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0xec)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xec)
beginloop(0xec)
if_target_in_fov_left(10, /*goto*/ 0x13)
@@ -1369,7 +1369,7 @@ u8 func0007_alerted[] = {
label(0x13)
restart_timer
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ LABEL_CLOAKED)
try_attack_lie(ENTITYTYPE_FORWARD | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xdf)
try_attack_lie(ATTACKFLAG_AIMFORWARD | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xdf)
beginloop(0xdf)
if_distance_to_target_lt(1000, /*goto*/ 0x16)
@@ -1385,7 +1385,7 @@ u8 func0007_alerted[] = {
label(0x13)
restart_timer
set_accuracy(100)
try_attack_lie(ENTITYTYPE_TARGET, 0, /*goto*/ 0xe0)
try_attack_lie(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xe0)
dprint 'S','N','I','P','E','R',' ','N','O',' ','S','H','O','O','T','\n',0,
beginloop(0xe0)
@@ -1525,7 +1525,7 @@ u8 func0007_alerted[] = {
unset_self_flag_bankx(CHRFLAG1_00040000, BANK_1)
unset_self_flag_bankx(CHRFLAG1_00020000, BANK_1)
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ LABEL_CLOAKED)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x59)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x59)
beginloop(0x59)
if_dangerous_object_nearby(3, /*goto*/ LABEL_FLEE_GRENADE)
@@ -1660,11 +1660,11 @@ u8 func0007_alerted[] = {
label(0x13)
call_rng
if_rand_gt(128, /*goto*/ 0x8c)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x8c)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x16)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x60)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x60)
beginloop(0x60)
if_dangerous_object_nearby(3, /*goto*/ LABEL_FLEE_GRENADE)
@@ -1874,7 +1874,7 @@ u8 func0007_alerted[] = {
unset_self_flag_bankx(CHRFLAG1_00040000, BANK_1)
unset_self_flag_bankx(CHRFLAG1_00020000, BANK_1)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x4b)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x4b)
beginloop(0x4b)
if_nearly_in_targets_sight(30, /*goto*/ 0x42)
@@ -1903,7 +1903,7 @@ u8 func0007_alerted[] = {
unset_self_flag_bankx(CHRFLAG1_00040000, BANK_1)
unset_self_flag_bankx(CHRFLAG1_00020000, BANK_1)
if_chr_has_hiddenflag(CHR_TARGET, CHRHFLAG_CLOAKED, /*goto*/ LABEL_CLOAKED)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x40)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x40)
beginloop(0x40)
if_dangerous_object_nearby(3, /*goto*/ LABEL_FLEE_GRENADE)
@@ -2010,11 +2010,11 @@ u8 func0007_alerted[] = {
label(0x13)
call_rng
if_rand_gt(128, /*goto*/ 0x8c)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x8c)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x16)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x43)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x43)
beginloop(0x43)
if_dangerous_object_nearby(3, /*goto*/ LABEL_FLEE_GRENADE)
@@ -2346,16 +2346,16 @@ u8 func0007_alerted[] = {
label(0x13)
call_rng
if_rand_gt(128, /*goto*/ 0x8c)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x28)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x28)
label(0x8c)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x28)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x28)
dprint 'S','H','O','O','T','F','A','I','L','E','D','\n',0,
yield
if_dangerous_object_nearby(3, /*goto*/ LABEL_FLEE_GRENADE)
goto_first(0x8b)
label(0x28)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0x44)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x44)
goto_next(0x67)
label(0x44)
@@ -2667,7 +2667,7 @@ u8 func000a_do_idle_animation[] = {
label(0x07)
dprint 'N','A','T',' ','5','\n',0,
restart_timer
try_face_entity(ENTITYTYPE_PAD, PAD_PRESET, /*goto*/ 0xfa)
try_face_entity(ATTACKFLAG_AIMATPAD, PAD_PRESET, /*goto*/ 0xfa)
beginloop(0xfa)
if_timer_gt(60, /*goto*/ 0x06)
@@ -3208,11 +3208,11 @@ u8 func000c_combat_with_target_chr[] = {
label(0x13)
call_rng
if_rand_gt(128, /*goto*/ 0x8c)
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x8c)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x16)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0xc3)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xc3)
label(0xc3)
say_quip(CHR_BOND, QUIP_ATTACK3, 0x19, 0x02, 0xff, BANK_0, 0x00, 0x00)
@@ -3309,7 +3309,7 @@ u8 func000c_combat_with_target_chr[] = {
dprint 'G','O','T',' ','T','O',' ','C','O','V','E','R','\n',0,
label(0xc8)
restart_timer
try_attack_kneel(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0xc9)
try_attack_kneel(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0xc9)
beginloop(0xc9)
if_chr_dead(CHR_TARGET, /*goto*/ 0xc5)
@@ -3346,7 +3346,7 @@ u8 func000c_combat_with_target_chr[] = {
label(0x16)
say_quip(CHR_BOND, QUIP_ATTACK2, 0xff, 0x03, 0xff, BANK_0, 0x00, 0x00)
label(0x17)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0xcb)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xcb)
goto_next(0x16)
label(0xcb)
@@ -3457,7 +3457,7 @@ u8 func000c_combat_with_target_chr[] = {
label(0xd7)
say_quip(CHR_BOND, QUIP_KILLEDPLAYER1, 0x28, 0x00, 0x01, BANK_0, 0x00, 0x00)
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x16)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x16)
label(0x16)
if_chr_is_skedar(CHR_SELF, /*goto*/ 0xd9)
chr_do_animation(ANIM_YAWN, 0, 193, 0x18, 0x10, CHR_SELF, 2)
@@ -3880,7 +3880,7 @@ u8 func000f_hand_combat[] = {
if_target_in_fov_left(10, /*goto*/ LABEL_PUNCH)
if_target_out_of_fov_left(246, /*goto*/ LABEL_PUNCH)
stop_chr
try_face_entity(ENTITYTYPE_TARGET, 1, /*goto*/ 0x04)
try_face_entity(ATTACKFLAG_AIMATTARGET, 1, /*goto*/ 0x04)
beginloop(0x04)
if_chr_death_animation_finished(CHR_TARGET, /*goto*/ 0xfa)
@@ -3969,7 +3969,7 @@ u8 func0010_civilian_say_comment[] = {
label(0x16)
restart_timer
dprint 'F','A','C','E',' ','T','A','R','G','E','T','\n',0,
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x04)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x04)
// Wait until facing target, or a second has passed, or something else
// happens such as hearing gunfire or seeing someone die.
@@ -4166,7 +4166,7 @@ u8 func001b_observe_camspy[] = {
label(0x13)
set_target_chr(CHR_PRESET)
restart_timer
try_face_entity(ENTITYTYPE_TARGET, 0, /*goto*/ 0x03)
try_face_entity(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0x03)
// Wait 5 seconds. During this time:
// - If the camspy moves away, exit the loop and follow it
@@ -4221,9 +4221,9 @@ u8 func001b_observe_camspy[] = {
// Shoot camspy
label(0x09)
set_self_chrflag(CHRCFLAG_00000040)
try_attack_stand(ENTITYTYPE_TARGET | ENTITYTYPE_AIMONLY, 0, /*goto*/ 0x16)
try_attack_stand(ATTACKFLAG_AIMATTARGET | ATTACKFLAG_AIMONLY, 0, /*goto*/ 0x16)
label(0x16)
try_modify_attack(ENTITYTYPE_TARGET, 0, /*goto*/ 0xc3)
try_modify_attack(ATTACKFLAG_AIMATTARGET, 0, /*goto*/ 0xc3)
// Wait until shooting animation done
beginloop(0xc3)
+1 -1
View File
@@ -71180,7 +71180,7 @@ void doorsCalcFrac(struct doorobj *door)
if (isliftdoor) {
if (chr->actiontype == ACT_STAND
|| (chr->actiontype == ACT_ATTACK && (chr->act_attack.entitytype & ENTITYTYPE_DONTTURN))
|| (chr->actiontype == ACT_ATTACK && (chr->act_attack.flags & ATTACKFLAG_DONTTURN))
|| (chr->actiontype == ACT_GOPOS && func0f02e064(chr))) {
struct prop *target = chrGetTargetProp(chr);
+20 -23
View File
@@ -216,39 +216,37 @@
/**
* Makes the chr attempt to do a standing attack.
*
* entity_type is expected to be an ENTITYTYPE constant. It can be bitwise ORed
* with ENTITYTYPE_AIMONLY to make the chr only aim at the entity.
* attackflags is expected to be a bitfield of ATTACKFLAG constants.
*/
#define try_attack_stand(entity_type, entity_id, label) \
#define try_attack_stand(attackflags, entity_id, label) \
mkshort(0x0015), \
mkshort(entity_type), \
mkshort(attackflags), \
mkshort(entity_id), \
label,
/**
* Makes the chr attempt to do a kneeling attack.
*
* entity_type is expected to be an ENTITYTYPE constant. It can be bitwise ORed
* with ENTITYTYPE_AIMONLY to make the chr only aim at the entity.
* attackflags is expected to be a bitfield of ATTACKFLAG constants.
*/
#define try_attack_kneel(entity_type, entity_id, label) \
#define try_attack_kneel(attackflags, entity_id, label) \
mkshort(0x0016), \
mkshort(entity_type), \
mkshort(attackflags), \
mkshort(entity_id), \
label,
/**
* Modifies the target entity and the aim-only/shoot flag.
* Modifies the attackflags for the current attack.
*
* This command can only be used after try_attack_stand, try_attack_kneel,
* try_attack_lie or try_face_entity. A common pattern is to use one of those
* commands with the ENTITYTYPE_AIMONLY flag to point the gun at the entity, and
* commands with the ATTACKFLAG_AIMONLY flag to point the gun at the entity, and
* if the label was followed then call try_modify_attack to remove the
* ENTITYTYPE_AIMONLY flag, causing the chr to shoot.
* ATTACKFLAG_AIMONLY flag, causing the chr to shoot.
*/
#define try_modify_attack(entity_type, entity_id, label) \
#define try_modify_attack(attackflags, entity_id, label) \
mkshort(0x0017), \
mkshort(entity_type), \
mkshort(attackflags), \
mkshort(entity_id), \
label,
@@ -256,11 +254,11 @@
* Makes the chr begin facing the given entity. They will continue to face it
* until stop_chr is used or a significantly different action is given to them.
*
* entity_type is expected to be an ENTITYTYPE constant.
* attackflags is expected to be a bitfield of ATTACKFLAG constants.
*/
#define try_face_entity(entity_type, entity_id, label) \
#define try_face_entity(attackflags, entity_id, label) \
mkshort(0x0018), \
mkshort(entity_type), \
mkshort(attackflags), \
mkshort(entity_id), \
label,
@@ -3324,7 +3322,7 @@
chr, \
label,
#define play_sound_from_entity(channel, entity_id, u1, u2, entity_type) \
#define play_sound_from_entity(channel, entity_id, u1, u2, attackflags) \
mkshort(0x0179), \
channel, \
entity_id, \
@@ -3332,11 +3330,11 @@
0x01, \
mkshort(u1), \
mkshort(u2), \
entity_type,
attackflags,
/**
* Checks if the chr can see their attack target, which should have been
* specified in a prior attack command using entitytype and entityid.
* specified in a prior attack command using attackflags and entityid.
*
* If the chr is not currently doing an attack action, it checks if they can see
* their normal target (same as if_can_see_target).
@@ -3811,12 +3809,11 @@
/**
* Makes the chr attempt to do a lying down attack.
*
* entity_type is expected to be an ENTITYTYPE constant. It can be bitwise ORed
* with ENTITYTYPE_AIMONLY to make the chr only aim at the entity.
* attackflags is expected to be a bitfield of ATTACKFLAG constants.
*/
#define try_attack_lie(entity_type, entity_id, label) \
#define try_attack_lie(attackflags, entity_id, label) \
mkshort(0x01ba), \
mkshort(entity_type), \
mkshort(attackflags), \
mkshort(entity_id), \
label,
+10 -10
View File
@@ -297,6 +297,16 @@
#define ANIMFLAG_02 0x02
#define ANIMFLAG_08 0x08
#define ATTACKFLAG_AIMATBOND 0x0001 // aim/shoot at Jo
#define ATTACKFLAG_AIMFORWARD 0x0002 // aim/shoot in front of self
#define ATTACKFLAG_AIMATCHR 0x0004 // aim/shoot at chr (ID should be given in entityid)
#define ATTACKFLAG_AIMATPAD 0x0008 // aim/shoot at pad (ID should be given in entityid)
#define ATTACKFLAG_AIMATDIRECTION 0x0010 // aim/shoot in compass direction (0000, 4000, 8000, c000)
#define ATTACKFLAG_AIMONLY 0x0020 // aim only - do not shoot
#define ATTACKFLAG_DONTTURN 0x0040 // don't do a shooting animation that would change the chr's direction
#define ATTACKFLAG_SINGLESHOT 0x0080 // single shot only (doesn't work correctly with dual weapons)
#define ATTACKFLAG_AIMATTARGET 0x0200 // aim/shoot at whatever is in the chr's `target` field
#define AUDIOCHANNELFLAG_IDLE 0x0001
#define AUDIOCHANNELFLAG_0002 0x0002
#define AUDIOCHANNELFLAG_0008 0x0008
@@ -759,16 +769,6 @@
#define DROPREASON_5 5
#define DROPREASON_6 6
#define ENTITYTYPE_BOND 0x0001 // aim/shoot at Jo
#define ENTITYTYPE_FORWARD 0x0002 // aim/shoot in front of self
#define ENTITYTYPE_CHR 0x0004 // aim/shoot at chr (ID should be given in entity_id)
#define ENTITYTYPE_PAD 0x0008 // aim/shoot at pad (ID should be given in entity_id)
#define ENTITYTYPE_DIRECTION 0x0010 // aim/shoot in compass direction (0000, 4000, 8000, c000)
#define ENTITYTYPE_AIMONLY 0x0020 // aim only - do not shoot
#define ENTITYTYPE_DONTTURN 0x0040 // don't do a shooting animation that would change the chr's direction
#define ENTITYTYPE_SINGLESHOT 0x0080
#define ENTITYTYPE_TARGET 0x0200 // aim/shoot at whatever is in the chr's `target` field
#define EXPLOSIONTYPE_0 0
#define EXPLOSIONTYPE_2 2
#define EXPLOSIONTYPE_3 3
+14 -14
View File
@@ -20,8 +20,8 @@ bool weaponIsOneHanded(struct prop *prop);
f32 chrGetRangedSpeed(struct chrdata *chr, f32 min, f32 max);
s32 chrGetPercentageOfSlowness(struct chrdata *chr, s32 percentage);
f32 chrGetRangedArghSpeed(struct chrdata *chr, f32 min, f32 max);
f32 chrGetRelativeAttackAngle(struct chrdata *chr, s32 entitytype, s32 entityid);
f32 chrGetDistanceToEntity(struct chrdata *chr, u32 entitytype, s32 entityid);
f32 chrGetRelativeAttackAngle(struct chrdata *chr, u32 attackflags, s32 entityid);
f32 chrGetDistanceToEntity(struct chrdata *chr, u32 attackflags, s32 entityid);
void func0f02e3dc(struct coord *a, struct coord *b, struct coord *c, struct coord *d, struct coord *dst);
void func0f02e4f8(struct coord *arg0, struct coord *arg1, struct coord *dst);
f32 func0f02e550(struct prop *prop, f32 arg1, f32 arg2, u32 arg3, f32 ymax, f32 ymin);
@@ -38,17 +38,17 @@ void chrSurrenderChooseAnimation(struct chrdata *chr);
void chrSidestepChooseAnimation(struct chrdata *chr);
void chrJumpOutChooseAnimation(struct chrdata *chr);
void chrRunPosChooseAnimation(struct chrdata *chr);
void chrAttackStand(struct chrdata *chr, s32 entitytype, s32 entityid);
void chrAttackLie(struct chrdata *chr, s32 entitytype, s32 entityid);
void chrAttackKneel(struct chrdata *chr, s32 entitytype, s32 entityid);
void chrAttackStand(struct chrdata *chr, u32 attackflags, s32 entityid);
void chrAttackLie(struct chrdata *chr, u32 attackflags, s32 entityid);
void chrAttackKneel(struct chrdata *chr, u32 attackflags, s32 entityid);
void chrAttackWalkChooseAnimation(struct chrdata *chr);
void chrAttackWalk(struct chrdata *chr, u32 speed);
void chrAttackRollChooseAnimation(struct chrdata *chr);
void chrAttackRoll(struct chrdata *chr, bool direction);
void chrStartAnim(struct chrdata *chr, s32 animnum, f32 startframe, f32 endframe, u8 flags, s32 arg5, f32 speed);
void func0f031254(struct chrdata *chr);
void chrAttack(struct chrdata *chr, struct attackanimgroup **arg1, bool flip, bool *firing, u32 entitytype, u32 entityid, u32 arg6);
void chrAttackAmount(struct chrdata *chr, u32 entitytype, u32 entityid, u32 maxshots);
void chrAttack(struct chrdata *chr, struct attackanimgroup **arg1, bool flip, bool *firing, u32 attackflags, u32 entityid, u32 arg6);
void chrAttackAmount(struct chrdata *chr, u32 attackflags, u32 entityid, u32 maxshots);
void chrBeginDeath(struct chrdata *chr, struct coord *dir, f32 relangle, s32 ibh, struct shorthand *hand, bool knockout, s32 aplayernum);
void chrBeginArgh(struct chrdata *chr, f32 angle, s32 ibh);
void chrReactToDamage(struct chrdata *chr, struct coord *pos, f32 angle, s32 ibh, struct shorthand *hand, s32 playernum);
@@ -94,7 +94,7 @@ void chrGoPosChooseAnimation(struct chrdata *chr);
bool chrGoToPos(struct chrdata *chr, struct coord *pos, s16 *rooms, u32 flags);
void chrPatrolChooseAnimation(struct chrdata *chr);
void chrStartPatrol(struct chrdata *chr, struct path *path);
bool chrCanSeeEntity(struct chrdata *chr, struct coord *pos, s16 *rooms, bool arg3, u32 entitytype, u32 entityid);
bool chrCanSeeEntity(struct chrdata *chr, struct coord *pos, s16 *rooms, bool arg3, u32 attackflags, u32 entityid);
bool chrCanSeeAttackTarget(struct chrdata *chr, struct coord *pos, s16 *rooms, bool arg3);
bool chrCanSeeChr(struct chrdata *chr, struct chrdata *target, s16 *room);
bool chrHasLineOfSightToPos(struct chrdata *viewerchr, struct coord *pos, s16 *rooms);
@@ -247,11 +247,11 @@ bool chrCanSeeTarget(struct chrdata *chr);
void chrRecordLastSeeTargetTime(struct chrdata *chr);
void chrRecordLastHearTargetTime(struct chrdata *chr);
bool chrIsDead(struct chrdata *chr);
bool chrTryAttackStand(struct chrdata *chr, s32 entitytype, s32 entityid);
bool chrTryAttackKneel(struct chrdata *chr, s32 entitytype, s32 entityid);
bool chrTryAttackLie(struct chrdata *chr, s32 entitytype, s32 entityid);
bool chrTryModifyAttack(struct chrdata *chr, u32 entitytype, s32 entityid);
bool chrFaceEntity(struct chrdata *chr, u32 entitytype, u32 entityid);
bool chrTryAttackStand(struct chrdata *chr, u32 attackflags, s32 entityid);
bool chrTryAttackKneel(struct chrdata *chr, u32 attackflags, s32 entityid);
bool chrTryAttackLie(struct chrdata *chr, u32 attackflags, s32 entityid);
bool chrTryModifyAttack(struct chrdata *chr, u32 attackflags, s32 entityid);
bool chrFaceEntity(struct chrdata *chr, u32 attackflags, u32 entityid);
bool chrSetPath(struct chrdata *chr, u32 path_id);
bool chrTryStartPatrol(struct chrdata *chr);
bool chrTrySurrender(struct chrdata *chr);
@@ -266,7 +266,7 @@ bool chrTrySurprisedLookAround(struct chrdata *chr);
bool chrTryKneel(struct chrdata *chr);
bool chrTryStartAnim(struct chrdata *chr, s32 animfnum, f32 startframe, f32 endframe, u8 flags, s32 arg5, f32 speed);
bool chrTryStartAlarm(struct chrdata *chr, s32 pad_id);
s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 entitytype, u32 entityid);
s32 chrConsiderGrenadeThrow(struct chrdata *chr, u32 attackflags, u32 entityid);
void chrTickKneel(struct chrdata *chr);
void chrFadeCorpse(struct chrdata *chr);
void chrEnableReap(struct chrdata *chr);
+1 -1
View File
@@ -6,7 +6,7 @@
s32 chraiGetListIdByList(u8 *ailist, bool *is_global);
u32 chraiGoToLabel(u8 *ailist, u32 aioffset, u8 label);
void chraiExecute(void *entity, s32 entity_type);
void chraiExecute(void *entity, s32 proptype);
u32 chraiGetCommandLength(u8 *ailist, u32 aioffset);
#endif
+4 -4
View File
@@ -1005,8 +1005,8 @@ struct tilething {
struct act_stand {
/*0x2c*/ s32 unk02c;
/*0x30*/ u32 face_entitytype;
/*0x34*/ s32 face_entityid;
/*0x30*/ u32 flags;
/*0x34*/ s32 entityid;
/*0x38*/ u32 unk038;
/*0x3c*/ s32 unk03c;
/*0x40*/ u32 unk040;
@@ -1090,7 +1090,7 @@ struct act_attack {
/*0x40*/ u32 unk040;
/*0x44*/ u32 unk044;
/*0x48*/ u32 unk048;
/*0x4c*/ u32 entitytype;
/*0x4c*/ u32 flags;
/*0x50*/ u32 entityid;
/*0x54*/ u32 unk054;
/*0x58*/ u32 unk058;
@@ -1189,7 +1189,7 @@ struct act_surprised {
};
struct act_throwgrenade {
/*0x2c*/ u32 entitytype;
/*0x2c*/ u32 flags;
/*0x30*/ u32 entityid;
/*0x34*/ u32 hand;
/*0x38*/ bool needsequip;