Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
db92f01
Vending machine and smartfridge cleanup and icon fixes.
MistakeNot4892 Nov 22, 2024
8f7fa93
Unit test name consistency pass (sorry).
MistakeNot4892 Nov 22, 2024
ea17fad
Requested tweaks.
MistakeNot4892 Nov 22, 2024
80cdec6
Fix drake salve aura never expiring
noelle-lavenza Nov 20, 2024
8433b32
Fix shredded paper burning
noelle-lavenza Nov 22, 2024
11209ca
Readd aggressive grabs applying pressure to wounds
noelle-lavenza Nov 22, 2024
f5f2f81
Rewrite injury self-examination
noelle-lavenza Nov 22, 2024
03f18a3
Make clicking the health doll examine yourself for injuries
noelle-lavenza Nov 22, 2024
fc25ecc
Merge pull request #4578 from MistakeNot4892/fixes/scav
out-of-phaze Nov 23, 2024
da7c767
Implementing Doe's new banners.
MistakeNot4892 Nov 24, 2024
9f8cd90
Merge pull request #4580 from noelle-lavenza/fix/stage-drakepaper
MistakeNot4892 Nov 24, 2024
3df4e19
Merge pull request #4579 from noelle-lavenza/feature/selfpain
MistakeNot4892 Nov 24, 2024
5a846bf
Automatic changelog generation [ci skip]
NebulaSS13Bot Nov 25, 2024
af8f42d
Fix mapped large casks having invisible contents
noelle-lavenza Nov 25, 2024
9f4738a
Add athletics check to barrel stacking
noelle-lavenza Nov 25, 2024
cb99092
Adding Doe's signs.
MistakeNot4892 Nov 26, 2024
95c5050
Merge pull request #4584 from noelle-lavenza/fix/cask-mapped
MistakeNot4892 Nov 27, 2024
c960b10
Automatic changelog generation [ci skip]
NebulaSS13Bot Nov 29, 2024
8c2dfd6
Fix bots being treated as SSD on interact
noelle-lavenza Nov 29, 2024
f20e7e5
Fix dirt being nameless when bots clean it
noelle-lavenza Nov 29, 2024
29c2d86
Fix AI unarmed attacks doing nothing
noelle-lavenza Nov 29, 2024
594a6dd
Fix hugging bots instead of opening their menu
noelle-lavenza Nov 29, 2024
0a99bb6
Reworking banners to address feedback.
MistakeNot4892 Nov 29, 2024
d19df16
Updating modpack banners.
MistakeNot4892 Nov 30, 2024
9be5b1f
Merge pull request #4586 from noelle-lavenza/fix/bot-ai
MistakeNot4892 Dec 2, 2024
9199568
Automatic changelog generation [ci skip]
NebulaSS13Bot Dec 2, 2024
7ac5722
Adding a priority list system for mouse cursor icons.
MistakeNot4892 Nov 30, 2024
5d27cfc
Add tech levels to slapcrafting recipes
noelle-lavenza Dec 2, 2024
2aa5e64
Add on-examine and alt interaction functionality to stock parts
noelle-lavenza Dec 3, 2024
4f559f2
Make research machines use disk reader components
noelle-lavenza Dec 3, 2024
4cde3d4
Add cupholder stock part
noelle-lavenza Dec 3, 2024
fcfc41b
Cleaning up a lot of sprite_sheets setting.
MistakeNot4892 Dec 3, 2024
1c1fd60
Merge pull request #4595 from noelle-lavenza/fix/medieval-slapcrafting
MistakeNot4892 Dec 4, 2024
3c0ab20
Merge pull request #4597 from noelle-lavenza/feature/cupholders
MistakeNot4892 Dec 4, 2024
3e0ac94
Automatic changelog generation for PR #4597 [ci skip]
NebulaSS13Bot Dec 4, 2024
cccedb5
Merge pull request #4599 from NebulaSS13/staging
MistakeNot4892 Dec 4, 2024
71a5a78
Adding a lounge.
MistakeNot4892 Dec 4, 2024
9597ae7
Merge pull request #4587 from MistakeNot4892/feature/pointer_priority
out-of-phaze Dec 4, 2024
486c851
Merge pull request #4582 from MistakeNot4892/feature/banners
out-of-phaze Dec 4, 2024
43b1ef4
Replacing wooden plank furniture with chipboard laminate furniture.
MistakeNot4892 Nov 24, 2024
7242145
Adding wood laminate flooring for space maps.
MistakeNot4892 Nov 24, 2024
0bf1d38
Cleaning up bench/table/flooring chipboard commits.
MistakeNot4892 Nov 24, 2024
e0a61df
Generic wood is now an abstract type, 'default' wood is oak.
MistakeNot4892 Nov 27, 2024
26f4f08
Repathing mapped tables.
MistakeNot4892 Dec 3, 2024
d5a3d85
Condensing/repathing wooden floor tile types.
MistakeNot4892 Dec 3, 2024
1a64b49
Automatic changelog generation [ci skip]
NebulaSS13Bot Dec 5, 2024
a37b9ed
Merge pull request #4598 from MistakeNot4892/tweak/sprite_setting
out-of-phaze Dec 5, 2024
0b25b72
Intents are now /decl/intent.
MistakeNot4892 Nov 28, 2024
b31b0f7
Updating deity code to work with decl intents, also correcting 'pheno…
MistakeNot4892 Nov 28, 2024
46606cf
Intent selector is now dynamically generated.
MistakeNot4892 Nov 28, 2024
d2752cb
Updating set_intent() to use flags instead of types.
MistakeNot4892 Nov 28, 2024
7348e0a
Commenting out nymph intent selection/subtypes due to issues with int…
MistakeNot4892 Nov 28, 2024
b838d36
Merge pull request #4585 from MistakeNot4892/rework/intent
out-of-phaze Dec 6, 2024
b382cf2
Merge pull request #4583 from MistakeNot4892/feature/chipboard
out-of-phaze Dec 6, 2024
85b9c56
Automatic changelog generation for PR #4583 [ci skip]
NebulaSS13Bot Dec 6, 2024
47e8d2b
Merge pull request #4604 from MistakeNot4892/feature/lounge
out-of-phaze Dec 6, 2024
89f8a95
Merge branch 'dev' of github.com:NebulaSS13/Nebula into fork/pyrelight
MistakeNot4892 Dec 6, 2024
a16e8e0
Updating Pyrelight code with intent changes.
MistakeNot4892 Dec 6, 2024
b645919
Fixing wood material in fantasy mask.
MistakeNot4892 Dec 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion code/__defines/hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#define UI_ICON_NUTRITION "icon_nutrition"
#define UI_ICON_HYDRATION "icon_hydration"
#define UI_ICON_FIRE_INTENT "icon_fire_intent"
#define UI_ICON_INTENT "icon_intent"
#define UI_ICON_UP_HINT "icon_uphint"
#define UI_ICON_STATUS "icon_status"
#define UI_ICON_STATUS_FIRE "icon_status_fire"
Expand Down
11 changes: 11 additions & 0 deletions code/__defines/intent.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Intent bitflags for use in check_intent()
#define I_FLAG_HELP BITFLAG(0)
#define I_FLAG_DISARM BITFLAG(1)
#define I_FLAG_GRAB BITFLAG(2)
#define I_FLAG_HARM BITFLAG(3)
#define I_FLAG_ALL (I_FLAG_HELP|I_FLAG_DISARM|I_FLAG_GRAB|I_FLAG_HARM)

