This commit is contained in:
SapphicOverload
2024-08-29 11:32:19 -04:00
committed by GitHub
parent 926aabadce
commit b187f79a45
9 changed files with 28 additions and 44 deletions

View File

@@ -99,18 +99,17 @@
return txt
/obj/item/mecha_parts/mecha_equipment/proc/is_ranged()//add a distance restricted equipment. Why not?
return range & MECHA_RANGED
/obj/item/mecha_parts/mecha_equipment/proc/is_melee()
return range & MECHA_MELEE
/obj/item/mecha_parts/mecha_equipment/proc/action_checks(atom/target)
if(!target)
return FALSE
if(!chassis)
return FALSE
if(chassis.Adjacent(target))
if(!(range & MECHA_MELEE))
chassis.default_melee_attack(target)
return FALSE
else if(!(range & MECHA_RANGED))
return FALSE
if(!equip_ready)
return FALSE
if(energy_drain && !chassis.has_charge(energy_drain))

View File

@@ -49,8 +49,6 @@
return 0
/obj/item/mecha_parts/mecha_equipment/medical/sleeper/action(mob/living/carbon/target)
if(!action_checks(target))
return
if(!istype(target))
return
if(!patient_insertion_check(target))
@@ -288,8 +286,6 @@
return
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target)
if(!action_checks(target))
return
if(istype(target, /obj/item/reagent_containers/syringe))
return load_syringe(target)
if(istype(target, /obj/item/storage))//Loads syringes from boxes

View File

@@ -22,11 +22,12 @@
. = ..()
AddComponent(/datum/component/butchering, 50, 100)
/obj/item/mecha_parts/mecha_equipment/drill/action(atom/target)
if(!action_checks(target))
return
/obj/item/mecha_parts/mecha_equipment/drill/action_checks(atom/target)
if(isspaceturf(target))
return
return FALSE
return ..()
/obj/item/mecha_parts/mecha_equipment/drill/action(atom/target)
if(isobj(target))
var/obj/target_obj = target
if(target_obj.resistance_flags & UNACIDABLE)

View File

@@ -12,9 +12,14 @@
energy_drain = 1000
range = MECHA_RANGED
/obj/item/mecha_parts/mecha_equipment/teleporter/action_checks(atom/target)
var/area/start_area = get_area(chassis)
var/area/end_area = get_area(target)
if((start_area.area_flags|end_area.area_flags) & NOTELEPORT)
return FALSE
return ..()
/obj/item/mecha_parts/mecha_equipment/teleporter/action(atom/target)
if(!action_checks(target) || is_centcom_level(loc.z))
return
var/turf/T = get_turf(target)
if(T)
do_teleport(chassis, T, 4, channel = TELEPORT_CHANNEL_BLUESPACE)
@@ -32,10 +37,14 @@
energy_drain = 300
range = MECHA_RANGED
/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action_checks(atom/target)
var/area/start_area = get_area(chassis)
var/area/end_area = get_area(target)
if((start_area.area_flags|end_area.area_flags) & NOTELEPORT)
return FALSE
return ..()
/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(atom/target)
if(!action_checks(target) || is_centcom_level(loc.z))
return
var/list/theareas = get_areas_in_range(100, chassis)
if(!theareas.len)
return
@@ -82,8 +91,6 @@
return ..()
/obj/item/mecha_parts/mecha_equipment/gravcatapult/action(atom/movable/target, mob/living/user, params)
if(!action_checks(target))
return
var/list/modifiers = params2list(params)
if(modifiers[RIGHT_CLICK])
if(locked)

View File

@@ -51,8 +51,6 @@
tool_behaviour = 0
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/action(atom/target, mob/living/user, params)
if(!action_checks(target))
return
if(!cargo_holder)
return
@@ -133,8 +131,6 @@
real_clamp = TRUE
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/kill/action(atom/target, mob/living/user, params)
if(!action_checks(target))
return
if(!cargo_holder)
return
if(isobj(target))
@@ -220,9 +216,6 @@
reagents.add_reagent(/datum/reagent/firefighting_foam, 1000)
/obj/item/mecha_parts/mecha_equipment/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch.
if(!action_checks(target))
return
if(istype(target, /obj/structure/reagent_dispensers/foamtank) && get_dist(chassis,target) <= 1)
var/obj/structure/reagent_dispensers/WT = target
WT.reagents.trans_to(src, 1000)
@@ -494,8 +487,6 @@
return ..()
/obj/item/mecha_parts/mecha_equipment/cable_layer/action(obj/item/stack/cable_coil/target)
if(!action_checks(target))
return
if(istype(target) && target.amount)
var/cur_amount = cable? cable.amount : 0
var/to_load = max(max_cable - cur_amount,0)

View File

@@ -72,9 +72,6 @@
//Melee weapon attacks are a little different in that they'll override the standard melee attack
/obj/item/mecha_parts/mecha_equipment/melee_weapon/action(atom/target, mob/living/user, params)
if(!action_checks(target))
return 0
var/turf/curloc = get_turf(chassis)
var/turf/targloc = get_turf(target)
if (!targloc || !istype(targloc) || !curloc)

View File

@@ -33,9 +33,6 @@
return projectiles_per_shot
/obj/item/mecha_parts/mecha_equipment/weapon/action(atom/target, mob/living/user, params)
if(!action_checks(target))
return 0
var/turf/curloc = get_turf(chassis)
var/turf/targloc = get_turf(target)
if (!targloc || !istype(targloc) || !curloc)
@@ -240,8 +237,6 @@
return 0
/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(target, params)
if(!action_checks(target))
return
playsound(chassis, 'sound/items/airhorn.ogg', 100, 1)
chassis.occupant_message("<font color='red' size='5'>HONK</font>")
for(var/mob/living/carbon/M in ohearers(6, chassis))
@@ -452,8 +447,6 @@
var/diags_first = FALSE
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/action(target)
if(!action_checks(target))
return
var/obj/O = new projectile(chassis.loc)
playsound(chassis, fire_sound, 50, 1)
log_message("Launched a [O.name] from [name], targeting [target].", LOG_MECHA)

View File

@@ -547,11 +547,11 @@
for(var/obj/item/mecha_parts/mecha_equipment/weapon/W in equipment)
if(!W.equip_ready && (W.equip_cooldown < MECHA_MAX_COOLDOWN))
return
if(Adjacent(target) && !selected?.is_melee())
if(!selected && Adjacent(target))
default_melee_attack(target)
return
if(selected?.action(target, user, params))
if(selected.action_checks(target) && selected.action(target, user, params))
selected.start_cooldown()
/obj/mecha/proc/default_melee_attack(atom/target)

View File

@@ -163,7 +163,7 @@
var/list/possible_weapons = get_mecha_equip_by_flag(MECHA_RANGED)
if(possible_weapons.len)
var/obj/item/mecha_parts/mecha_equipment/ME = pick(possible_weapons) //so we don't favor mecha.equipment[1] forever
if(ME.action(A))
if(ME.action_checks(A) && ME.action(A))
ME.start_cooldown()
return