//NOTE: INTENT_HOTKEY_* defines are not actual intents!
//they are here to support hotkeys
#define INTENT_HOTKEY_LEFT "left"
#define INTENT_HOTKEY_RIGHT "right"
5 changes: 0 additions & 5 deletions code/__defines/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -270,11 +270,6 @@
/// Returns the hex value of a number given a value assumed to be a base-ten value, padded to a supplied minimum length.
#define num2hex_padded(num, len) num2text(num, len, 16)

//NOTE: INTENT_HOTKEY_* defines are not actual intents!
//they are here to support hotkeys
#define INTENT_HOTKEY_LEFT "left"
#define INTENT_HOTKEY_RIGHT "right"

//Turf/area values for 'this space is outside' checks
#define OUTSIDE_AREA null
#define OUTSIDE_NO FALSE
Expand Down
6 changes: 0 additions & 6 deletions code/__defines/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,6 @@
#define GETPULSE_TOOL 1 // More accurate. (med scanner, sleeper, etc.)
#define PULSE_MAX_BPM 250 // Highest, readable BPM by machines and humans.

//intent flags
#define I_HELP "help"
#define I_DISARM "disarm"
#define I_GRAB "grab"
#define I_HURT "harm"

//These are used Bump() code for living mobs, in the mob_bump_flag, mob_swap_flags, and mob_push_flags vars to determine whom can bump/swap with whom.
#define HUMAN 1
#define MONKEY 2
Expand Down
8 changes: 7 additions & 1 deletion code/_helpers/cmp.dm
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@
/proc/cmp_decl_uid_asc(decl/a, decl/b)
return sorttext(b.uid, a.uid)

/proc/cmp_decl_sort_value_asc(decl/a, decl/b)
return a.sort_order - b.sort_order

/proc/cmp_inventory_slot_desc(datum/inventory_slot/a, datum/inventory_slot/b)
return b.quick_equip_priority - a.quick_equip_priority

Expand All @@ -154,4 +157,7 @@
if(a == prerequisite)
return -1 // goes after
return cmp_skill_asc(a, GET_DECL(b.prerequisites[1]))
return cmp_name_or_type_asc(a, b)
return cmp_name_or_type_asc(a, b)

/proc/cmp_priority_list(list/A, list/B)
return A["priority"] - B["priority"]
5 changes: 1 addition & 4 deletions code/_helpers/visual_filters.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
/atom/movable
var/list/filter_data // For handling persistent filters

/proc/cmp_filter_data_priority(list/A, list/B)
return A["priority"] - B["priority"]

// Defining this for future proofing and ease of searching for erroneous usage.
/image/proc/add_filter(filter_name, priority, list/params)
filters += filter(arglist(params))
Expand Down Expand Up @@ -35,7 +32,7 @@

/atom/movable/proc/update_filters()
filters = null
filter_data = sortTim(filter_data, /proc/cmp_filter_data_priority, TRUE)
filter_data = sortTim(filter_data, /proc/cmp_priority_list, TRUE)
for(var/f in filter_data)
var/list/data = filter_data[f]
var/list/arguments = data.Copy()
Expand Down
4 changes: 2 additions & 2 deletions code/_onclick/MouseDrag.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
return

var/obj/item/gun/gun = get_active_held_item()
if(a_intent == I_HURT && istype(over_object) && (isturf(over_object) || isturf(over_object.loc)) && !incapacitated() && istype(gun))
if(check_intent(I_FLAG_HARM) && istype(over_object) && (isturf(over_object) || isturf(over_object.loc)) && !incapacitated() && istype(gun))
gun.set_autofire(over_object, src)

/mob/proc/OnMouseDown(atom/object, location, control, params)
Expand All @@ -25,7 +25,7 @@
return

var/obj/item/gun/gun = get_active_held_item()
if(a_intent == I_HURT && istype(object) && (isturf(object) || isturf(object.loc)) && !incapacitated() && istype(gun))
if(check_intent(I_FLAG_HARM) && istype(object) && (isturf(object) || isturf(object.loc)) && !incapacitated() && istype(gun))
gun.set_autofire(object, src)

/mob/proc/OnMouseUp(atom/object, location, control, params)
Expand Down
6 changes: 3 additions & 3 deletions code/_onclick/click.dm
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
if(holding)

// AI driven mobs have a melee telegraph that needs to be handled here.
if(a_intent == I_HURT && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item()))
if(check_intent(I_FLAG_HARM) && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item()))
return TRUE

var/resolved = holding.resolve_attackby(A, src, params)
Expand All @@ -144,7 +144,7 @@
if(holding)

// AI driven mobs have a melee telegraph that needs to be handled here.
if(a_intent == I_HURT && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item()))
if(check_intent(I_FLAG_HARM) && istype(A) && (!do_attack_windup_checking(A) || holding != get_active_held_item()))
return TRUE

// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
Expand Down Expand Up @@ -225,7 +225,7 @@
// corgis attacking a tree, for example, will do the windup animation despite
// having no interaction or message shown at the end of it.
// AI driven mobs have a melee telegraph that needs to be handled here.
if(a_intent == I_HURT && istype(A) && !do_attack_windup_checking(A))
if(check_intent(I_FLAG_HARM) && istype(A) && !do_attack_windup_checking(A))
return TRUE

return FALSE
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/cyborg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
return

/obj/machinery/door/airlock/BorgAltClick() // Eletrifies doors. Forwards to AI code.
if (usr.a_intent != I_HELP)
if (!usr.check_intent(I_FLAG_HELP))
AICtrlAltClick()
else
..()
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/animal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@
move_intent = new(null, mymob, ui_style, ui_color, ui_alpha, UI_ICON_MOVEMENT)
move_intent.icon_state = mymob.move_intent.hud_icon_state
adding += move_intent
action_intent = new(null, mymob, ui_style, ui_color, ui_alpha, UI_ICON_INTENT)
action_intent = new(null, mymob, ui_style, ui_color, ui_alpha)
adding += action_intent
..()
4 changes: 2 additions & 2 deletions code/_onclick/hud/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
adding += stamina_bar

// Draw the attack intent dialogue.
if(hud_data.has_a_intent)
action_intent = new(null, mymob, ui_style, ui_color, ui_alpha, UI_ICON_INTENT)
if(hud_data.show_intent_selector)
action_intent = new(null, mymob)
src.adding += action_intent
hud_elements |= action_intent

Expand Down
4 changes: 2 additions & 2 deletions code/_onclick/hud/robot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ var/global/obj/screen/robot_inventory
adding += R.ui_drop_grab

//Intent
action_intent = new /obj/screen/intent/robot(null, mymob, ui_style, ui_color, ui_alpha, UI_ICON_INTENT)
action_intent.icon_state = R.a_intent
action_intent = new /obj/screen/intent/robot(null, mymob)
action_intent.icon_state = R.get_intent().icon_state

adding += action_intent
adding += new /obj/screen/robot_panel(null, mymob)
Expand Down
81 changes: 62 additions & 19 deletions code/_onclick/hud/screen/screen_intent.dm
Original file line number Diff line number Diff line change
@@ -1,24 +1,67 @@
/obj/screen/intent
name = "intent"
icon = 'icons/mob/screen/styles/intents.dmi'
icon_state = "intent_help"
screen_loc = ui_acti
var/intent = I_HELP
name = "intent"
icon = 'icons/mob/screen/styles/intents.dmi'
icon_state = "intents"
screen_loc = ui_acti
requires_ui_style = FALSE

/obj/screen/intent/handle_click(mob/user, params)
var/list/P = params2list(params)
var/icon_x = text2num(P["icon-x"])
var/icon_y = text2num(P["icon-y"])
intent = I_DISARM
if(icon_x <= world.icon_size/2)
if(icon_y <= world.icon_size/2)
intent = I_HURT
else
intent = I_HELP
else if(icon_y <= world.icon_size/2)
intent = I_GRAB
/obj/screen/intent/Initialize(mapload, mob/_owner, decl/ui_style/ui_style, ui_color, ui_alpha, ui_cat)
. = ..()
update_icon()
user.a_intent = intent

/obj/screen/intent/handle_click(mob/user, params)
var/mob/owner = owner_ref?.resolve()
if(!istype(owner) || QDELETED(owner) || user != owner || !params)
return
params = params2list(params)
if(owner.set_intent(get_intent_by_position(owner.get_available_intents(), text2num(params["icon-x"]), text2num(params["icon-y"]))))
update_icon()

/obj/screen/intent/proc/get_intent_by_position(list/intents, icon_x, icon_y)
if(icon_y <= 16)
if(icon_x <= 16)
return intents[1]
return intents[2]
else if(icon_x <= 16)
return intents[3]
return intents[4]

/obj/screen/intent/proc/apply_intent_overlay_offset(image/overlay, index)
switch(index)
if(2)
overlay.pixel_x = 16
if(3)
overlay.pixel_y = 16
if(4)
overlay.pixel_x = 16
overlay.pixel_y = 16

/obj/screen/intent/on_update_icon()
icon_state = "intent_[intent]"
cut_overlays()
var/mob/owner = owner_ref?.resolve()
if(!istype(owner) || QDELETED(owner))
return
var/decl/intent/owner_intent = owner.get_intent()
var/i = 0
var/image/I
for(var/decl/intent/intent as anything in owner.get_available_intents())
if(intent == owner_intent)
I = image(intent.icon, intent.icon_state)
else
I = image(intent.icon, "[intent.icon_state]_off")
i++
apply_intent_overlay_offset(I, i)
add_overlay(I)
compile_overlays()

/obj/screen/intent/binary
icon = 'icons/mob/screen/styles/intents_wide.dmi'

/obj/screen/intent/binary/get_intent_by_position(list/intents, icon_x, icon_y)
if(icon_y <= 16)
return intents[1]
return intents[2]

/obj/screen/intent/binary/apply_intent_overlay_offset(image/overlay, index)
if(index == 2)
overlay.pixel_y = 16
5 changes: 0 additions & 5 deletions code/_onclick/hud/screen/screen_robot_intent.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,2 @@
/obj/screen/intent/robot
name = "act_intent"
dir = SOUTHWEST
screen_loc = ui_acti

/obj/screen/intent/robot/handle_click(mob/user, params)
user.a_intent_change("right")
6 changes: 6 additions & 0 deletions code/_onclick/hud/screen/screen_warnings.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
icon_state = "health0"
screen_loc = ui_health

/obj/screen/health_warning/handle_click(mob/user, params)
if(ishuman(user))
var/mob/living/human/human_user = user
human_user.check_self_injuries()
return TRUE

/obj/screen/warning_cells
name = "cell"
icon_state = "charge-empty"
Expand Down
10 changes: 5 additions & 5 deletions code/_onclick/item_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ avoid code duplication. This includes items that may sometimes act as a standard

// Return TRUE if further actions (afterattack, etc) should be prevented, FALSE if they can proceed.
/atom/movable/proc/bash(obj/item/weapon, mob/user)
if(isliving(user) && user.a_intent == I_HELP)
if(isliving(user) && user.check_intent(I_FLAG_HELP))
return FALSE
if(!weapon.user_can_attack_with(user))
return FALSE
Expand All @@ -61,15 +61,15 @@ avoid code duplication. This includes items that may sometimes act as a standard
if(!ismob(user))
return TRUE

if(!QDELETED(used_item) && user.a_intent == I_HELP)
if(!QDELETED(used_item) && user.check_intent(I_FLAG_HELP))
var/obj/item/organ/external/E = GET_EXTERNAL_ORGAN(src, user.get_target_zone())
if(length(E?.ailments))
for(var/datum/ailment/ailment in E.ailments)
if(ailment.treated_by_item(used_item))
ailment.was_treated_by_item(used_item, user, src)
return TRUE

if(user.a_intent != I_HURT)
if(!user.check_intent(I_FLAG_HARM))
if(can_operate(src, user) != OPERATE_DENY && used_item.do_surgery(src,user)) //Surgery
return TRUE
if(try_butcher_in_place(user, used_item))
Expand Down Expand Up @@ -119,14 +119,14 @@ avoid code duplication. This includes items that may sometimes act as a standard
if(squash_item())
return TRUE

if(user?.a_intent != I_HURT && is_edible(target) && handle_eaten_by_mob(user, target) != EATEN_INVALID)
if(!user?.check_intent(I_FLAG_HARM) && is_edible(target) && handle_eaten_by_mob(user, target) != EATEN_INVALID)
return TRUE

if(item_flags & ITEM_FLAG_NO_BLUDGEON)
return FALSE

// If on help, possibly don't attack.
if(user.a_intent == I_HELP)
if(user.check_intent(I_FLAG_HELP))
switch(user.get_preference_value(/datum/client_preference/help_intent_attack_blocking))
if(PREF_ALWAYS)
if(user == target)
Expand Down
6 changes: 3 additions & 3 deletions code/_onclick/other_mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
/mob/living/RestrainedClickOn(var/atom/A)
if (A != src)
return ..()
if(world.time < next_restraint_chew || !get_equipped_item(slot_handcuffed_str) || a_intent != I_HURT || get_target_zone() != BP_MOUTH)
if(world.time < next_restraint_chew || !get_equipped_item(slot_handcuffed_str) || !check_intent(I_FLAG_HARM) || get_target_zone() != BP_MOUTH)
return FALSE
// Cannot chew with a mask or a full body restraint.
if (get_equipped_item(slot_wear_mask_str) || istype(get_equipped_item(slot_wear_suit_str), /obj/item/clothing/suit/straight_jacket))
Expand Down Expand Up @@ -94,10 +94,10 @@
return

var/attacking_with = get_natural_weapon()
if(a_intent == I_HELP || !attacking_with)
if(check_intent(I_FLAG_HELP) || !attacking_with)
return A.attack_animal(src)

a_intent = I_HURT
set_intent(I_FLAG_HARM)
. = A.attackby(attacking_with, src)
// attack effects are handled in natural_weapon's apply_hit_effect() instead of here
if(!.)
Expand Down
3 changes: 3 additions & 0 deletions code/controllers/subsystems/initialization/fabrication.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ SUBSYSTEM_DEF(fabrication)
var/list/all_crafting_handlers = decls_repository.get_decls_of_subtype(/decl/crafting_stage)
for(var/hid in all_crafting_handlers)
var/decl/crafting_stage/handler = all_crafting_handlers[hid]
// TODO: revisit this if map tech level can be mutated at runtime
if(global.using_map.map_tech_level < handler.available_to_map_tech_level)
continue
if(ispath(handler.begins_with_object_type))
LAZYDISTINCTADD(crafting_procedures_by_type[handler.begins_with_object_type], handler)

Expand Down
11 changes: 8 additions & 3 deletions code/datums/ai/aggressive.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
var/break_stuff_probability = 10
var/weakref/target_ref

/datum/mob_controller/aggressive/New()
..()
if(isliving(body) && !QDELETED(body) && !QDELETED(src))
body.set_intent(I_FLAG_HARM)

/datum/mob_controller/aggressive/set_target(atom/new_target)
var/weakref/new_target_ref = weakref(new_target)
if(target_ref != new_target_ref)
Expand Down Expand Up @@ -108,7 +113,7 @@
SET_STATUS_MAX(victim, STAT_WEAK, 3)
return target
if(body.Adjacent(target))
body.a_intent = I_HURT
body.set_intent(I_FLAG_HARM)
body.ClickOn(target)
return target

Expand All @@ -135,7 +140,7 @@
// Attack anything on the target turf.
var/obj/effect/shield/S = locate(/obj/effect/shield) in targ
if(S && S.gen && S.gen.check_flag(MODEFLAG_NONHUMANS))
body.a_intent = I_HURT
body.set_intent(I_FLAG_HARM)
body.ClickOn(S)
return

Expand All @@ -156,7 +161,7 @@
for(var/type in valid_obstacles_by_priority)
var/obj/obstacle = locate(type) in targ
if(obstacle)
body.a_intent = I_HURT
body.set_intent(I_FLAG_HARM)
body.ClickOn(obstacle)
return

Expand Down
2 changes: 1 addition & 1 deletion code/datums/ai/hunter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
return !victim.isSynthetic() && (victim.stat == DEAD || victim.get_object_size() < body.get_object_size())

/datum/mob_controller/passive/hunter/proc/try_attack_prey(mob/living/prey)
body.a_intent = I_HURT
body.set_intent(I_FLAG_HARM)
body.ClickOn(prey)

/datum/mob_controller/passive/hunter/proc/consume_prey(mob/living/prey)
Expand Down
Loading
Loading