diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 5631aa5e166..83dec12ede0 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -41,7 +41,6 @@ #define COMSIG_GLOB_AI_MINION_RALLY "!ai_minion_rally" #define COMSIG_GLOB_HIVE_TARGET_DRAINED "!hive_target_drained" - /// Sent when a marine dropship enters transit level #define COMSIG_GLOB_DROPSHIP_TRANSIT "!dropship_transit" ///Sent when xenos launch a hijacked dropship @@ -156,7 +155,6 @@ /// Called when the player replies. From /client/proc/cmd_admin_pm(). #define COMSIG_ADMIN_HELP_REPLIED "admin_help_replied" - // /area signals #define COMSIG_AREA_ENTERED "area_entered" //from base of area/Entered(): (atom/movable/M) #define COMSIG_AREA_EXITED "area_exited" //from base of area/Exited(): (atom/movable/M) @@ -164,7 +162,6 @@ #define COMSIG_ENTER_AREA "enter_area" //from base of area/Entered(): (/area) #define COMSIG_EXIT_AREA "exit_area" //from base of area/Exited(): (/area) - #define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params, mob/user) #define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob) #define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob) @@ -183,7 +180,6 @@ #define COMSIG_DBLCLICK_ALT "dblclick_alt" #define COMSIG_DBLCLICK_CTRL "dblclick_ctrl" - // /client signals #define COMSIG_CLIENT_MOUSEDOWN "client_mousedown" //from base of client/MouseDown(): (/client, object, location, control, params) #define COMSIG_CLIENT_MOUSEUP "client_mouseup" //from base of client/MouseUp(): (/client, object, location, control, params) @@ -261,7 +257,6 @@ ///Called right before the atom changes the value of light_flags to a different one, from base atom/set_light_flags(): (new_value) #define COMSIG_ATOM_SET_LIGHT_FLAGS "atom_set_light_flags" - // /atom/movable signals #define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" //from base of atom/movable/Move(): (/atom, new_loc, direction) #define COMPONENT_MOVABLE_BLOCK_PRE_MOVE (1<<0) @@ -404,7 +399,6 @@ #define COMSIG_HELMET_MODULE_ATTACHING "helmet_module_attaching" #define COMSIG_HELMET_MODULE_DETACHED "helmet_module_detached" - // /obj/item/weapon/gun signals #define COMSIG_GUN_FIRE "gun_fire" #define COMSIG_MOB_GUN_FIRE "mob_gun_fire" @@ -623,7 +617,7 @@ ///from /mob/living/proc/attack_alien_harm(mob/living/carbon/xenomorph/X, dam_bonus, set_location, random_location, no_head, no_crit, force_intent) #define COMSIG_XENOMORPH_ATTACK_LIVING "xenomorph_attack_living" #define COMSIG_XENOMORPH_BONUS_APPLIED (1<<0) -///from /mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +///from /mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) ///only on INTENT_HARM, INTENT_DISARM, IF it does damaage #define COMSIG_XENOMORPH_ATTACK_HOSTILE_XENOMORPH "xenomorph_attack_xenomorph" @@ -898,36 +892,12 @@ #define COMSIG_XENOABILITY_SCATTER_SPIT "xenoability_scatter_spit" -/* RUTGMC DELETION, WIDOW DELETION -#define COMSIG_XENOABILITY_WEB_SPIT "xenoability_web_spit" -#define COMSIG_XENOABILITY_BURROW "xenoability_burrow" -#define COMSIG_XENOABILITY_LEASH_BALL "xenoability_leash_ball" -#define COMSIG_XENOABILITY_CREATE_SPIDERLING "xenoability_create_spiderling" -#define COMSIG_XENOABILITY_CREATE_SPIDERLING_USING_CC "xenoability_create_spiderling_using_cc" -#define COMSIG_XENOABILITY_ATTACH_SPIDERLINGS "xenoability_attach_spiderlings" -#define COMSIG_XENOABILITY_CANNIBALISE_SPIDERLING "xenoability_cannibalise_spiderling" -#define COMSIG_XENOABILITY_WEB_HOOK "xenoability_web_hook" -#define COMSIG_XENOABILITY_SPIDERLING_MARK "xenoability_spiderling_mark" -*/ - #define COMSIG_XENOABILITY_PSYCHIC_SHIELD "xenoability_psychic_shield" #define COMSIG_XENOABILITY_TRIGGER_PSYCHIC_SHIELD "xenoability_trigger_psychic_shield" #define COMSIG_XENOABILITY_PSYCHIC_BLAST "xenoability_psychic_blast" #define COMSIG_XENOABILITY_TOGGLE_WARLOCK_ZOOM "xenoability_toggle_warlock_zoom" #define COMSIG_XENOABILITY_PSYCHIC_CRUSH "xenoability_psychic_crush" -/* RU TGMC EDIT -#define COMSIG_XENOABILITY_TENDRILS "xenoability_tendrils" -#define COMSIG_XENOABILITY_ORGANICBOMB "xenoability_puppeteerorganicbomb" -#define COMSIG_XENOABILITY_PUPPET "xenoability_puppet" -#define COMSIG_XENOABILITY_REFURBISHHUSK "xenoability_refurbishhusk" -#define COMSIG_XENOABILITY_DREADFULPRESENCE "xenoability_dreadfulpresence" -#define COMSIG_XENOABILITY_PINCUSHION "xenoability_pincushion" -#define COMSIG_XENOABILITY_FLAY "xenoability_flay" -#define COMSIG_XENOABILITY_SENDORDERS_RADIAL "xenoability_sendorders_radial" -#define COMSIG_XENOABILITY_ATTACKORDER "xenoability_attackorder" -#define COMSIG_XENOABILITY_RECALLORDER "xenoability_recallorder" -#define COMSIG_XENOABILITY_BESTOWBLESSINGS "xenoability_giveblessings" -RU TGMC EDIT */ + #define COMSIG_XENOABILITY_BANELING_EXPLODE "xenoability_baneling_explode" #define COMSIG_XENOABILITY_BEHEMOTH_ROLL "xenoability_behemoth_roll" @@ -974,7 +944,6 @@ RU TGMC EDIT */ #define COMSIG_KB_DEFENDORDER "keybind_defendorder" #define COMSIG_KB_RETREATORDER "keybind_retreatorder" - // human modules signals for keybindings #define COMSIG_KB_VALI_CONFIGURE "keybinding_vali_configure" #define COMSIG_KB_VALI_HEAL "keybinding_vali_heal" @@ -1014,7 +983,6 @@ RU TGMC EDIT */ /*******Non-Signal Component Related Defines*******/ - // /datum/action signals #define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action) #define COMPONENT_ACTION_BLOCK_TRIGGER (1<<0) @@ -1053,19 +1021,6 @@ RU TGMC EDIT */ ///Called from base of /datum/controller/subsystem/spatial_grid/proc/exit_cell: (/atom/movable) #define SPATIAL_GRID_CELL_EXITED(contents_type) "spatial_grid_cell_exited_[contents_type]" -/* RUTGMC DELETION, WIDOW DELETION -// widow spiderling signals -#define COMSIG_SPIDERLING_MARK "spiderling_mark" -#define COMSIG_SPIDERLING_RETURN "spiderling_return" -#define COMSIG_SPIDERLING_GUARD "spiderling_guard" -#define COMSIG_SPIDERLING_UNGUARD "spiderling_unguard" -*/ -/* RU TGMC EDIT -//puppet -#define COMSIG_PUPPET_CHANGE_ORDER "puppetchangeorder" -#define COMSIG_PUPPET_CHANGE_ALL_ORDER "puppetglobalorder" -RU TGMC EDIT */ - /// Xeno signals #define COMSIG_XENOABILITY_TEARING_TAIL "xenoability_tearing_tail" #define COMSIG_XENOABILITY_PANTHER_POUNCE "xenoability_panther_pounce" diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm index abb2327d679..15604f5c097 100644 --- a/code/_onclick/xeno.dm +++ b/code/_onclick/xeno.dm @@ -14,11 +14,9 @@ GLOB.round_statistics.xeno_unarmed_attacks++ SSblackbox.record_feedback("tally", "round_statistics", 1, "xeno_unarmed_attacks") - -/atom/proc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/atom/proc/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) return - /mob/living/carbon/xenomorph/larva/UnarmedAttack(atom/A, has_proximity, modifiers) if(lying_angle) return FALSE @@ -30,8 +28,6 @@ /atom/proc/attack_larva(mob/living/carbon/xenomorph/larva/L) return - - /mob/living/carbon/xenomorph/hivemind/UnarmedAttack(atom/A, has_proximity, modifiers) if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED)) return @@ -40,8 +36,6 @@ /atom/proc/attack_hivemind(mob/living/carbon/xenomorph/hivemind/attacker) return - - /mob/living/carbon/xenomorph/facehugger/UnarmedAttack(atom/A, has_proximity, modifiers) if(lying_angle) return FALSE @@ -58,5 +52,5 @@ GLOB.round_statistics.xeno_unarmed_attacks++ SSblackbox.record_feedback("tally", "round_statistics", 1, "xeno_unarmed_attacks") -/atom/proc/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/atom/proc/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) return diff --git a/code/datums/gamemodes/campaign/missions/base_rescue.dm b/code/datums/gamemodes/campaign/missions/base_rescue.dm index d1c53b6c19c..4cba8278dd5 100644 --- a/code/datums/gamemodes/campaign/missions/base_rescue.dm +++ b/code/datums/gamemodes/campaign/missions/base_rescue.dm @@ -103,7 +103,6 @@ map_text_broadcast(attacking_faction, message_to_play, "[color] override broadcast", /atom/movable/screen/text/screen_text/picture/potrait/unknown) map_text_broadcast(defending_faction, message_to_play, "[color] override broadcast", /atom/movable/screen/text/screen_text/picture/potrait/unknown) - /obj/effect/landmark/campaign_structure/weapon_x name = "weapon X spawner" icon = 'icons/obj/structures/campaign/tall_structures.dmi' @@ -145,8 +144,8 @@ else icon_state = "[initial(icon_state)]_open" -/obj/structure/weapon_x_pod/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X != occupant) +/obj/structure/weapon_x_pod/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker != occupant) return release_occupant() diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 064a44e7e77..a419ab7e60a 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -7,22 +7,17 @@ density = TRUE anchored = FALSE - /obj/effect/beam name = "beam" var/def_zone allow_pass_flags = PASS_LOW_STRUCTURE - /obj/effect/begin name = "begin" icon = 'icons/obj/stationobjs.dmi' icon_state = "begin" anchored = TRUE - - - /obj/effect/list_container name = "list container" @@ -90,19 +85,15 @@ GLOB.fog_blockers -= src return ..() - /obj/effect/forcefield/fog/attack_hand(mob/living/user) to_chat(user, span_notice("You peer through the fog, but it's impossible to tell what's on the other side...")) return TRUE +/obj/effect/forcefield/fog/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + return attack_hand(xeno_attacker) -/obj/effect/forcefield/fog/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - return attack_hand(X) - - -/obj/effect/forcefield/fog/attack_animal(M) - return attack_hand(M) - +/obj/effect/forcefield/fog/attack_animal(animal_attacker) + return attack_hand(animal_attacker) /obj/effect/forcefield/fog/CanAllowThrough(atom/movable/mover, turf/target) . = ..() @@ -171,7 +162,6 @@ icon_state = "supplypod_selector" layer = FLY_LAYER - /obj/effect/dummy/lighting_obj name = "lighting fx obj" desc = "Tell a coder if you're seeing this." @@ -193,17 +183,14 @@ if(_duration) QDEL_IN(src, _duration) - /obj/effect/dummy/lighting_obj/moblight name = "mob lighting fx" - /obj/effect/dummy/lighting_obj/moblight/Initialize(mapload, _color, _range, _power, _duration) . = ..() if(!ismob(loc)) return INITIALIZE_HINT_QDEL - //Makes a tile fully lit no matter what /obj/effect/fullbright icon = 'icons/effects/alphacolors.dmi' diff --git a/code/game/objects/effects/spawners/random/misc_item.dm b/code/game/objects/effects/spawners/random/misc_item.dm index d92513cf1a4..b4e840237bc 100644 --- a/code/game/objects/effects/spawners/random/misc_item.dm +++ b/code/game/objects/effects/spawners/random/misc_item.dm @@ -146,8 +146,7 @@ icon_state = "random_gnome" spawn_loot_chance = 15 loot = list( - /obj/item/toy/plush/gnome = 25, - /obj/item/toy/plush/gnome/living = 1, + /obj/item/toy/plush/gnome ) /obj/effect/spawner/random/misc/gnome/fiftyfifty diff --git a/code/game/objects/effects/weeds.dm b/code/game/objects/effects/weeds.dm index 627fa347c9b..8f8bc4e368b 100644 --- a/code/game/objects/effects/weeds.dm +++ b/code/game/objects/effects/weeds.dm @@ -19,7 +19,6 @@ plane = FLOOR_PLANE max_integrity = 25 ignore_weed_destruction = TRUE - var/obj/alien/weeds/node/parent_node ///The color variant of the sprite var/color_variant = NORMAL_COLOR @@ -152,10 +151,8 @@ vehicle.last_move_time += WEED_SLOWDOWN return -//RU TGMC EDIT if(HAS_TRAIT(crosser, TRAIT_SUPER_STRONG)) return -//RU TGMC EDIT if(isxeno(crosser)) var/mob/living/carbon/xenomorph/X = crosser @@ -172,10 +169,8 @@ if(victim.lying_angle) return - victim.next_move_slowdown += WEED_SLOWDOWN - /obj/alien/weeds/resting name = "resting weeds" desc = "This looks almost comfortable." @@ -234,11 +229,11 @@ return ..() return window.attackby(I, user, params) -/obj/alien/weeds/weedwall/window/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/alien/weeds/weedwall/window/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) var/obj/structure/window = locate(window_type) in loc if(!window) return ..() - return window.attack_alien(X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) + return window.attack_alien(xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) /obj/alien/weeds/weedwall/window/frame window_type = /obj/structure/window_frame @@ -330,10 +325,8 @@ vehicle.last_move_time += WEED_SLOWDOWN return -//RU TGMC EDIT if(HAS_TRAIT(crosser, TRAIT_SUPER_STRONG)) return -//RU TGMC EDIT if(!ishuman(crosser)) return diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 95a67e5bce0..67b154ccaf9 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -12,12 +12,9 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan allow_pass_flags = PASS_LOW_STRUCTURE flags_atom = PREVENT_CONTENTS_EXPLOSION resistance_flags = PROJECTILE_IMMUNE - var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite ///The iconstate that the items use for blood on blood.dmi when drawn on the mob. var/blood_sprite_state - - var/item_state = null //if you don't want to use icon_state for onmob inhand/belt/back/ear/suitstorage/glove sprite. //e.g. most headsets have different icon_state but they all use the same sprite when shown on the mob's ears. //also useful for items with many icon_state values when you don't want to make an inhand sprite for each value. @@ -28,30 +25,23 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan ///Byond tick delay between right click alternate attacks var/attack_speed_alternate = 11 var/list/attack_verb //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" - var/sharp = FALSE // whether this item cuts var/edge = FALSE // whether this item is more likely to dismember var/pry_capable = FALSE //whether this item can be used to pry things open. var/heat = 0 //whether this item is a source of heat, and how hot it is (in Kelvin). - var/hitsound = null var/w_class = WEIGHT_CLASS_NORMAL var/flags_item = NONE //flags for item stuff that isn't clothing/equipping specific. var/flags_equip_slot = NONE //This is used to determine on which slots an item can fit. - //Since any item can now be a piece of clothing, this has to be put here so all items share it. var/flags_inventory = NONE //This flag is used for various clothing/equipment item stuff var/flags_inv_hide = NONE //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc. - var/obj/item/master = null - var/flags_armor_protection = NONE //see setup.dm for appropriate bit flags var/flags_heat_protection = NONE //flags which determine which body parts are protected from heat. Use the HEAD, CHEST, GROIN, etc. flags. See setup.dm var/flags_cold_protection = NONE //flags which determine which body parts are protected from cold. Use the HEAD, CHEST, GROIN, etc. flags. See setup.dm - var/max_heat_protection_temperature //Set this variable to determine up to which temperature (IN KELVIN) the item protects against heat damage. Keep at null to disable protection. Only protects areas set by flags_heat_protection flags var/min_cold_protection_temperature //Set this variable to determine down to which temperature (IN KELVIN) the item protects against cold damage. 0 is NOT an acceptable number due to if(varname) tests!! Keep at null to disable protection. Only protects areas set by flags_cold_protection flags - ///list of /datum/action's that this item has. var/list/actions ///list of paths of action datums to give to the item on Initialize(). @@ -61,10 +51,8 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan var/siemens_coefficient = 1 // for electrical admittance/conductance (electrocution checks and shit) var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up var/breakouttime = 0 - ///list() of species types, if a species cannot put items in a certain slot, but species type is in list, it will be able to wear that item var/list/species_exception = null - var/list/allowed = null //suit storage stuff. ///name used for message when binoculars/scope is used var/zoomdevicename = null @@ -76,10 +64,8 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan var/zoom_viewsize = 5 //RU TGMC EDIT ///if you can move with the zoom on, only works if zoom_view_size is 7 otherwise CRASH() is called due to maptick performance reasons. var/zoom_allow_movement = FALSE - var/datum/embedding_behavior/embedding var/mob/living/embedded_into - ///How long it takes to equip this item yoursef var/equip_delay_self = 0 SECONDS /// How long it takes to unequip this item yourself @@ -88,14 +74,10 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan var/equip_delay_other = 2 SECONDS ///How long an item takes to remove from another person var/strip_delay = 4 SECONDS - var/reach = 1 - /// Species-specific sprites, concept stolen from Paradise//vg/. Ex: sprite_sheets = list("Combat Robot" = 'icons/mob/species/robot/backpack.dmi') If index term exists and icon_override is not set, this sprite sheet will be used. var/list/sprite_sheets = null - //** These specify item/icon overrides for _slots_ - ///>Lazylist< that overrides the default item_state for particular slots. var/list/item_state_slots ///>LazyList< Used to specify the icon file to be used when the item is worn in a certain slot. icon_override or sprite_sheets are set they will take precendence over this, assuming they apply to the slot in question. @@ -122,18 +104,12 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan var/inhand_x_offset = 0 ///Worn inhand overlay will be shifted by this along y axis var/inhand_y_offset = 0 - var/flags_item_map_variant = NONE - //TOOL RELATED VARS var/tool_behaviour = FALSE var/toolspeed = 1 var/usesound = null - var/active = FALSE - - - //Coloring vars ///Some defines to determine if the item is allowed to be recolored. var/colorable_allowed = NONE @@ -143,13 +119,9 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan var/list/icon_state_variants = list() ///Current variant selected. var/current_variant - ///Current hair concealing option selected. var/current_hair_concealment - - - /obj/item/Initialize(mapload) if(species_exception) @@ -202,11 +174,9 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan GLOB.cryoed_item_list -= src return ..() - /obj/item/proc/update_item_state(mob/user) item_state = "[initial(icon_state)][flags_item & WIELDED ? "_w" : ""]" - //user: The mob that is suiciding //damagetype: The type of damage the item will inflict on the user //BRUTELOSS = 1 @@ -217,7 +187,6 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan /obj/item/proc/suicide_act(mob/user) return - /obj/item/verb/move_to_top() set name = "Move To Top" set category = "Object" @@ -252,7 +221,6 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan return return interact(user) - /obj/item/attack_hand(mob/living/user) . = ..() if(.) @@ -283,7 +251,6 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan user.dropItemToGround(src) dropped(user) - /obj/item/update_icon_state() . = ..() if(current_variant) @@ -331,7 +298,6 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan else if(S.can_be_inserted(src)) S.handle_item_insertion(src, FALSE, user) - /obj/item/attackby_alternate(obj/item/I, mob/user, params) . = ..() if(.) @@ -340,7 +306,6 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan return alternate_color_item(I, user) - /obj/item/proc/talk_into(mob/M, input, channel, spans, datum/language/language) return ITALICS | REDUCE_RANGE @@ -397,12 +362,10 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan /obj/item/proc/on_exit_storage(obj/item/storage/S as obj) return - ///called when this item is added into a storage item, which is passed on as S. The loc variable is already set to the storage item. /obj/item/proc/on_enter_storage(obj/item/storage/S as obj) return - ///called when "found" in pockets and storage items. Returns 1 if the search should end. /obj/item/proc/on_found(mob/finder as mob) return @@ -440,7 +403,6 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan if(slowdown) human_user.add_movespeed_modifier(type, TRUE, 0, (flags_item & IMPEDE_JETPACK) ? SLOWDOWN_IMPEDE_JETPACK : NONE, TRUE, slowdown) - ///Called when an item is removed from an equipment slot. The loc should still be in the unequipper. /obj/item/proc/unequipped(mob/unequipper, slot) SHOULD_CALL_PARENT(TRUE) @@ -461,7 +423,6 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan if(slowdown) human_unequipper.remove_movespeed_modifier(type) - //sometimes we only want to grant the item's action if it's equipped in a specific slot. /obj/item/proc/item_action_slot_check(mob/user, slot) return TRUE @@ -710,7 +671,7 @@ GLOBAL_DATUM_INIT(welding_sparks_prepdoor, /mutable_appearance, mutable_appearan if(MAP_ARMOR_STYLE_JUNGLE) if(flags_item_map_variant & ITEM_JUNGLE_VARIANT) if(colorable_allowed & PRESET_COLORS_ALLOWED) - greyscale_colors = ARMOR_PALETTE_BLACK //RUTGMC edit - black instead of default drab + greyscale_colors = ARMOR_PALETTE_BLACK else if(colorable_allowed & ICON_STATE_VARIANTS_ALLOWED) current_variant = JUNGLE_VARIANT else @@ -1006,21 +967,15 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. if(-1) to_chat(user, span_danger("Your eyes itch and burn severely.")) - - - - //This proc is here to prevent Xenomorphs from picking up objects (default attack_hand behaviour) //Note that this is overriden by every proc concerning a child of obj unless inherited -/obj/item/attack_alien(mob/living/carbon/xenomorph/X, isrightclick = FALSE) +/obj/item/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, isrightclick = FALSE) return FALSE - /obj/item/proc/update_action_button_icons() for(var/datum/action/A AS in actions) A.update_button_icon() - /obj/item/proc/extinguish(atom/target, mob/user) if (reagents.total_volume < 1) to_chat(user, span_warning("\The [src]'s water reserves are empty.")) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index dc82a3451be..c00dd31701e 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -1,5 +1,4 @@ //Also contains /obj/structure/closet/bodybag because I doubt anyone would think to look for bodybags in /object/structures - /obj/item/bodybag name = "body bag" desc = "A folded bag designed for the storage and transportation of cadavers." @@ -9,7 +8,6 @@ var/unfoldedbag_path = /obj/structure/closet/bodybag var/obj/structure/closet/bodybag/unfoldedbag_instance = null - /obj/item/bodybag/Initialize(mapload, unfoldedbag) . = ..() unfoldedbag_instance = unfoldedbag @@ -23,11 +21,9 @@ QDEL_NULL(unfoldedbag_instance) return ..() - /obj/item/bodybag/attack_self(mob/user) deploy_bodybag(user, user.loc) - /obj/item/bodybag/afterattack(atom/target, mob/user, proximity) if(!proximity || !isturf(target) || target.density) return @@ -37,7 +33,6 @@ return deploy_bodybag(user, target) - /obj/item/bodybag/proc/deploy_bodybag(mob/user, atom/location) if(QDELETED(unfoldedbag_instance)) unfoldedbag_instance = new unfoldedbag_path(location, src) @@ -47,7 +42,6 @@ user.temporarilyRemoveItemFromInventory(src) moveToNullspace() - /obj/structure/closet/bodybag name = "body bag" var/bag_name = "body bag" @@ -70,7 +64,6 @@ var/obj/structure/bed/roller/roller_buckled //the roller bed this bodybag is attached to. var/mob/living/bodybag_occupant - /obj/structure/closet/bodybag/Initialize(mapload, foldedbag) . = ..() foldedbag_instance = foldedbag @@ -88,13 +81,11 @@ UnregisterSignal(src, COMSIG_ATOM_ACIDSPRAY_ACT, PROC_REF(acidspray_act)) return ..() - /obj/structure/closet/bodybag/is_buckled() if(roller_buckled) return roller_buckled return ..() - /obj/structure/closet/bodybag/proc/update_name() if(opened) name = bag_name @@ -104,7 +95,6 @@ else name = "[bag_name] (empty)" - /obj/structure/closet/bodybag/attackby(obj/item/I, mob/user, params) . = ..() @@ -128,7 +118,6 @@ name = "body bag" overlays.Cut() - /obj/structure/closet/bodybag/closet_special_handling(mob/living/mob_to_stuff) // overriding this if(!ishuman(mob_to_stuff)) return FALSE //Only humans. @@ -138,7 +127,6 @@ return FALSE //We don't want to store those that can be revived. return TRUE - /obj/structure/closet/bodybag/close() . = ..() if(.) @@ -150,14 +138,12 @@ return TRUE return FALSE - /obj/structure/closet/bodybag/open() . = ..() if(bodybag_occupant) bodybag_occupant = null update_name() - /obj/structure/closet/bodybag/MouseDrop(over_object, src_location, over_location) . = ..() if(over_object != usr || !Adjacent(usr) || roller_buckled) @@ -172,7 +158,6 @@ usr.put_in_hands(foldedbag_instance) moveToNullspace() - /obj/structure/closet/bodybag/Move(NewLoc, direct) if (roller_buckled && roller_buckled.loc != NewLoc) //not updating position if (!roller_buckled.anchored) @@ -182,13 +167,11 @@ else return ..() - /obj/structure/closet/bodybag/forceMove(atom/destination) if(roller_buckled) roller_buckled.unbuckle_bodybag() return ..() - /obj/structure/closet/bodybag/update_icon() if(!opened) icon_state = icon_closed @@ -198,16 +181,15 @@ else icon_state = icon_opened - -/obj/structure/closet/bodybag/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/closet/bodybag/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(opened) return FALSE // stop xeno closing things - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - bodybag_occupant?.attack_alien(X) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + bodybag_occupant?.attack_alien(xeno_attacker) open() - X.visible_message(span_danger("\The [X] slashes \the [src] open!"), \ + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] slashes \the [src] open!"), \ span_danger("We slash \the [src] open!"), null, 5) return TRUE @@ -256,7 +238,6 @@ balloon_alert(bodybag_occupant, "smoke forces you out") open() //Get out - /obj/item/storage/box/bodybags name = "body bags" desc = "This box contains body bags." @@ -265,7 +246,6 @@ spawn_type = /obj/item/bodybag spawn_number = 7 - /obj/item/bodybag/cryobag name = "stasis bag" desc = "A folded, reusable bag designed to prevent additional damage to an occupant." @@ -274,7 +254,6 @@ unfoldedbag_path = /obj/structure/closet/bodybag/cryobag var/used = FALSE - /obj/structure/closet/bodybag/cryobag name = "stasis bag" bag_name = "stasis bag" @@ -282,7 +261,6 @@ icon = 'icons/obj/cryobag.dmi' foldedbag_path = /obj/item/bodybag/cryobag - /obj/structure/closet/bodybag/cryobag/attackby(obj/item/I, mob/user, params) if(!istype(I, /obj/item/healthanalyzer)) return ..() @@ -295,7 +273,6 @@ J.attack(bodybag_occupant, user) // yes this is awful -spookydonut // TODO return TRUE - /obj/structure/closet/bodybag/cryobag/open() if(bodybag_occupant) REMOVE_TRAIT(bodybag_occupant, TRAIT_STASIS, STASIS_BAG_TRAIT) @@ -303,13 +280,11 @@ bodybag_occupant.record_time_in_stasis() return ..() - /obj/structure/closet/bodybag/cryobag/closet_special_handling(mob/living/mob_to_stuff) // overriding this if(!ishuman(mob_to_stuff)) return FALSE //Humans only. return TRUE - /obj/structure/closet/bodybag/cryobag/close() . = ..() if(bodybag_occupant) @@ -323,7 +298,6 @@ visible_message(span_notice("\The [src] rejects the corpse.")) open() - /obj/structure/closet/bodybag/cryobag/examine(mob/living/user) . = ..() if(!ishuman(bodybag_occupant)) @@ -339,7 +313,6 @@ . += "Scan from [medical_record.fields["last_scan_time"]]" break - /obj/structure/closet/bodybag/cryobag/Topic(href, href_list) . = ..() if(.) @@ -359,14 +332,12 @@ popup.open(FALSE) break - /obj/item/trash/used_stasis_bag name = "used stasis bag" icon = 'icons/obj/cryobag.dmi' icon_state = "bodybag_used" desc = "It's been ripped open. You will need to find a machine capable of recycling it." - //MARINE SNIPER TARPS /obj/item/bodybag/tarp @@ -397,13 +368,11 @@ unfoldedbag_instance.close() return TRUE - /obj/item/bodybag/tarp/snow icon = 'icons/obj/bodybag.dmi' icon_state = "snowtarp_folded" unfoldedbag_path = /obj/structure/closet/bodybag/tarp/snow - /obj/structure/closet/bodybag/tarp name = "\improper V1 thermal-dampening tarp" bag_name = "V1 thermal-dampening tarp" @@ -418,7 +387,6 @@ closet_stun_delay = 0.5 SECONDS //Short delay to prevent ambushes from being too degenerate. var/serial_number //Randomized serial number used to stop point macros and such. - /obj/structure/closet/bodybag/tarp/close() . = ..() if(!opened && bodybag_occupant) @@ -428,7 +396,6 @@ bodybag_occupant.alpha = 0 RegisterSignals(bodybag_occupant, list(COMSIG_MOB_DEATH, COMSIG_PREQDELETED), PROC_REF(on_bodybag_occupant_death)) - /obj/structure/closet/bodybag/tarp/open() anchored = FALSE if(alpha != initial(alpha)) @@ -440,7 +407,6 @@ bodybag_occupant.alpha = initial(bodybag_occupant.alpha) return ..() - /obj/structure/closet/bodybag/tarp/closet_special_handling(mob/living/mob_to_stuff) // overriding this if(!ishuman(mob_to_stuff)) return FALSE //Humans only. @@ -448,16 +414,13 @@ return FALSE return TRUE - /obj/structure/closet/bodybag/tarp/proc/on_bodybag_occupant_death(mob/source, gibbing) SIGNAL_HANDLER open() - /obj/structure/closet/bodybag/tarp/update_name() return //Shouldn't be revealing who's inside. - /obj/structure/closet/bodybag/tarp/MouseDrop(over_object, src_location, over_location) . = ..() var/obj/item/bodybag/tarp/folded_tarp = foldedbag_instance @@ -465,7 +428,6 @@ folded_tarp.serial_number = serial_number //Set the serial number folded_tarp.name = "\improper [serial_number] [initial(folded_tarp.name)]" //Set the name with the serial number - /obj/structure/closet/bodybag/tarp/snow icon_state = "snowtarp_closed" icon_closed = "snowtarp_closed" diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index a7b08bf830b..36a4b860316 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -164,15 +164,15 @@ Stepping directly on the mine will also blow it up return TRUE /// Alien attacks trigger the explosive to instantly detonate -/obj/item/explosive/mine/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/item/explosive/mine/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(triggered) //Mine is already set to go off return - if(X.a_intent == INTENT_HELP) + if(xeno_attacker.a_intent == INTENT_HELP) return - X.visible_message(span_danger("[X] has slashed [src]!"), \ + xeno_attacker.visible_message(span_danger("[xeno_attacker] has slashed [src]!"), \ span_danger("We slash [src]!")) playsound(loc, 'sound/weapons/slice.ogg', 25, 1) INVOKE_ASYNC(src, PROC_REF(trigger_explosion)) diff --git a/code/game/objects/items/flashlight.dm b/code/game/objects/items/flashlight.dm index b5d8d37b88a..ad8a892b23f 100644 --- a/code/game/objects/items/flashlight.dm +++ b/code/game/objects/items/flashlight.dm @@ -40,12 +40,12 @@ update_action_button_icons() update_icon() -/obj/item/flashlight/attack_alien(mob/living/carbon/xenomorph/X, isrightclick = FALSE) - if(turn_light(X, FALSE) != CHECKS_PASSED) +/obj/item/flashlight/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, isrightclick = FALSE) + if(turn_light(xeno_attacker, FALSE) != CHECKS_PASSED) return playsound(loc, "alien_claw_metal", 25, 1) - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - to_chat(X, span_warning("We disable the metal thing's lights.") ) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + to_chat(xeno_attacker, span_warning("We disable the metal thing's lights.") ) /obj/item/flashlight/update_icon_state() . = ..() @@ -83,14 +83,12 @@ to_chat(user, span_notice("Use a screwdriver on [F] to change it back.")) qdel(src) //Delete da old flashlight - /obj/item/flashlight/attack(mob/living/M, mob/living/user) if(light_on && user.zone_selected == BODY_ZONE_PRECISE_EYES) if((user.getBrainLoss() >= 60) && prob(50)) //too dumb to use flashlight properly return ..() //just hit them in the head - var/mob/living/carbon/human/H = M //mob has protective eyewear if(ishuman(M) && ((H.head && H.head.flags_inventory & COVEREYES) || (H.wear_mask && H.wear_mask.flags_inventory & COVEREYES) || (H.glasses && H.glasses.flags_inventory & COVEREYES))) to_chat(user, span_notice("You're going to need to remove that [(H.head && H.head.flags_inventory & COVEREYES) ? "helmet" : (H.wear_mask && H.wear_mask.flags_inventory & COVEREYES) ? "mask": "glasses"] first.")) @@ -115,7 +113,6 @@ else return ..() - /obj/item/flashlight/pen name = "penlight" desc = "A pen-sized light, used by medical staff." @@ -174,12 +171,12 @@ if(!usr.stat) attack_self(usr) -/obj/item/flashlight/lamp/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/item/flashlight/lamp/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - X.do_attack_animation(src, ATTACK_EFFECT_SMASH) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_SMASH) playsound(loc, 'sound/effects/metalhit.ogg', 20, TRUE) - X.visible_message(span_danger("\The [X] smashes [src]!"), \ + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] smashes [src]!"), \ span_danger("We smash [src]!"), null, 5) deconstruct(FALSE) @@ -195,7 +192,6 @@ light_on = TRUE //Bio-luminesence has one setting, on. raillight_compatible = FALSE - /obj/item/flashlight/slime/attack_self(mob/user) return //Bio-luminescence does not toggle. diff --git a/code/game/objects/items/reagent_containers/food/cans.dm b/code/game/objects/items/reagent_containers/food/cans.dm index d1670b2e7a2..d21119a3934 100644 --- a/code/game/objects/items/reagent_containers/food/cans.dm +++ b/code/game/objects/items/reagent_containers/food/cans.dm @@ -3,11 +3,10 @@ init_reagent_flags = NONE var/canopened = FALSE -/obj/item/reagent_containers/food/drinks/cans/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/item/reagent_containers/food/drinks/cans/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(!CONFIG_GET(flag/fun_allowed)) return FALSE - attack_hand(X) - + attack_hand(xeno_attacker) /obj/item/reagent_containers/food/drinks/cans/attack_self(mob/user as mob) if(canopened == FALSE) diff --git a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm index abbdd3e56ce..a7af13fd465 100644 --- a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm +++ b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm @@ -1,9 +1,6 @@ - - ///////////////////////////////////////////////Alchohol bottles! -Agouri ////////////////////////// //Functionally identical to regular drinks. The only difference is that the default bottle size is 100. - Darem //Bottles now weaken and break when smashed on people's heads. - Giacom - /obj/item/reagent_containers/food/drinks/bottle amount_per_transfer_from_this = 10 volume = 100 @@ -38,7 +35,6 @@ if(user.a_intent != INTENT_HARM || !isGlass) return ..() - force = 15 //Smashing bottles over someoen's head hurts. var/datum/limb/affecting = user.zone_selected //Find what the player is aiming at @@ -74,10 +70,10 @@ //Finally, smash the bottle. This kills (del) the bottle. smash(target, user) -/obj/item/reagent_containers/food/drinks/bottle/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/item/reagent_containers/food/drinks/bottle/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(!CONFIG_GET(flag/fun_allowed)) return FALSE - attack_hand(X) + attack_hand(xeno_attacker) /obj/item/reagent_containers/food/drinks/bottle/gin name = "\improper Griffeater Gin" diff --git a/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm b/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm index 6ba09eadadd..cf87c859245 100644 --- a/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm @@ -1,5 +1,3 @@ - - /obj/item/reagent_containers/food/drinks/drinkingglass name = "glass" desc = "Your standard drinking glass." @@ -611,10 +609,10 @@ center_of_mass = list("x"=16, "y"=10) return -/obj/item/reagent_containers/food/drinks/drinkingglass/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/item/reagent_containers/food/drinks/drinkingglass/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(!CONFIG_GET(flag/fun_allowed)) return FALSE - attack_hand(X) + attack_hand(xeno_attacker) // for /obj/machinery/vending/sovietsoda /obj/item/reagent_containers/food/drinks/drinkingglass/soda diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index bb02d0a3d91..a874b400d33 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -4,13 +4,13 @@ desc = "yummy" icon = 'icons/obj/items/food/food.dmi' icon_state = null + center_of_mass = list("x"=15, "y"=15) var/bitesize = 1 var/bitecount = 0 var/trash = null var/slice_path var/slices_num var/package = FALSE - center_of_mass = list("x"=15, "y"=15) var/list/tastes // for example list("crisps" = 2, "salt" = 1) /obj/item/reagent_containers/food/snacks/create_reagents(max_vol, new_flags, list/init_reagents, data) @@ -47,10 +47,10 @@ /obj/item/reagent_containers/food/snacks/attack_self(mob/user as mob) return -/obj/item/reagant_containers/food/snacks/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/item/reagant_containers/food/snacks/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(!CONFIG_GET(flag/fun_allowed)) return FALSE - attack_hand(X) + attack_hand(xeno_attacker) /obj/item/reagent_containers/food/snacks/attack(mob/M, mob/user, def_zone) if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it. @@ -97,12 +97,9 @@ return var/rgt_list_text = get_reagent_list_text() - log_combat(user, M, "fed", src, "Reagents: [rgt_list_text]") - balloon_alert_to_viewers("forces [M] to eat") - if(reagents) //Handle ingestion of the reagent. playsound(M.loc,'sound/items/eatfood.ogg', 15, 1) if(reagents.total_volume) @@ -170,7 +167,6 @@ if(reagents.total_volume <= 0) qdel(src) - /obj/item/reagent_containers/food/snacks/sliceable/attackby(obj/item/I, mob/user, params) . = ..() @@ -200,7 +196,6 @@ qdel(src) return TRUE - /obj/item/reagent_containers/food/snacks/Destroy() for(var/i in contents) var/atom/movable/AM = i @@ -229,22 +224,8 @@ //N.emote("nibbles away at the [src]") N.health = min(N.health + 1, N.maxHealth) -//////////////////////////////////////////////////////////////////////////////// -/// FOOD END -//////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - ////////////////////////////////////////////////// -////////////////////////////////////////////Snacks +///////////////////Snacks///////////////////////// ////////////////////////////////////////////////// //Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created // already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten. @@ -272,7 +253,6 @@ ///obj/item/reagent_containers/food/snacks/burger/xeno/Initialize(mapload) //Absolute pathing for procs, please. // . = ..() //Calls the parent proc, don't forget to add this. - /obj/item/reagent_containers/food/snacks/honeycomb name = "honeycomb" icon_state = "honeycomb" @@ -297,7 +277,6 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 3, /datum/reagent/medicine/tricordrazine = 1, /datum/reagent/iron = 5) //Honk bitesize = 2 - /obj/item/reagent_containers/food/snacks/candy_corn name = "candy corn" desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas." @@ -423,9 +402,7 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("chalky wheat" = 1) - /obj/item/reagent_containers/food/snacks/organ - name = "organ" desc = "It's good for you." icon = 'icons/obj/items/organs.dmi' @@ -433,12 +410,10 @@ filling_color = "#E00D34" bitesize = 3 - /obj/item/reagent_containers/food/snacks/organ/Initialize(mapload) list_reagents = list(/datum/reagent/consumable/nutriment = rand(3,5), /datum/reagent/toxin = rand(1,3)) return ..() - /obj/item/reagent_containers/food/snacks/worm name = "worm" icon = 'icons/obj/items/items.dmi' @@ -693,12 +668,11 @@ icon_state = "popcorn" icon = 'icons/obj/items/food/packaged.dmi' trash = /obj/item/trash/popcorn - var/unpopped = 0 filling_color = "#FFFAD4" list_reagents = list(/datum/reagent/consumable/nutriment = 2) bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 tastes = list("popcorn" = 3, "butter" = 1) - + var/unpopped = 0 /obj/item/reagent_containers/food/snacks/popcorn/Initialize(mapload) . = ..() @@ -710,7 +684,6 @@ unpopped = max(0, unpopped-1) return ..() - /obj/item/reagent_containers/food/snacks/sosjerky name = "Scaredy's Private Reserve Beef Jerky" icon_state = "sosjerky" @@ -842,9 +815,9 @@ icon_state = "monkeycube" bitesize = 12 filling_color = "#ADAC7F" - var/monkey_type = /mob/living/carbon/human/species/monkey list_reagents = list(/datum/reagent/consumable/nutriment = 10) tastes = list("the jungle" = 1, "bananas" = 1) + var/monkey_type = /mob/living/carbon/human/species/monkey /obj/item/reagent_containers/food/snacks/monkeycube/examine(mob/user) . = ..() @@ -902,13 +875,11 @@ new monkey_type(T) qdel(src) - /obj/item/reagent_containers/food/snacks/monkeycube/wrapped desc = "Still wrapped in some paper." icon_state = "monkeycubewrap" package = TRUE - /obj/item/reagent_containers/food/snacks/monkeycube/farwacube name = "farwa cube" monkey_type = /mob/living/carbon/human/species/monkey/farwa @@ -917,7 +888,6 @@ name = "farwa cube" monkey_type = /mob/living/carbon/human/species/monkey/farwa - /obj/item/reagent_containers/food/snacks/monkeycube/stokcube name = "stok cube" monkey_type = /mob/living/carbon/human/species/monkey/stok @@ -926,7 +896,6 @@ name = "stok cube" monkey_type = /mob/living/carbon/human/species/monkey/stok - /obj/item/reagent_containers/food/snacks/monkeycube/neaeracube name = "neaera cube" monkey_type = /mob/living/carbon/human/species/monkey/naera @@ -1303,7 +1272,6 @@ balloon_alert(user, "cuts and rolls strips into balls") qdel(src) - /obj/item/reagent_containers/food/snacks/cutlet name = "cutlet" desc = "A tasty meat slice." @@ -1313,7 +1281,6 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("meat" = 1) - /obj/item/reagent_containers/food/snacks/rawmeatball name = "raw meatball" desc = "A raw meatball." @@ -1343,7 +1310,6 @@ bitesize = 2 list_reagents = list(/datum/reagent/consumable/nutriment = 3) - /obj/item/reagent_containers/food/snacks/rawsticks name = "raw potato sticks" desc = "Raw fries, not very tasty." @@ -1399,7 +1365,6 @@ list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sodiumchloride = 0.5) var/variation = null - /obj/item/reagent_containers/food/snacks/upp/Initialize(mapload) if(!variation) variation = pick("fish","rice") @@ -1409,7 +1374,6 @@ tastes = list("dried [pick("carp", "shark", "tuna", "fish")]" = 1, "[pick("potatoes", "borsch", "borshch", "bortsch", "hardtack")]" = 1) if("rice") tastes = list("[pick("rice", "rye", "starch")]" = 1, "[pick("sawdust", "beans", "chicken")]" = 1) - return ..() /obj/item/reagent_containers/food/snacks/upp/attack_self(mob/user as mob) @@ -1445,7 +1409,6 @@ //no taste, default to "something indescribable" list_reagents = list(/datum/reagent/consumable/nutriment = 3) - /obj/item/reagent_containers/food/snacks/kepler_crisps name = "Kepler Crisps" desc = "'They're disturbingly good!' Now with 0% trans fat." @@ -1472,7 +1435,6 @@ icon_state = "[initial(icon_state)]-o" package = FALSE - /obj/item/reagent_containers/food/snacks/wrapped/booniebars name = "Boonie Bars" desc = "Two delicious bars of minty chocolate. \"Sometimes things are just... out of reach.\"" @@ -1542,7 +1504,7 @@ return ..() /obj/item/reagent_containers/food/snacks/packaged_meal/attack_self(mob/user as mob) - if (package) + if(package) balloon_alert(user, "opens package") playsound(loc,'sound/effects/pageturn2.ogg', 15, 1) name = "\improper" + flavor @@ -1568,7 +1530,6 @@ icon_state = "dessert" list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/sugar = 1) - /obj/item/reagent_containers/food/snacks/lollipop name = "lollipop" desc = "A delicious lollipop." diff --git a/code/game/objects/items/reagent_containers/syringes.dm b/code/game/objects/items/reagent_containers/syringes.dm index f919b6c787d..bdbf7038c12 100644 --- a/code/game/objects/items/reagent_containers/syringes.dm +++ b/code/game/objects/items/reagent_containers/syringes.dm @@ -229,7 +229,7 @@ var/hit_area = affecting.display_name var/mob/living/carbon/human/H = target - if((user != target) && !H.check_shields(COMBAT_TOUCH_ATTACK, 14, "melee")) + if((user != target) && !H.check_shields(COMBAT_TOUCH_ATTACK, 14, MELEE)) return if (target != user && !prob(target.modify_by_armor(100, MELEE, penetration, target_zone))) diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index a06edf3ce0d..cfd33b2c409 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -132,7 +132,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(heat) return heat = 1000 - damtype = "burn" + damtype = BURN icon_state = "match_lit" set_light_on(TRUE) diff --git a/code/game/objects/items/tools/kitchen_tools.dm b/code/game/objects/items/tools/kitchen_tools.dm index d13bfea7b9b..9103ee1baff 100644 --- a/code/game/objects/items/tools/kitchen_tools.dm +++ b/code/game/objects/items/tools/kitchen_tools.dm @@ -1,15 +1,3 @@ -/* Kitchen tools -* Contains: -* Utensils -* Spoons -* Forks -* Knives -* Kitchen knives -* Butcher's cleaver -* Rolling Pins -* Trays -*/ - /obj/item/tool/kitchen icon = 'icons/obj/items/kitchen_tools.dmi' item_icons = list( @@ -60,10 +48,10 @@ else ..() -/obj/item/tool/kitchen/utensil/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/item/tool/kitchen/utensil/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(!CONFIG_GET(flag/fun_allowed)) return FALSE - attack_hand(X) + attack_hand(xeno_attacker) /obj/item/tool/kitchen/utensil/fork name = "fork" @@ -232,7 +220,6 @@ var/mob/living/carbon/human/H = M ///////////////////////////////////// /Let's have this ready for later. - if(!(user.zone_selected == ("eyes" || "head"))) //////////////hitting anything else other than the eyes if(prob(33)) src.add_mob_blood(H) @@ -240,7 +227,6 @@ if (istype(location, /turf)) location.add_mob_blood(H) ///Plik plik, the sound of blood - log_combat(user, M, "attacked", src) if(prob(15)) @@ -257,9 +243,6 @@ visible_message(span_danger("[user] slams [M] with the tray!")) return - - - if(ishuman(M) && ((H.head && (H.head.flags_inventory & COVEREYES) ) || (H.wear_mask && (H.wear_mask.flags_inventory & COVEREYES) ) || (H.glasses && (H.glasses.flags_inventory & COVEREYES) ))) to_chat(M, span_warning("You get slammed in the face with the tray, against your mask!")) if(prob(33)) @@ -331,6 +314,7 @@ = = ===============~~~~~================================~~~~~==================== */ + /obj/item/tool/kitchen/tray/proc/calc_carry() // calculate the weight of the items on the tray var/val = 0 // value to return diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index e25b26fdc7f..786dfd86bc0 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -1,20 +1,3 @@ -/* Toys! -* Contains: -* Balloons -* Fake telebeacon -* Fake singularity -* Toy mechs -* Crayons -* Snap pops -* Water flower -* Dolls -* Inflatable duck -* Other things -*/ - - -//recreational items - /obj/item/toy icon = 'icons/obj/items/toy.dmi' item_icons = list( @@ -25,11 +8,10 @@ throw_range = 20 force = 0 -/obj/item/toy/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/item/toy/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(!CONFIG_GET(flag/fun_allowed)) return FALSE - attack_hand(X) - + attack_hand(xeno_attacker) /* * Balloons @@ -58,7 +40,6 @@ desc = "A translucent balloon with some form of liquid sloshing around in it." update_icon() - /obj/item/toy/balloon/attackby(obj/item/I, mob/user, params) . = ..() @@ -79,10 +60,8 @@ desc = "A translucent balloon with some form of liquid sloshing around in it." to_chat(user, span_notice("You fill the balloon with the contents of [I].")) I.reagents.trans_to(src, 10) - update_icon() - /obj/item/toy/balloon/throw_impact(atom/hit_atom) . = ..() if(!.) @@ -137,8 +116,6 @@ icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" - - /* * Crayons */ @@ -248,7 +225,6 @@ else src.empty = 0 - var/obj/effect/decal/D = new/obj/effect/decal/(get_turf(src)) D.name = "water" D.icon = 'icons/obj/items/chemistry.dmi' @@ -274,8 +250,6 @@ . = ..() . += "[reagents.total_volume] units of water left!" - - /* * Mech prizes */ @@ -320,7 +294,6 @@ desc = "Mini-Mecha action figure! Collect them all! 4/11." icon_state = "gygaxtoy" - /obj/item/toy/prize/durand name = "toy durand" desc = "Mini-Mecha action figure! Collect them all! 5/11." @@ -364,7 +337,6 @@ icon = 'icons/obj/clothing/belts.dmi' flags_equip_slot = ITEM_SLOT_BELT - /obj/item/toy/beach_ball name = "beach ball" icon_state = "beachball" @@ -379,7 +351,6 @@ user.drop_held_item() throw_at(target, throw_range, throw_speed, user) - /obj/item/toy/dice name = "d6" desc = "A dice with six sides." @@ -411,8 +382,6 @@ span_notice("You throw [src]. It lands on a [result]. [comment]"), \ span_notice("You hear [src] landing on a [result]. [comment]")) - - /obj/item/toy/bikehorn name = "bike horn" desc = "A horn off of a bicycle." @@ -425,7 +394,6 @@ throw_range = 15 attack_verb = list("HONKED") - /obj/item/toy/bikehorn/Initialize(mapload) . = ..() AddComponent(/datum/component/squeak, 'sound/items/bikehorn.ogg', 50) @@ -532,10 +500,6 @@ item_state = "rounyplush" attack_verb = list("slashes", "bites", "pounces") -#define HIGH_GNOME_MOVE_RANGE 40 -#define STANDARD_GNOME_PIPE_CHANCE 50 -#define GNOME_EXCLUSION_RANGE 21 //20 is the max view of a ghost - /obj/item/toy/plush/gnome name = "gnome" desc = "A mythological creature that guarded Terra's garden. You wonder why it is here." @@ -547,214 +511,6 @@ . = ..() AddComponent(/datum/component/squeak, 'sound/items/gnome.ogg', 50) -/obj/item/toy/plush/gnome/living - resistance_flags = UNACIDABLE - ///how far the gnome should choose for teleportation purposes - var/gnome_move_range = 5 - ///how many failed teleports we've done - var/teleport_retries = 0 - ///sanity cap to prevent gnome spending too much time calculating possible teleport areas, it's theoretically possible to store the gnome in an impossible area so we need to check this - var/max_tries = 50 - ///list for keeping track of the mobs around us - var/mob/possible_mobs = list() - ///list for keeping track of items in current gnome turf - var/turf/targetturf - ///used for determining if a gnome is in the pipe network - var/pipe_mode = FALSE - ///how likely are we to enter a pipe - var/pipe_mode_chance = STANDARD_GNOME_PIPE_CHANCE - ///hold an int that determines what the interval a gnome acts - var/gnome_act_timer - ///original gnome spawn location, used as an emergency backup - var/gnome_origin - -/obj/item/toy/plush/gnome/living/Initialize(mapload) - . = ..() - gnome_origin = get_turf(src) - addtimer(CALLBACK(src, PROC_REF(gnome_act)), 5 MINUTES) - RegisterSignal(src, COMSIG_MOVABLE_SHUTTLE_CRUSH, PROC_REF(shuttle_crush)) - -///root proc for handling gnome AI routines -/obj/item/toy/plush/gnome/living/proc/gnome_act() - ///targetturf stores our position at the start of routine in all. teleport_routine uses it as a baseline for determining where to find teleport locations also - targetturf = get_turf(src) - gnome_act_timer = rand(4,8) MINUTES - pipe_mode_chance = STANDARD_GNOME_PIPE_CHANCE - if(prob(10)) - do_flavor_actions(targetturf) //flavor actions don't take being watched into account - addtimer(CALLBACK(src, PROC_REF(gnome_act)), gnome_act_timer) - return - possible_mobs = list() - for(var/mob/nearbymob in range(GNOME_EXCLUSION_RANGE, src)) //all mobs are included except animals, this means that AIs and ghosts will block gnome movement - if(isanimal(nearbymob)) - continue - if(isobserver(nearbymob)) - continue - possible_mobs += nearbymob - if(handle_pipe_mode(targetturf) && pipe_mode) //if we're in pipe_mode we return, - addtimer(CALLBACK(src, PROC_REF(gnome_act)), gnome_act_timer) - return - if(isspacearea(get_area(src))) - forceMove(gnome_origin) //we're in space, return to origin - targetturf = get_turf(src) //reset targetturf to origin to avoid problems with teleport_routine - gnome_move_range = gnome_move_range + teleport_retries * 3 //for each teleport retry the gnome gets a multiplier to distance, to allow it to "escape" if left unattended - if(length(possible_mobs)) - addtimer(CALLBACK(src, PROC_REF(gnome_act)), rand(15,90) SECONDS) //we're being watched, set shorter counter so we can escape once eyes are off of us - teleport_retries += 1 //for each time a watching mob suppresses our teleport, increment counter - return - else - if(handle_ladders()) - targetturf = get_turf(src) //need to reset targetturf to new position indicated by ladder use, or teleport_routine will calculate from old position - flick("gnome_escape", src) - addtimer(CALLBACK(src, PROC_REF(teleport_routine), targetturf), 1.5 SECONDS) //delay just briefly so our animation can go off - addtimer(CALLBACK(src, PROC_REF(gnome_act)), gnome_act_timer) - -//handles gnome going up or down ladders -/obj/item/toy/plush/gnome/living/proc/handle_ladders() - for(var/atom/movable/object AS in targetturf.contents) - if(!length(targetturf.contents) || prob(60)) //possibility that we don't use a ladder - return FALSE - if(isladder(object)) - var/obj/structure/ladder/selectedladder = object - if(selectedladder.up && selectedladder.down) - pick(forceMove(get_turf(selectedladder.up)), forceMove(get_turf(selectedladder.down))) - break - else if(selectedladder.up) - forceMove(get_turf(selectedladder.up)) - break - else if(selectedladder.down) - forceMove(get_turf(selectedladder.down)) - break - return TRUE - -///handles gnome teleportation when not being observed by players -/obj/item/toy/plush/gnome/living/proc/teleport_routine(turf/targetturf) - var/loopcount - while(!length(possible_mobs)) - loopcount += 1 - var/area/targetarea = get_area(targetturf) - if(!targetarea || !targetturf) - targetturf = get_turf(src) //somehow we've lost our turf, use the one underneath us - continue - //find teleport locations within radius gnome_move_range of targetturf. once found, we verify that it's valid, set our new targetturf to it and move gnome to the new location - targetturf = locate(targetturf.x + rand(gnome_move_range * -1, gnome_move_range), targetturf.y + rand(gnome_move_range * -1, gnome_move_range), targetturf.z) - targetarea = get_area(targetturf) - if(get_teleport_prereqs(targetturf) || loopcount >= max_tries) //try different turfs within range until we find something that passes get_teleport_prereqs or we hit max amount of loops - teleport_retries = 0 //teleported successfully, clear teleport_retries - break - forceMove(targetturf) - flick("gnome_return", src) - -///validate that the turf we're attempting to teleport to is not dense in space etc -/obj/item/toy/plush/gnome/living/proc/get_teleport_prereqs(turf/targetturf, ignore_watching_players = FALSE) - var/area/targetarea = get_area(targetturf) - if(!targetarea || !targetturf) - return FALSE - if(isclosedturf(targetturf)) - return FALSE - if(isspaceturf(targetturf) || isspacearea(targetarea) || islava(targetturf)) - return FALSE - for(var/atom/movable/object AS in targetturf.contents) //don't move to tiles with dense objects on them - if(object.density) - return FALSE - for(var/mob/nearbymob in range(GNOME_EXCLUSION_RANGE, src)) //make sure wherever we're going doesn't have observing mobs - if(isanimal(nearbymob)) - continue - if(isobserver(nearbymob)) - continue - else if(!ignore_watching_players) //if we detect any mob that's not an observer or animal we return false - return FALSE - return TRUE - -///various flavor actions -/obj/item/toy/plush/gnome/living/proc/do_flavor_actions(turf/targetturf) - var/randomchoice = rand(1,8) - switch(randomchoice) - if(1) - pick(playsound(src, 'sound/items/gnome.ogg', 35, TRUE), - playsound(src, 'sound/misc/robotic scream.ogg', 35, TRUE), - playsound(src, 'sound/voice/pred_laugh1.ogg', 35, TRUE), - playsound(src, 'sound/voice/pred_laugh2.ogg', 35, TRUE), - playsound(src, 'sound/voice/pred_laugh3.ogg', 35, TRUE), - playsound(src, 'sound/voice/gnomelaugh.ogg', 35, TRUE), - playsound(src, 'sound/weapons/guns/fire/tank_cannon1.ogg', 35, TRUE), - playsound(src, 'sound/weapons/guns/fire/tank_cannon2.ogg', 35, TRUE), - playsound(src, 'sound/voice/pred_helpme.ogg', 35, TRUE)) - if(2) - for(var/atom/movable/object AS in targetturf.contents) - if(isfood(object)) - qdel(object) - playsound(src,'sound/items/eatfood.ogg', 25, 1) - balloon_alert_to_viewers("Consumes [object]") - break - if(3) - for(var/dirn in shuffle(GLOB.alldirs)) - var/turf/destturf = get_step(src,dirn) - if(get_teleport_prereqs(destturf, TRUE)) - forceMove(destturf) - break - if(4) - desc = initial(desc) - new /obj/item/tool/kitchen/knife/butcher(targetturf) - new /obj/effect/decal/cleanable/blood(targetturf) - color = COLOR_DARK_RED - desc += " It's covered in a dried reddish liquid, probably cranberry juice." - if(5) - pick(balloon_alert_to_viewers("stares"), - (balloon_alert_to_viewers("adjusts its hat")), - (balloon_alert_to_viewers("mimes a quick stabbing motion")), - (balloon_alert_to_viewers("rolls its eyes")), - (balloon_alert_to_viewers("mutters something")), - (balloon_alert_to_viewers("darts its eyes back and forth")), - (balloon_alert_to_viewers("stifles a laugh")), - (balloon_alert_to_viewers("blinks")), - (balloon_alert_to_viewers("squints")), - (balloon_alert_to_viewers("glares")), - (balloon_alert_to_viewers("[src]'s eyes gleam malevolently"))) - if(6) - for(var/atom/movable/object AS in targetturf.contents) - if(isinjector(object)) - qdel(object) - playsound(src,'sound/items/hypospray.ogg', 25, 1) - balloon_alert_to_viewers("Injects [object] into its arm") - break - if(7) - flick("gnome_hop", src) - if(8) - teleport_retries += 10 //gnome is getting out of here - teleport_routine() - - - -//handles gnome "escaping" a shuttle crush -/obj/item/toy/plush/gnome/living/proc/shuttle_crush() - SIGNAL_HANDLER - new /obj/item/toy/plush/gnome(gnome_origin) //shuttle crush deletes src object, create new gnome at spawn point to give illusion of escape - -///handles gnome transportation using pipes -/obj/item/toy/plush/gnome/living/proc/handle_pipe_mode(turf/targetturf) - if(!length(targetturf.contents)) - return - pipe_mode_chance -= length(possible_mobs) * 10 //for each mob nearby subtract 10 from the chance to interact with vents - if(!prob(pipe_mode_chance)) - return - if(pipe_mode) - if(length(GLOB.atmospumps)) - var/obj/machinery/atmospherics/components/unary/vent_pump/targetpump = pick(GLOB.atmospumps) - forceMove(targetpump.loc) - playsound(src, get_sfx("alien_ventpass"), 35, TRUE) - pipe_mode = FALSE - else //if we're not in pipe mode check the ground for scrubbers/vents, if we find one enter it - for(var/atom/movable/object AS in targetturf.contents) - if(isatmosvent(object) || isatmosscrubber(object)) - forceMove(object) - playsound(src, get_sfx("alien_ventpass"), 35, TRUE) - pipe_mode = TRUE - -#undef HIGH_GNOME_MOVE_RANGE -#undef STANDARD_GNOME_PIPE_CHANCE -#undef GNOME_EXCLUSION_RANGE - /obj/item/toy/beach_ball/basketball name = "basketball" icon_state = "basketball" diff --git a/code/game/objects/machinery/adv_med.dm b/code/game/objects/machinery/adv_med.dm index d52fb3ce17c..967f8bb7ead 100644 --- a/code/game/objects/machinery/adv_med.dm +++ b/code/game/objects/machinery/adv_med.dm @@ -1,6 +1,4 @@ // Pretty much everything here is stolen from the dna scanner FYI - - /obj/machinery/bodyscanner name = "Body Scanner" icon = 'icons/obj/machines/cryogenics.dmi' @@ -51,7 +49,6 @@ return go_out() - /obj/machinery/bodyscanner/verb/eject() set src in oview(1) set category = "Object" @@ -107,7 +104,6 @@ return go_out() - /obj/machinery/bodyscanner/attackby(obj/item/I, mob/user, params) . = ..() @@ -149,15 +145,15 @@ for(var/obj/O in src) O.forceMove(loc) -/obj/machinery/bodyscanner/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/bodyscanner/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!occupant) - to_chat(X, span_xenowarning("There is nothing of interest in there.")) + to_chat(xeno_attacker, span_xenowarning("There is nothing of interest in there.")) return - if(X.status_flags & INCORPOREAL || X.do_actions) + if(xeno_attacker.status_flags & INCORPOREAL || xeno_attacker.do_actions) return - visible_message(span_warning("[X] begins to pry the [src]'s cover!"), 3) + visible_message(span_warning("[xeno_attacker] begins to pry the [src]'s cover!"), 3) playsound(src,'sound/effects/metal_creaking.ogg', 25, 1) - if(!do_after(X, 2 SECONDS)) + if(!do_after(xeno_attacker, 2 SECONDS)) return playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) go_out() @@ -205,7 +201,6 @@ return TRUE - /obj/machinery/computer/body_scanconsole/interact(mob/user) . = ..() if(.) @@ -222,7 +217,6 @@ popup.set_content(dat) popup.open(FALSE) - /obj/machinery/bodyscanner/examine(mob/living/user) . = ..() if(!occupant) @@ -240,7 +234,6 @@ . += span_deptradio("It contains [occupant]: Scan from [R.fields["last_scan_time"]].") break - ///Wrapper to guarantee connected bodyscanner references are properly nulled and avoid hard deletes. /obj/machinery/computer/body_scanconsole/proc/set_connected(obj/machinery/bodyscanner/new_connected) if(connected) @@ -249,7 +242,6 @@ if(connected) RegisterSignal(connected, COMSIG_QDELETING, PROC_REF(on_bodyscanner_deletion)) - ///Called by the deletion of the connected bodyscanner. /obj/machinery/computer/body_scanconsole/proc/on_bodyscanner_deletion(obj/machinery/bodyscanner/source, force) SIGNAL_HANDLER diff --git a/code/game/objects/machinery/autodoc.dm b/code/game/objects/machinery/autodoc.dm index 2fc09f012f6..cf84cdef5ac 100644 --- a/code/game/objects/machinery/autodoc.dm +++ b/code/game/objects/machinery/autodoc.dm @@ -42,7 +42,7 @@ var/locked = FALSE var/mob/living/carbon/human/occupant = null var/list/surgery_todo_list = list() //a list of surgeries to do. -// var/surgery_t = 0 //Surgery timer in seconds. + ///var/surgery_t = 0 //Surgery timer in seconds. var/surgery = FALSE var/surgery_mod = 1 //What multiple to increase the surgery timer? This is used for any non-WO maps or events that are done. var/filtering = 0 @@ -64,13 +64,11 @@ var/stored_metal = 1000 // starts with 500 metal loaded var/stored_metal_max = 2000 - /obj/machinery/autodoc/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_MOVABLE_SHUTTLE_CRUSH, PROC_REF(shuttle_crush)) update_icon() - /obj/machinery/autodoc/Destroy() forceeject = TRUE INVOKE_ASYNC(src, PROC_REF(do_eject)) @@ -79,7 +77,6 @@ connected = null return ..() - /obj/machinery/autodoc/proc/shuttle_crush() SIGNAL_HANDLER if(occupant) @@ -193,15 +190,15 @@ if(updating_health) occupant.updatehealth() -/obj/machinery/autodoc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/autodoc/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!occupant) - to_chat(X, span_xenowarning("There is nothing of interest in there.")) + to_chat(xeno_attacker, span_xenowarning("There is nothing of interest in there.")) return - if(X.status_flags & INCORPOREAL || X.do_actions) + if(xeno_attacker.status_flags & INCORPOREAL || xeno_attacker.do_actions) return - visible_message(span_warning("[X] begins to pry the [src]'s cover!"), 3) + visible_message(span_warning("[xeno_attacker] begins to pry the [src]'s cover!"), 3) playsound(src,'sound/effects/metal_creaking.ogg', 25, 1) - if(!do_after(X, 2 SECONDS)) + if(!do_after(xeno_attacker, 2 SECONDS)) return playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) go_out() @@ -228,7 +225,6 @@ A.organ_ref = organ_ref return A - /proc/generate_autodoc_surgery_list(mob/living/carbon/human/M) if(!ishuman(M)) return list() @@ -445,7 +441,6 @@ E.heal_organ_damage(E.damage) E.eye_surgery_stage = 0 - if(LIMB_SURGERY) switch(S.surgery_procedure) if(ADSURGERY_INTERNAL) @@ -654,7 +649,6 @@ surgery = 0 go_out(AUTODOC_NOTICE_SUCCESS) - /obj/machinery/autodoc/proc/open_incision(mob/living/carbon/human/target, datum/limb/L) if(target && L && L.surgery_open_stage < 2) sleep(INCISION_MANAGER_MAX_DURATION*surgery_mod) @@ -804,7 +798,6 @@ return surgery_op() - /obj/machinery/autodoc/MouseDrop_T(mob/M, mob/user) . = ..() move_inside_wrapper(M, user) @@ -898,7 +891,6 @@ C.open() user.start_pulling(M) - if(!M) return @@ -941,7 +933,6 @@ say("Automatic mode engaged, initialising procedures.") addtimer(CALLBACK(src, PROC_REF(auto_start)), 5 SECONDS) - ///////////////////////////////////////////////////////////// //Auto Doc console that links up to it. @@ -972,7 +963,6 @@ radio = new(src) blood_pack = new(src) - /obj/machinery/computer/autodoc_console/Destroy() QDEL_NULL(radio) QDEL_NULL(blood_pack) @@ -994,8 +984,6 @@ return TRUE - - /obj/machinery/computer/autodoc_console/interact(mob/user) . = ..() if(.) @@ -1184,7 +1172,6 @@ popup.set_content(dat) popup.open() - /obj/machinery/computer/autodoc_console/Topic(href, href_list) . = ..() if(.) @@ -1275,7 +1262,6 @@ if(!needed) N.fields["autodoc_manual"] += create_autodoc_surgery(null,LIMB_SURGERY,ADSURGERY_NECRO,1) - if(href_list["shrapnel"]) for(var/i in connected.occupant.limbs) var/datum/limb/L = i @@ -1350,7 +1336,6 @@ updateUsrDialog() - /obj/machinery/autodoc/event event = 1 diff --git a/code/game/objects/machinery/buttons.dm b/code/game/objects/machinery/buttons.dm index 892b33cfe2a..b13274b5783 100644 --- a/code/game/objects/machinery/buttons.dm +++ b/code/game/objects/machinery/buttons.dm @@ -13,11 +13,9 @@ var/id = null var/next_activate = 0 - /obj/machinery/button/indestructible resistance_flags = RESIST_ALL - /obj/machinery/button/Initialize(mapload, ndir = 0) . = ..() setDir(ndir) @@ -25,18 +23,15 @@ pixel_y = ( (dir & 3) ? (dir == 1 ? -24 : 24) : 0 ) update_icon() - /obj/machinery/button/update_icon_state() if(machine_stat & (NOPOWER|BROKEN)) icon_state = "[initial(icon_state)]-p" else icon_state = initial(icon_state) - /obj/machinery/button/attack_ai(mob/user) return attack_hand(user) - /obj/machinery/button/attack_hand(mob/living/user) . = ..() if(.) @@ -57,7 +52,6 @@ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, update_icon)), 1.5 SECONDS) - /obj/machinery/button/proc/pulsed() if(next_activate > world.time) return FALSE @@ -69,11 +63,9 @@ desc = "A door remote control switch." var/specialfunctions = NONE - /obj/machinery/button/door/indestructible resistance_flags = RESIST_ALL - /obj/machinery/button/door/pulsed() . = ..() if(!.) @@ -91,7 +83,6 @@ continue M.close() - /obj/machinery/button/door/open_only name = "open button" desc = "Opens whatever it is linked to. Does not close. Careful on what you release." @@ -109,7 +100,6 @@ if(WEST) pixel_x = 21 - /obj/machinery/button/door/open_only/landing_zone name = "lockdown override" id = "landing_zone" @@ -155,7 +145,6 @@ /obj/machinery/button/door/open_only/landing_zone/lz2 id = "landing_zone_2" - /obj/machinery/driver_button name = "mass driver button" icon = 'icons/obj/objects.dmi' @@ -283,7 +272,7 @@ ///The list of outfits we can equip on the humans we're spawning var/outfit_list = list() -/obj/machinery/button/valhalla/xeno_button/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/button/valhalla/xeno_button/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) var/list/job_outfits = list() for(var/type in subtypesof(/datum/outfit/job)) if(istype(type, /datum/outfit)) @@ -301,7 +290,7 @@ QDEL_NULL(linked) if(!get_turf(GLOB.valhalla_button_spawn_landmark[link])) - to_chat(X, span_warning("An error occured, yell at the coders.")) + to_chat(xeno_attacker, span_warning("An error occured, yell at the coders.")) CRASH("Valhalla button linked with an improper landmark: button ID: [link].") linked = new /mob/living/carbon/human(get_turf(GLOB.valhalla_button_spawn_landmark[link])) if(selected_outfit == "Naked" || !selected_outfit) diff --git a/code/game/objects/machinery/camera/camera.dm b/code/game/objects/machinery/camera/camera.dm index 9f86ae47d3d..dac8478a6af 100644 --- a/code/game/objects/machinery/camera/camera.dm +++ b/code/game/objects/machinery/camera/camera.dm @@ -9,20 +9,16 @@ layer = WALL_OBJ_LAYER anchored = TRUE light_power = 0 - var/datum/cameranet/parent_cameranet var/list/network = list("marinemainship") var/c_tag = null var/status = TRUE var/area/myarea = null - var/view_range = 7 var/short_range = 2 - var/in_use_lights = FALSE var/internal_light = TRUE //Whether it can light up when an AI views it - /obj/machinery/camera/Initialize(mapload, newDir) . = ..() icon_state = "camera" @@ -44,13 +40,11 @@ network -= i network += lowertext(i) - if(SOM_CAMERA_NETWORK in network) parent_cameranet = GLOB.som_cameranet else parent_cameranet = GLOB.cameranet - parent_cameranet.cameras += src parent_cameranet.addCamera(src) @@ -60,7 +54,6 @@ update_icon() - /obj/machinery/camera/Destroy() if(can_use()) toggle_cam(null, 0) //kick anyone viewing out and remove from the camera chunks @@ -71,7 +64,6 @@ return ..() - /obj/machinery/camera/examine(mob/user) . = ..() @@ -84,13 +76,11 @@ if(!status && powered()) . += span_info("It can reactivated with a screwdriver.") - /obj/machinery/camera/proc/setViewRange(num = 7) view_range = num parent_cameranet.updateVisibility(src, 0) - /obj/machinery/camera/attackby(obj/item/I, mob/user, params) . = ..() @@ -116,7 +106,6 @@ to_chat(O, "[U] holds \a [itemname] up to one of the cameras ...") O << browse("[itemname][info]", "window=[itemname]") - /obj/machinery/camera/screwdriver_act(mob/living/user, obj/item/I) . = ..() if(.) @@ -127,7 +116,6 @@ update_icon() return TRUE - /obj/machinery/camera/wirecutter_act(mob/living/user, obj/item/I) if(!CHECK_BITFIELD(machine_stat, PANEL_OPEN)) return FALSE @@ -137,7 +125,6 @@ update_icon() return TRUE - /obj/machinery/camera/multitool_act(mob/living/user, obj/item/I) if(!CHECK_BITFIELD(machine_stat, PANEL_OPEN)) return FALSE @@ -146,7 +133,6 @@ to_chat(user, span_notice("You [(view_range == initial(view_range)) ? "restore" : "mess up"] the camera's focus.")) return TRUE - /obj/machinery/camera/welder_act(mob/living/user, obj/item/I) if(!CHECK_BITFIELD(machine_stat, PANEL_OPEN)) return FALSE @@ -160,20 +146,18 @@ user.visible_message(span_warning("[user] unwelds [src], leaving it as just a frame bolted to the wall."), span_warning("You unweld [src], leaving it as just a frame bolted to the wall")) deconstruct(TRUE) - return TRUE - -/obj/machinery/camera/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/camera/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(obj_integrity <= 0) - to_chat(X, span_warning("The camera is already disabled.")) + to_chat(xeno_attacker, span_warning("The camera is already disabled.")) return - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - X.visible_message(span_danger("[X] slashes \the [src]!"), \ + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + xeno_attacker.visible_message(span_danger("[xeno_attacker] slashes \the [src]!"), \ span_danger("We slash \the [src]!")) playsound(loc, "alien_claw_metal", 25, 1) @@ -191,7 +175,6 @@ deactivate() visible_message(span_danger("\The [src]'s wires snap apart in a rain of sparks!")) - /obj/machinery/camera/proc/deactivate(mob/user) status = FALSE obj_integrity = 0 @@ -261,7 +244,6 @@ O.reset_perspective(null) to_chat(O, "The screen bursts into static.") - /obj/machinery/camera/proc/can_use() if(!status) return FALSE @@ -269,11 +251,9 @@ return FALSE return TRUE - /obj/machinery/camera/proc/can_see() return get_hear(view_range, get_turf(src)) - //Return a working camera that can see a given mob //or null if none /proc/seen_by_camera(mob/M) @@ -281,13 +261,11 @@ if(C.can_use()) // check if camera disabled return C - /proc/near_range_camera(mob/M) for(var/obj/machinery/camera/C in range(4, M)) if(C.can_use()) // check if camera disabled return C - /obj/machinery/camera/proc/Togglelight(on = FALSE) for(var/mob/living/silicon/ai/A in GLOB.ai_list) for(var/obj/machinery/camera/cam in A.lit_cameras) @@ -298,12 +276,10 @@ else set_light(initial(light_range), initial(light_power)) - /obj/machinery/camera/get_remote_view_fullscreens(mob/user) if(view_range == short_range) //unfocused user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 2) - /obj/machinery/camera/update_remote_sight(mob/living/user) user.see_invisible = SEE_INVISIBLE_LIVING //can't see ghosts through cameras user.sight = NONE @@ -339,7 +315,6 @@ /obj/machinery/camera/autoname/mainship/dropship_one network = list("marinemainship", "dropship1") - /obj/machinery/camera/autoname/mainship/dropship_two network = list("marinemainship", "dropship2") @@ -382,7 +357,6 @@ var/area/A = get_area(src) c_tag = "[beacon_name] ([A.name])" - //used by the landing camera dropship equipment. Do not place them right under where the dropship lands. //Should place them near each corner of your LZs. /obj/machinery/camera/autoname/lz_camera @@ -398,11 +372,9 @@ /obj/machinery/camera/autoname/lz_camera/emp_act(severity) return - /obj/machinery/camera/autoname/lz_camera/ex_act() return - /obj/machinery/camera/autoname/lz_camera/update_icon() return diff --git a/code/game/objects/machinery/computer/HolodeckControl.dm b/code/game/objects/machinery/computer/HolodeckControl.dm index 0e1cc11d0e4..de43e556412 100644 --- a/code/game/objects/machinery/computer/HolodeckControl.dm +++ b/code/game/objects/machinery/computer/HolodeckControl.dm @@ -1,4 +1,3 @@ - /obj/structure/table/holotable name = "table" desc = "A square piece of metal standing on four metal legs. It can not move." @@ -11,7 +10,6 @@ /obj/structure/table/holotable/attack_hand(mob/living/user) return TRUE - /obj/structure/table/holotable/attackby(obj/item/I, mob/user, params) if(iswrench(I)) to_chat(user, "It's a holotable! There are no bolts!") @@ -51,9 +49,6 @@ anchored = TRUE flags_atom = ON_BORDER - - - //BASKETBALL OBJECTS /obj/item/toy/beach_ball/holoball @@ -63,10 +58,10 @@ desc = "Here's your chance, do your dance at the Space Jam." w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets -/obj/item/toy/beach_ball/holoball/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/item/toy/beach_ball/holoball/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(!CONFIG_GET(flag/fun_allowed)) return FALSE - attack_hand(X) + attack_hand(xeno_attacker) /obj/structure/holohoop name = "basketball hoop" diff --git a/code/game/objects/machinery/computer/computer.dm b/code/game/objects/machinery/computer/computer.dm index 831a3de942b..f31a12d974e 100644 --- a/code/game/objects/machinery/computer/computer.dm +++ b/code/game/objects/machinery/computer/computer.dm @@ -8,12 +8,8 @@ layer = BELOW_OBJ_LAYER idle_power_usage = 300 active_power_usage = 300 - var/processing = 0 - ///How many times the computer can be smashed by a Xeno before it is disabled. - var/durability = 2 resistance_flags = UNACIDABLE - ///they don't provide good cover - coverage = 15 + coverage = 15 //they don't provide good cover light_range = 1 light_power = 0.5 light_color = LIGHT_COLOR_BLUE @@ -21,6 +17,9 @@ var/screen_overlay ///The destroyed computer sprite. Defaults based on the icon_state if not specified var/broken_icon + var/processing = 0 + ///How many times the computer can be smashed by a Xeno before it is disabled. + var/durability = 2 /obj/machinery/computer/Initialize(mapload) . = ..() @@ -57,7 +56,6 @@ if(prob(20/severity)) set_broken() ..() - /obj/machinery/computer/ex_act(severity) if(CHECK_BITFIELD(resistance_flags, INDESTRUCTIBLE)) return FALSE @@ -192,7 +190,6 @@ else return attack_hand(user) - /obj/machinery/computer/attack_hand(mob/living/user) . = ..() if(.) @@ -201,25 +198,25 @@ pick(playsound(src, 'sound/machines/computer_typing1.ogg', 5, 1), playsound(src, 'sound/machines/computer_typing2.ogg', 5, 1), playsound(src, 'sound/machines/computer_typing3.ogg', 5, 1)) ///So Xenos can smash computers out of the way without actually breaking them -/obj/machinery/computer/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/computer/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(resistance_flags & INDESTRUCTIBLE) - to_chat(X, span_xenowarning("We're unable to damage this!")) + to_chat(xeno_attacker, span_xenowarning("We're unable to damage this!")) return if(machine_stat & (BROKEN|DISABLED)) //If we're already broken or disabled, don't bother - to_chat(X, span_xenowarning("This peculiar thing is already broken!")) + to_chat(xeno_attacker, span_xenowarning("This peculiar thing is already broken!")) return if(durability <= 0) set_disabled() - to_chat(X, span_xenowarning("We smash the annoying device, disabling it!")) + to_chat(xeno_attacker, span_xenowarning("We smash the annoying device, disabling it!")) else durability-- - to_chat(X, span_xenowarning("We smash the annoying device!")) + to_chat(xeno_attacker, span_xenowarning("We smash the annoying device!")) - X.do_attack_animation(src, ATTACK_EFFECT_DISARM2) //SFX + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_DISARM2) //SFX playsound(loc, pick('sound/effects/bang.ogg','sound/effects/metal_crash.ogg','sound/effects/meteorimpact.ogg'), 25, 1) //SFX Shake(duration = 0.5 SECONDS) diff --git a/code/game/objects/machinery/cryopod.dm b/code/game/objects/machinery/cryopod.dm index ad6153f93d3..10cb28b313c 100644 --- a/code/game/objects/machinery/cryopod.dm +++ b/code/game/objects/machinery/cryopod.dm @@ -1,4 +1,3 @@ - /obj/machinery/computer/cryopod name = "hypersleep bay console" desc = "A large console controlling the ship's hypersleep bay. Mainly used for recovery of items from long-term hypersleeping crew." @@ -33,7 +32,6 @@ popup.set_content(dat) popup.open() - /obj/machinery/computer/cryopod/Topic(href, href_list) . =..() if(.) @@ -57,7 +55,6 @@ updateUsrDialog() - /obj/machinery/computer/cryopod/proc/dispense_item(obj/item/I, mob/user, message = TRUE) if(!istype(I) || QDELETED(I)) GLOB.cryoed_item_list -= I @@ -313,15 +310,15 @@ occupant = null update_icon() -/obj/machinery/cryopod/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/cryopod/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!occupant) - to_chat(X, span_xenowarning("There is nothing of interest in there.")) + to_chat(xeno_attacker, span_xenowarning("There is nothing of interest in there.")) return - if(X.status_flags & INCORPOREAL || X.do_actions) + if(xeno_attacker.status_flags & INCORPOREAL || xeno_attacker.do_actions) return - visible_message(span_warning("[X] begins to pry the [src]'s cover!"), 3) + visible_message(span_warning("[xeno_attacker] begins to pry the [src]'s cover!"), 3) playsound(src,'sound/effects/metal_creaking.ogg', 25, 1) - if(!do_after(X, 2 SECONDS)) + if(!do_after(xeno_attacker, 2 SECONDS)) return playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) go_out() diff --git a/code/game/objects/machinery/doors/airlock.dm b/code/game/objects/machinery/doors/airlock.dm index 9461275c550..7c18b6dfac2 100644 --- a/code/game/objects/machinery/doors/airlock.dm +++ b/code/game/objects/machinery/doors/airlock.dm @@ -9,7 +9,6 @@ active_power_usage = 360 flags_atom = HTML_USE_INITAL_ICON_1 obj_flags = CAN_BE_HIT - var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. var/hackProof = 0 // if 1, this door can't be hacked by the AI var/secondsMainPowerLost = 0 //The number of seconds until power is restored. @@ -89,36 +88,29 @@ return TRUE return FALSE - /obj/machinery/door/airlock/proc/canAIControl(mob/user) if(z != user.z) return return ((aiControlDisabled != 1) && !isAllPowerCut()) - /obj/machinery/door/airlock/proc/canAIHack() return ((aiControlDisabled==1) && (!hackProof) && (!isAllPowerCut())); - /obj/machinery/door/airlock/hasPower() return ((!secondsMainPowerLost || !secondsBackupPowerLost) && !(machine_stat & NOPOWER)) - /obj/machinery/door/airlock/requiresID() return !(wires.is_cut(WIRE_IDSCAN) || aiDisabledIdScanner) - /obj/machinery/door/airlock/proc/isAllPowerCut() if((wires.is_cut(WIRE_POWER1) || wires.is_cut(WIRE_POWER2)) && (wires.is_cut(WIRE_BACKUP1) || wires.is_cut(WIRE_BACKUP2))) return TRUE - /obj/machinery/door/airlock/proc/regainMainPower() if(secondsMainPowerLost > 0) secondsMainPowerLost = 0 update_icon() - /obj/machinery/door/airlock/proc/handlePowerRestore() var/cont = TRUE while(cont) @@ -140,7 +132,6 @@ updateUsrDialog() update_icon() - /obj/machinery/door/airlock/proc/loseMainPower() if(secondsMainPowerLost <= 0) secondsMainPowerLost = 60 @@ -151,7 +142,6 @@ INVOKE_ASYNC(src, PROC_REF(handlePowerRestore)) update_icon() - /obj/machinery/door/airlock/proc/loseBackupPower() if(secondsBackupPowerLost < 60) secondsBackupPowerLost = 60 @@ -160,7 +150,6 @@ INVOKE_ASYNC(src, PROC_REF(handlePowerRestore)) update_icon() - /obj/machinery/door/airlock/proc/regainBackupPower() if(secondsBackupPowerLost > 0) secondsBackupPowerLost = 0 @@ -182,7 +171,6 @@ else return 0 - /obj/machinery/door/airlock/update_icon() if(overlays) overlays.Cut() if(density) @@ -201,7 +189,6 @@ else icon_state = "door_open" - /obj/machinery/door/airlock/do_animate(animation) switch(animation) if("opening") @@ -224,49 +211,47 @@ if(density) flick("door_deny", src) - - //Prying open doors -/obj/machinery/door/airlock/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/door/airlock/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - var/turf/cur_loc = X.loc + var/turf/cur_loc = xeno_attacker.loc if(isElectrified()) - if(shock(X, 70)) + if(shock(xeno_attacker, 70)) return if(locked) - to_chat(X, span_warning("\The [src] is bolted down tight.")) + to_chat(xeno_attacker, span_warning("\The [src] is bolted down tight.")) return FALSE if(welded) - to_chat(X, span_warning("\The [src] is welded shut.")) + to_chat(xeno_attacker, span_warning("\The [src] is welded shut.")) return FALSE if(!istype(cur_loc)) return FALSE //Some basic logic here if(!density) - to_chat(X, span_warning("\The [src] is already open!")) + to_chat(xeno_attacker, span_warning("\The [src] is already open!")) return FALSE - if(X.do_actions) + if(xeno_attacker.do_actions) return FALSE playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) if(hasPower()) - X.visible_message(span_warning("\The [X] digs into \the [src] and begins to pry it open."), \ + xeno_attacker.visible_message(span_warning("\The [xeno_attacker] digs into \the [src] and begins to pry it open."), \ span_warning("We dig into \the [src] and begin to pry it open."), null, 5) - if(!do_after(X, 4 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE) && !X.lying_angle) + if(!do_after(xeno_attacker, 4 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE) && !xeno_attacker.lying_angle) return FALSE if(locked) - to_chat(X, span_warning("\The [src] is bolted down tight.")) + to_chat(xeno_attacker, span_warning("\The [src] is bolted down tight.")) return FALSE if(welded) - to_chat(X, span_warning("\The [src] is welded shut.")) + to_chat(xeno_attacker, span_warning("\The [src] is welded shut.")) return FALSE if(density) //Make sure it's still closed open(TRUE) - X.visible_message(span_danger("\The [X] pries \the [src] open."), \ + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] pries \the [src] open."), \ span_danger("We pry \the [src] open."), null, 5) /obj/machinery/door/airlock/attack_larva(mob/living/carbon/xenomorph/larva/M) @@ -281,7 +266,6 @@ span_warning("You squeeze and scuttle underneath \the [src]."), null, 5) M.forceMove(loc) - /obj/machinery/door/airlock/attack_hand(mob/living/user) . = ..() if(.) @@ -552,24 +536,19 @@ return TRUE return FALSE - /obj/machinery/door/airlock/Destroy() QUEUE_SMOOTH_NEIGHBORS(loc) QDEL_NULL(wires) return ..() - /obj/machinery/door/airlock/proc/prison_open() unlock() open() lock() - - /obj/machinery/door/airlock/proc/update_nearby_icons() QUEUE_SMOOTH_NEIGHBORS(src) - /obj/machinery/door/airlock/proc/set_electrified(seconds, mob/user) secondsElectrified = seconds if(secondsElectrified > MACHINE_NOT_ELECTRIFIED) @@ -587,7 +566,6 @@ LAZYADD(shockedby, "\[[time_stamp()]\] [key_name(user)] - ([uppertext(message)])") log_combat(user, src, message) - /obj/machinery/door/airlock/proc/electrified_loop() while(secondsElectrified > MACHINE_NOT_ELECTRIFIED) sleep(1 SECONDS) @@ -603,7 +581,6 @@ set_electrified(MACHINE_ELECTRIFIED_PERMANENT) updateUsrDialog() - /obj/machinery/door/airlock/proc/user_toggle_open(mob/user) if(!canAIControl(user)) return @@ -621,7 +598,6 @@ else open() - /obj/machinery/door/airlock/proc/shock_restore(mob/user) if(!canAIControl(user)) return @@ -633,7 +609,6 @@ if(isElectrified()) set_electrified(MACHINE_NOT_ELECTRIFIED, user) - /obj/machinery/door/airlock/proc/shock_temp(mob/user) if(!canAIControl(user)) return @@ -644,7 +619,6 @@ set_electrified(MACHINE_DEFAULT_ELECTRIFY_TIME, user) - /obj/machinery/door/airlock/proc/shock_perm(mob/user) if(!canAIControl(user)) return @@ -655,7 +629,6 @@ set_electrified(MACHINE_ELECTRIFIED_PERMANENT, user) - /obj/machinery/door/airlock/proc/emergency_on(mob/user) if(!canAIControl(user)) return @@ -667,8 +640,6 @@ emergency = TRUE update_icon() - - /obj/machinery/door/airlock/proc/emergency_off(mob/user) if(!canAIControl(user)) return @@ -680,7 +651,6 @@ emergency = FALSE update_icon() - /obj/machinery/door/airlock/proc/bolt_raise(mob/user) if(!canAIControl(user)) return @@ -699,8 +669,6 @@ unbolt() - - /obj/machinery/door/airlock/proc/bolt_drop(mob/user) if(!canAIControl(user)) return @@ -711,7 +679,6 @@ bolt() - /obj/machinery/door/airlock/proc/bolt() if(locked) return @@ -721,7 +688,6 @@ audible_message(span_notice("You hear a click from the bottom of the door."), null, 1) update_icon() - /obj/machinery/door/airlock/proc/unbolt() if(!locked) return @@ -731,6 +697,5 @@ audible_message(span_notice("You hear a click from the bottom of the door."), null, 1) update_icon() - /obj/machinery/door/airlock/proc/weld_checks() return !operating && density diff --git a/code/game/objects/machinery/doors/firedoor.dm b/code/game/objects/machinery/doors/firedoor.dm index 8dd7ddca4d5..3c30d10bdd8 100644 --- a/code/game/objects/machinery/doors/firedoor.dm +++ b/code/game/objects/machinery/doors/firedoor.dm @@ -6,7 +6,6 @@ #define FIREDOOR_ALERT_HOT 1 #define FIREDOOR_ALERT_COLD 2 - /obj/machinery/door/firedoor name = "\improper Emergency Shutter" desc = "Emergency air-tight shutter, capable of sealing off breached areas." @@ -24,7 +23,6 @@ use_power = TRUE idle_power_usage = 5 active_power_usage = 360 - var/blocked = FALSE var/lockdown = FALSE // When the door has detected a problem, it locks. var/pdiff_alert = FALSE @@ -34,7 +32,6 @@ var/list/areas_added var/list/users_to_open = new var/next_process_time = 0 - var/list/tile_info[4] var/list/dir_alerts[4] // 4 dirs, bitflags @@ -67,7 +64,6 @@ LAZYREMOVE(A.all_fire_doors, src) return ..() - /obj/machinery/door/firedoor/examine(mob/user) // todo remove the shitty o vars . = ..() if(get_dist(src, user) > 1 && !isAI(user)) @@ -117,32 +113,32 @@ return ..() return FALSE -/obj/machinery/door/firedoor/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/door/firedoor/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - var/turf/cur_loc = X.loc + var/turf/cur_loc = xeno_attacker.loc if(blocked) - to_chat(X, span_warning("\The [src] is welded shut.")) + to_chat(xeno_attacker, span_warning("\The [src] is welded shut.")) return FALSE if(!istype(cur_loc)) return FALSE //Some basic logic here if(!density) - to_chat(X, span_warning("\The [src] is already open!")) + to_chat(xeno_attacker, span_warning("\The [src] is already open!")) return FALSE playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) - X.visible_message(span_warning("\The [X] digs into \the [src] and begins to pry it open."), \ + xeno_attacker.visible_message(span_warning("\The [xeno_attacker] digs into \the [src] and begins to pry it open."), \ span_warning("We dig into \the [src] and begin to pry it open."), null, 5) - if(do_after(X, 30, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) + if(do_after(xeno_attacker, 30, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) if(blocked) - to_chat(X, span_warning("\The [src] is welded shut.")) + to_chat(xeno_attacker, span_warning("\The [src] is welded shut.")) return FALSE if(density) //Make sure it's still closed spawn(0) open(1) - X.visible_message(span_danger("\The [X] pries \the [src] open."), \ + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] pries \the [src] open."), \ span_danger("We pry \the [src] open."), null, 5) /obj/machinery/door/firedoor/attack_hand(mob/living/user) @@ -250,11 +246,9 @@ else close() - /obj/machinery/door/firedoor/try_to_activate_door(mob/user) return - /obj/machinery/door/firedoor/proc/latetoggle() if(operating || !nextstate) return @@ -287,7 +281,6 @@ flick("door_closing", src) playsound(loc, 'sound/machines/emergency_shutter.ogg', 25) - /obj/machinery/door/firedoor/update_icon() overlays.Cut() if(density) @@ -307,7 +300,6 @@ if(blocked) overlays += "welded_open" - /obj/machinery/door/firedoor/mainship name = "\improper Emergency Shutter" desc = "Emergency air-tight shutter, capable of sealing off breached areas." @@ -315,12 +307,10 @@ icon_state = "door_open" openspeed = 4 - /obj/machinery/door/firedoor/multi_tile icon = 'icons/obj/doors/DoorHazard2x1.dmi' width = 2 - /obj/machinery/door/firedoor/border_only icon = 'icons/obj/doors/edge_Doorfire.dmi' flags_atom = ON_BORDER diff --git a/code/game/objects/machinery/miner.dm b/code/game/objects/machinery/miner.dm index 46a99c2fe00..5bd3fc8b552 100644 --- a/code/game/objects/machinery/miner.dm +++ b/code/game/objects/machinery/miner.dm @@ -291,7 +291,7 @@ stop_processing() SSminimaps.remove_marker(src) var/marker_icon = "miner_[mineral_value >= PLATINUM_CRATE_SELL_AMOUNT ? "platinum" : "phoron"]_off" - SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, marker_icon)) //RUTGMC edit - icon change + SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, marker_icon)) return if(add_tick >= required_ticks) if(miner_upgrade_type == MINER_AUTOMATED) @@ -316,26 +316,26 @@ else add_tick += 1 -/obj/machinery/miner/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) //Incorporeal xenos cannot attack physically. +/obj/machinery/miner/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) //Incorporeal xenos cannot attack physically. return - if(miner_upgrade_type == MINER_RESISTANT && !(X.mob_size == MOB_SIZE_BIG || X.xeno_caste.caste_flags & CASTE_IS_STRONG)) - X.visible_message(span_notice("[X]'s claws bounce off of [src]'s reinforced plating."), + if(miner_upgrade_type == MINER_RESISTANT && !(xeno_attacker.mob_size == MOB_SIZE_BIG || xeno_attacker.xeno_caste.caste_flags & CASTE_IS_STRONG)) + xeno_attacker.visible_message(span_notice("[xeno_attacker]'s claws bounce off of [src]'s reinforced plating."), span_notice("We can't slash through [src]'s reinforced plating!")) return while(miner_status != MINER_DESTROYED) - if(X.do_actions) - return balloon_alert(X, "busy") - if(!do_after(X, 1.5 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) + if(xeno_attacker.do_actions) + return balloon_alert(xeno_attacker, "busy") + if(!do_after(xeno_attacker, 1.5 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) return - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - X.visible_message(span_danger("[X] slashes \the [src]!"), \ + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + xeno_attacker.visible_message(span_danger("[xeno_attacker] slashes \the [src]!"), \ span_danger("We slash \the [src]!"), null, 5) playsound(loc, "alien_claw_metal", 25, TRUE) miner_integrity -= 25 set_miner_status() - if(miner_status == MINER_DESTROYED && X.client) - var/datum/personal_statistics/personal_statistics = GLOB.personal_statistics_list[X.ckey] + if(miner_status == MINER_DESTROYED && xeno_attacker.client) + var/datum/personal_statistics/personal_statistics = GLOB.personal_statistics_list[xeno_attacker.ckey] personal_statistics.miner_sabotages_performed++ /obj/machinery/miner/proc/set_miner_status() diff --git a/code/game/objects/machinery/nuclearbomb.dm b/code/game/objects/machinery/nuclearbomb.dm index 2a49e72189a..682e70d0be0 100644 --- a/code/game/objects/machinery/nuclearbomb.dm +++ b/code/game/objects/machinery/nuclearbomb.dm @@ -119,23 +119,23 @@ if(r_auth && g_auth && b_auth) has_auth = TRUE -/obj/machinery/nuclearbomb/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/nuclearbomb/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(!timer_enabled) - to_chat(X, span_warning("\The [src] is soundly asleep. We better not disturb it.")) + to_chat(xeno_attacker, span_warning("\The [src] is soundly asleep. We better not disturb it.")) return - X.visible_message("[X] begins to slash delicately at the nuke", + xeno_attacker.visible_message("[xeno_attacker] begins to slash delicately at the nuke", "You start slashing delicately at the nuke.") - if(!do_after(X, 5 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) + if(!do_after(xeno_attacker, 5 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) return - X.visible_message("[X] disabled the nuke", + xeno_attacker.visible_message("[xeno_attacker] disabled the nuke", "You disabled the nuke.") disable() - SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NUKE_DIFFUSED, src, X) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NUKE_DIFFUSED, src, xeno_attacker) /obj/machinery/nuclearbomb/can_interact(mob/user) . = ..() diff --git a/code/game/objects/machinery/portable_reagent_tank.dm b/code/game/objects/machinery/portable_reagent_tank.dm index 68a1a1c60f8..34a417e7dc7 100644 --- a/code/game/objects/machinery/portable_reagent_tank.dm +++ b/code/game/objects/machinery/portable_reagent_tank.dm @@ -66,9 +66,9 @@ var/obj/item/storage/internal_bag = get_internal_item() internal_bag?.open(user) -/obj/machinery/deployable/reagent_tank/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) - if(X.a_intent != INTENT_HARM) - return drink_from_nozzle(X, TRUE) +/obj/machinery/deployable/reagent_tank/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) + if(xeno_attacker.a_intent != INTENT_HARM) + return drink_from_nozzle(xeno_attacker, TRUE) return ..() ///Process for drinking reagents directly from the dispenser's nozzle diff --git a/code/game/objects/machinery/robotic_cradle.dm b/code/game/objects/machinery/robotic_cradle.dm index 69bf7b1f3d2..6d3c5ef32e5 100644 --- a/code/game/objects/machinery/robotic_cradle.dm +++ b/code/game/objects/machinery/robotic_cradle.dm @@ -85,15 +85,15 @@ repairing = FALSE go_out(CRADLE_NOTICE_SUCCESS) -/obj/machinery/robotic_cradle/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/robotic_cradle/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!occupant) - to_chat(X, span_xenowarning("There is nothing of interest in there.")) + to_chat(xeno_attacker, span_xenowarning("There is nothing of interest in there.")) return - if(X.status_flags & INCORPOREAL || X.do_actions) + if(xeno_attacker.status_flags & INCORPOREAL || xeno_attacker.do_actions) return - visible_message(span_warning("[X] begins to pry the [src]'s cover!"), 3) + visible_message(span_warning("[xeno_attacker] begins to pry the [src]'s cover!"), 3) playsound(src,'sound/effects/metal_creaking.ogg', 25, 1) - if(!do_after(X, 2 SECONDS)) + if(!do_after(xeno_attacker, 2 SECONDS)) return playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) go_out() diff --git a/code/game/objects/machinery/sleeper.dm b/code/game/objects/machinery/sleeper.dm index 5d05e3fe3d0..fe3a9ba838b 100644 --- a/code/game/objects/machinery/sleeper.dm +++ b/code/game/objects/machinery/sleeper.dm @@ -1,7 +1,3 @@ -///////////////////////////////////////// -// SLEEPER CONSOLE -///////////////////////////////////////// - /obj/machinery/computer/sleep_console name = "Sleeper Console" icon = 'icons/obj/machines/cryogenics.dmi' @@ -150,7 +146,6 @@ idle_power_usage = 15 active_power_usage = 200 //builtin health analyzer, dialysis machine, injectors. - /obj/machinery/sleeper/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_MOVABLE_SHUTTLE_CRUSH, PROC_REF(shuttle_crush)) @@ -249,8 +244,6 @@ if(filtering) for(var/datum/reagent/x in occupant.reagents.reagent_list) occupant.reagents.remove_reagent(x.type, 10) - - updateUsrDialog() /obj/machinery/sleeper/update_icon() @@ -290,7 +283,6 @@ to_chat(user, span_notice("The sleeper is already occupied!")) return - if(!istype(I, /obj/item/grab)) return @@ -364,7 +356,6 @@ connected.stop_processing() update_icon() - /obj/machinery/sleeper/proc/inject_chemical(mob/living/user as mob, chemical, amount) if(occupant?.reagents) if(occupant.reagents.get_reagent_amount(chemical) + amount <= 20) @@ -373,7 +364,6 @@ return to_chat(user, span_warning("There's no occupant in the sleeper or the subject has too many chemicals!")) - /obj/machinery/sleeper/proc/check(mob/living/user) if(occupant) to_chat(user, span_boldnotice("Occupant ([occupant]) Statistics:")) @@ -398,15 +388,15 @@ else to_chat(user, span_notice("There is no one inside!")) -/obj/machinery/sleeper/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/sleeper/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!occupant) - to_chat(X, span_xenowarning("There is nothing of interest in there.")) + to_chat(xeno_attacker, span_xenowarning("There is nothing of interest in there.")) return - if(X.status_flags & INCORPOREAL || X.do_actions) + if(xeno_attacker.status_flags & INCORPOREAL || xeno_attacker.do_actions) return - visible_message(span_warning("[X] begins to pry the [src]'s cover!"), 3) + visible_message(span_warning("[xeno_attacker] begins to pry the [src]'s cover!"), 3) playsound(src,'sound/effects/metal_creaking.ogg', 25, 1) - if(!do_after(X, 2 SECONDS)) + if(!do_after(xeno_attacker, 2 SECONDS)) return playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) go_out() @@ -418,7 +408,6 @@ if(usr.stat != CONSCIOUS) return - go_out() /obj/machinery/sleeper/relaymove(mob/user) diff --git a/code/game/objects/machinery/vending/vending.dm b/code/game/objects/machinery/vending/vending.dm index 3d15115e252..5d530537e72 100644 --- a/code/game/objects/machinery/vending/vending.dm +++ b/code/game/objects/machinery/vending/vending.dm @@ -34,7 +34,6 @@ var/tab /datum/vending_product/New(name, atom/typepath, product_amount, product_price, product_display_color, category = CAT_NORMAL, tab) - product_path = typepath amount = product_amount price = product_price @@ -63,7 +62,6 @@ coverage = 80 soft_armor = list(MELEE = 0, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 0, BIO = 100, FIRE = 0, ACID = 0) layer = BELOW_OBJ_LAYER - use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 100 @@ -73,7 +71,6 @@ light_range = 1 light_power = 0.5 light_color = LIGHT_COLOR_BLUE - ///Whether this vendor is active or not. var/active = TRUE ///If the vendor is ready to vend. @@ -86,7 +83,6 @@ var/isshared = FALSE ///The sound the vendor makes when it vends something var/vending_sound - /*These are lists that are made null after they're used, their use is solely to fill the inventory of the vendor on Init. They use the following pattern in case if it doenst pertain to a tab: list( @@ -117,21 +113,17 @@ var/list/premium = list() /// Prices for each item, list(/type/path = price), items not in the list don't have a price. var/list/prices = list() - /// String of slogans separated by semicolons, optional var/product_slogans = "" ///String of small ad messages in the vending screen - random chance var/product_ads = "" - //These are where the vendor holds their item info with /datum/vending_product - ///list of /datum/vending_product's that are always available on the vendor var/list/product_records = list() ///list of /datum/vending_product's that are available when vendor is hacked. var/list/hidden_records = list() ///list of /datum/vending_product's that are available on the vendor when a coin is used. var/list/coin_records = list() - var/list/slogan_list = list() /// small ad messages in the vending screen - random chance of popping up whenever you open it var/list/small_ads = list() @@ -163,16 +155,12 @@ var/tipped_level = 0 ///Stops the machine from being hacked to shoot inventory or allow all access var/hacking_safety = FALSE - var/scan_id = TRUE - /// How much damage we can take before tipping over. var/knockdown_threshold = 100 - ///Faction of the vendor. Can be null var/faction - /obj/machinery/vending/Initialize(mapload, ...) . = ..() wires = new /datum/wires/vending(src) @@ -207,7 +195,6 @@ update_icon() return INITIALIZE_HINT_LATELOAD - /obj/machinery/vending/LateInitialize() . = ..() power_change() @@ -285,38 +272,38 @@ for(var/season in seasonal_items) products[seasonal_items[season]] += SSpersistence.season_items[season] -/obj/machinery/vending/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/vending/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - if(X.a_intent == INTENT_HARM) - X.do_attack_animation(src, ATTACK_EFFECT_SMASH) - if(prob(X.xeno_caste.melee_damage)) + if(xeno_attacker.a_intent == INTENT_HARM) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_SMASH) + if(prob(xeno_attacker.xeno_caste.melee_damage)) playsound(loc, 'sound/effects/metalhit.ogg', 25, 1) - X.visible_message(span_danger("\The [X] smashes \the [src] beyond recognition!"), \ + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] smashes \the [src] beyond recognition!"), \ span_danger("We enter a frenzy and smash \the [src] apart!"), null, 5) malfunction() return TRUE else - X.visible_message(span_danger("[X] slashes \the [src]!"), \ + xeno_attacker.visible_message(span_danger("[xeno_attacker] slashes \the [src]!"), \ span_danger("We slash \the [src]!"), null, 5) playsound(loc, 'sound/effects/metalhit.ogg', 25, 1) return TRUE if(tipped_level) - to_chat(X, span_warning("There's no reason to bother with that old piece of trash.")) + to_chat(xeno_attacker, span_warning("There's no reason to bother with that old piece of trash.")) return FALSE - X.visible_message(span_warning("\The [X] begins to lean against \the [src]."), \ + xeno_attacker.visible_message(span_warning("\The [xeno_attacker] begins to lean against \the [src]."), \ span_warning("You begin to lean against \the [src]."), null, 5) tipped_level = 1 var/shove_time = 1 SECONDS - if(X.mob_size == MOB_SIZE_BIG) + if(xeno_attacker.mob_size == MOB_SIZE_BIG) shove_time = 5 SECONDS - if(istype(X,/mob/living/carbon/xenomorph/crusher)) + if(istype(xeno_attacker,/mob/living/carbon/xenomorph/crusher)) shove_time = 1.5 SECONDS - if(do_after(X, shove_time, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)) - X.visible_message(span_danger("\The [X] knocks \the [src] down!"), \ + if(do_after(xeno_attacker, shove_time, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)) + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] knocks \the [src] down!"), \ span_danger("You knock \the [src] down!"), null, 5) tip_over() else @@ -625,7 +612,6 @@ else return new R.product_path(get_turf(src)) - /obj/machinery/vending/MouseDrop_T(atom/movable/A, mob/user) . = ..() if(machine_stat & (BROKEN|NOPOWER)) @@ -799,7 +785,6 @@ flick(icon_vend, src) playsound(loc, 'sound/machines/hydraulics_1.ogg', 25, 0, 1) - /obj/machinery/vending/process() if(machine_stat & (BROKEN|NOPOWER)) return @@ -890,8 +875,7 @@ src.visible_message(span_warning("[src] launches [throw_item.name] at [target]!")) . = TRUE - -/obj/machinery/vending/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", effects = TRUE, attack_dir, armour_penetration = 0) +/obj/machinery/vending/take_damage(damage_amount, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, attack_dir, armour_penetration = 0) if(density && damage_amount >= knockdown_threshold) tip_over() return ..() diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index a28b780b4b3..60eb42ef85b 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -1,4 +1,4 @@ -/obj/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", effects = TRUE, attack_dir, armour_penetration = 0) +/obj/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, attack_dir, armour_penetration = 0) if(QDELETED(src)) CRASH("[src] taking damage after deletion") if(!damage_amount) @@ -53,7 +53,6 @@ if(BURN) playsound(loc, 'sound/items/welder.ogg', 50, 1) - /obj/ex_act(severity, direction) if(CHECK_BITFIELD(resistance_flags, INDESTRUCTIBLE)) return @@ -62,7 +61,6 @@ return take_damage(severity, BRUTE, BOMB, FALSE, direction) - /obj/hitby(atom/movable/AM, speed = 5) . = ..() if(!.) @@ -78,7 +76,6 @@ tforce = I.throwforce take_damage(tforce, BRUTE, MELEE, 1, get_dir(src, AM)) - /obj/bullet_act(obj/projectile/P) if(istype(P.ammo, /datum/ammo/xeno) && !(resistance_flags & XENO_DAMAGEABLE)) return @@ -89,13 +86,11 @@ visible_message(span_warning("\the [src] is damaged by \the [P]!"), visible_message_flags = COMBAT_MESSAGE) take_damage(P.damage, P.ammo.damage_type, P.ammo.armor_type, 0, REVERSE_DIR(P.dir), P.ammo.penetration) - -/obj/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime +/obj/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime user.do_attack_animation(src, ATTACK_EFFECT_SMASH) user.changeNext_move(CLICK_CD_MELEE) return take_damage(damage_amount, damage_type, damage_flag, effects, get_dir(src, user), armor_penetration) - /obj/attack_animal(mob/living/simple_animal/M) if(!M.melee_damage && !M.obj_damage) M.emote("custom", message = "[M.friendly] [src].") @@ -103,48 +98,44 @@ else var/play_soundeffect = 1 if(M.obj_damage) - . = attack_generic(M, M.obj_damage, M.melee_damage_type, "melee", play_soundeffect, M.armour_penetration) + . = attack_generic(M, M.obj_damage, M.melee_damage_type, MELEE, play_soundeffect, M.armour_penetration) else - . = attack_generic(M, M.melee_damage, M.melee_damage_type, "melee", play_soundeffect, M.armour_penetration) + . = attack_generic(M, M.melee_damage, M.melee_damage_type, MELEE, play_soundeffect, M.armour_penetration) if(. && !play_soundeffect) playsound(loc, 'sound/effects/meteorimpact.ogg', 100, 1) - -/obj/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) // SHOULD_CALL_PARENT(TRUE) // TODO: fix this - if(X.status_flags & INCORPOREAL) //Ghosts can't attack machines + if(xeno_attacker.status_flags & INCORPOREAL) //Ghosts can't attack machines return FALSE - SEND_SIGNAL(X, COMSIG_XENOMORPH_ATTACK_OBJ, src) - if(SEND_SIGNAL(src, COMSIG_OBJ_ATTACK_ALIEN, X) & COMPONENT_NO_ATTACK_ALIEN) + SEND_SIGNAL(xeno_attacker, COMSIG_XENOMORPH_ATTACK_OBJ, src) + if(SEND_SIGNAL(src, COMSIG_OBJ_ATTACK_ALIEN, xeno_attacker) & COMPONENT_NO_ATTACK_ALIEN) return FALSE if(!(resistance_flags & XENO_DAMAGEABLE)) - to_chat(X, span_warning("We stare at \the [src] cluelessly.")) + to_chat(xeno_attacker, span_warning("We stare at \the [src] cluelessly.")) return FALSE if(effects) - X.visible_message(span_danger("[X] has slashed [src]!"), + xeno_attacker.visible_message(span_danger("[xeno_attacker] has slashed [src]!"), span_danger("We slash [src]!")) - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) playsound(loc, "alien_claw_metal", 25) - attack_generic(X, damage_amount, damage_type, damage_flag, effects, armor_penetration) + attack_generic(xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration) return TRUE -/obj/attack_larva(mob/living/carbon/xenomorph/larva/L) - L.visible_message(span_danger("[L] nudges its head against [src]."), \ +/obj/attack_larva(mob/living/carbon/xenomorph/larva/larva_attacker) + larva_attacker.visible_message(span_danger("[larva_attacker] nudges its head against [src]."), \ span_danger("You nudge your head against [src].")) - ///the obj is deconstructed into pieces, whether through careful disassembly or when destroyed. /obj/proc/deconstruct(disassembled = TRUE) SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_OBJ_DECONSTRUCT, disassembled) qdel(src) - ///called after the obj takes damage and integrity is below integrity_failure level /obj/proc/obj_break(damage_flag) return - ///what happens when the obj's integrity reaches zero. /obj/proc/obj_destruction(damage_amount, damage_type, damage_flag) SHOULD_CALL_PARENT(TRUE) @@ -152,7 +143,6 @@ playsound(loc, destroy_sound, 35, 1) deconstruct(FALSE) - ///changes max_integrity while retaining current health percentage, returns TRUE if the obj got broken. /obj/proc/modify_max_integrity(new_max, can_break = TRUE, damage_type = BRUTE, new_failure_integrity = null) var/current_integrity = obj_integrity diff --git a/code/game/objects/structures/barricade.dm b/code/game/objects/structures/barricade.dm index 8b63760e0d4..3e235130e7e 100644 --- a/code/game/objects/structures/barricade.dm +++ b/code/game/objects/structures/barricade.dm @@ -1,5 +1,3 @@ -// Snow, wood, sandbags, metal, plasteel - /obj/structure/barricade icon = 'icons/Marine/barricades.dmi' climbable = TRUE @@ -77,13 +75,13 @@ /obj/structure/barricade/attack_animal(mob/user) return attack_alien(user) -/obj/structure/barricade/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/barricade/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(is_wired) - balloon_alert(X, "Wire slices into us") - X.apply_damage(10, blocked = MELEE , sharp = TRUE, updating_health = TRUE) + balloon_alert(xeno_attacker, "Wire slices into us") + xeno_attacker.apply_damage(10, blocked = MELEE , sharp = TRUE, updating_health = TRUE) return ..() @@ -109,7 +107,6 @@ B.use(1) wire() - /obj/structure/barricade/proc/wire() can_wire = FALSE is_wired = TRUE @@ -135,7 +132,6 @@ update_icon() new /obj/item/stack/barbed_wire(loc) - /obj/structure/barricade/deconstruct(disassembled = TRUE) if(disassembled && is_wired) new /obj/item/stack/barbed_wire(loc) @@ -216,7 +212,6 @@ else . += image('icons/Marine/barricades.dmi', icon_state = "[barricade_type]_closed_wire") - /obj/structure/barricade/effect_smoke(obj/effect/particle_effect/smoke/S) . = ..() if(!.) @@ -224,7 +219,6 @@ if(CHECK_BITFIELD(S.smoke_traits, SMOKE_XENO_ACID)) take_damage(base_acid_damage * S.strength, BURN, ACID) - /obj/structure/barricade/verb/rotate() set name = "Rotate Barricade Counter-Clockwise" set category = "Object" @@ -247,7 +241,6 @@ setDir(turn(dir, 270)) - /obj/structure/barricade/attack_hand_alternate(mob/living/user) if(anchored) balloon_alert(usr, "It's fastened to the floor") @@ -255,7 +248,6 @@ setDir(turn(dir, 270)) - /*----------------------*/ // SNOW /*----------------------*/ @@ -271,8 +263,6 @@ destroyed_stack_amount = 0 can_wire = FALSE - - //Item Attack /obj/structure/barricade/snow/attackby(obj/item/I, mob/user, params) . = ..() @@ -385,7 +375,6 @@ balloon_alert_to_viewers("Repaired") update_icon() - /*----------------------*/ // METAL /*----------------------*/ @@ -699,23 +688,6 @@ update_icon() return TRUE - -/*RUTGMC DELETION -/obj/structure/barricade/metal/ex_act(severity) - switch(severity) - if(EXPLODE_DEVASTATE) - take_damage(rand(400, 600), BRUTE, BOMB) - if(EXPLODE_HEAVY) - take_damage(rand(150, 350), BRUTE, BOMB) - if(EXPLODE_LIGHT) - take_damage(rand(50, 100), BRUTE, BOMB) - if(EXPLODE_WEAK) - take_damage(rand(25, 50), BRUTE, BOMB) - - update_icon() -*/ - - #undef BARRICADE_METAL_LOOSE #undef BARRICADE_METAL_ANCHORED #undef BARRICADE_METAL_FIRM @@ -907,35 +879,6 @@ build_state = BARRICADE_PLASTEEL_ANCHORED update_icon() //unanchored changes layer -/* RUTGMC DELETION, moved to modular -/obj/structure/barricade/plasteel/attackby(obj/item/I, mob/user, params) - . = ..() - - if(istype(I, /obj/item/stack/sheet/plasteel)) - var/obj/item/stack/sheet/plasteel/plasteel_sheets = I - if(obj_integrity >= max_integrity * 0.3) - return - - if(plasteel_sheets.get_amount() < 2) - balloon_alert(user, "You need at least 2 plasteel") - return - - if(LAZYACCESS(user.do_actions, src)) - return - - balloon_alert_to_viewers("Repairing base...") - - if(!do_after(user, 2 SECONDS, NONE, src, BUSY_ICON_FRIENDLY) || obj_integrity >= max_integrity * 0.3) - return - - if(!plasteel_sheets.use(2)) - return - - repair_damage(max_integrity * 0.3, user) - balloon_alert_to_viewers("Base repaired") - update_icon() -*/ - /obj/structure/barricade/plasteel/attack_hand(mob/living/user) . = ..() if(.) @@ -972,21 +915,6 @@ if(((dir & (NORTH|SOUTH) && get_dir(src, cade) & (EAST|WEST)) || (dir & (EAST|WEST) && get_dir(src, cade) & (NORTH|SOUTH))) && dir == cade.dir && cade.linked && cade.closed == closed) . += image('icons/Marine/barricades.dmi', icon_state = "[barricade_type]_[closed ? "closed" : "open"]_connection_[get_dir(src, cade)]") -/*RUTGMC DELETION -/obj/structure/barricade/plasteel/ex_act(severity) - switch(severity) - if(EXPLODE_DEVASTATE) - take_damage(rand(450, 650), BRUTE, BOMB) - if(EXPLODE_HEAVY) - take_damage(rand(200, 400), BRUTE, BOMB) - if(EXPLODE_LIGHT) - take_damage(rand(50, 150), BRUTE, BOMB) - if(EXPLODE_WEAK) - take_damage(rand(25, 75), BRUTE, BOMB) - - update_icon() -*/ - /*----------------------*/ // SANDBAGS /*----------------------*/ @@ -1124,7 +1052,6 @@ /obj/structure/barricade/metal/deployable/attempt_barricade_upgrade() return //not upgradable - /*----------------------*/ // CONCRETE /*----------------------*/ diff --git a/code/game/objects/structures/benchpress.dm b/code/game/objects/structures/benchpress.dm index 1c799861315..03c4ba247d8 100644 --- a/code/game/objects/structures/benchpress.dm +++ b/code/game/objects/structures/benchpress.dm @@ -77,19 +77,17 @@ update_icon() flick("swap_[plates]", src) - - /obj/structure/benchpress/attack_hand(mob/living/user) . = ..() if(.) return do_workout_set(user) -/obj/structure/benchpress/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/structure/benchpress/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) . = ..() if(.) return - do_workout_set(X) + do_workout_set(xeno_attacker) ///checks if possible and if yes performs a workout set for this mob /obj/structure/benchpress/proc/do_workout_set(mob/living/user) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 2b61d429f4b..c66a428a193 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -2,7 +2,6 @@ #define CLOSET_INSERT_FAIL 0 #define CLOSET_INSERT_SUCCESS 1 - /obj/structure/closet name = "closet" desc = "It's a basic storage unit." @@ -79,7 +78,6 @@ PopulateContents() update_icon() - /obj/structure/closet/LateInitialize() . = ..() @@ -107,13 +105,11 @@ density = FALSE opened = TRUE - /obj/structure/closet/CanAllowThrough(atom/movable/mover, turf/target) if(wall_mounted) return TRUE return ..() - /obj/structure/closet/proc/can_open(mob/living/user) if(welded || locked) if(user) @@ -121,7 +117,6 @@ return FALSE return TRUE - /obj/structure/closet/proc/can_close(mob/living/user) for(var/obj/structure/closet/blocking_closet in loc) if(blocking_closet != src && !blocking_closet.wall_mounted && !blocking_closet.opened) @@ -135,7 +130,6 @@ return FALSE return TRUE - /obj/structure/closet/proc/dump_contents() var/atom/drop_loc = drop_location() for(var/thing in src) @@ -149,7 +143,6 @@ mob_size_counter = 0 item_size_counter = 0 - /obj/structure/closet/proc/take_contents() for(var/mapped_thing in drop_location()) if(mapped_thing == src) @@ -157,7 +150,6 @@ if(insert(mapped_thing) == CLOSET_INSERT_END) // limit reached break - /obj/structure/closet/proc/open(mob/living/user) SIGNAL_HANDLER if(user) @@ -171,7 +163,6 @@ playsound(loc, open_sound, 15, 1) return TRUE - /obj/structure/closet/proc/insert(atom/movable/thing_to_insert) if(length(contents) >= storage_capacity) return CLOSET_INSERT_END @@ -180,7 +171,6 @@ thing_to_insert.forceMove(src) return CLOSET_INSERT_SUCCESS - /obj/structure/closet/proc/close(mob/living/user) if(!opened || !can_close(user)) return FALSE @@ -191,7 +181,6 @@ update_icon() return TRUE - /obj/structure/closet/proc/toggle(mob/living/user) return opened ? close(user) : open(user) @@ -223,11 +212,11 @@ dump_contents() qdel(src) -/obj/structure/closet/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/structure/closet/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) . = ..() if(!.) return - if(X.a_intent == INTENT_HARM && !opened && prob(70)) + if(xeno_attacker.a_intent == INTENT_HARM && !opened && prob(70)) break_open() /obj/structure/closet/attackby(obj/item/I, mob/user, params) @@ -277,7 +266,6 @@ balloon_alert_to_viewers("[src] has been [welded ? "welded shut" : "unwelded"]") return TRUE - /obj/structure/closet/wrench_act(mob/living/user, obj/item/tool/wrench/wrenchy_tool) if(opened) return FALSE @@ -289,7 +277,6 @@ balloon_alert_to_viewers("[user] [anchored ? "anchors" : "unanchors"] the [src]") return TRUE - /obj/structure/closet/relaymove(mob/user, direct) if(!isturf(loc)) return @@ -310,14 +297,12 @@ to_chat(M, "BANG, bang!") addtimer(VARSET_CALLBACK(src, lastbang, FALSE), 3 SECONDS) - /obj/structure/closet/attack_hand(mob/living/user) . = ..() if(.) return return toggle(user) - /obj/structure/closet/verb/verb_toggleopen() set src in oview(1) set category = "Object" @@ -340,11 +325,9 @@ else icon_state = icon_opened - /obj/structure/closet/resisted_against(datum/source) container_resist(source) - /obj/structure/closet/proc/container_resist(mob/living/user) if(opened) return FALSE @@ -369,14 +352,12 @@ balloon_alert_to_viewers("breaks out") return bust_open() - /obj/structure/closet/proc/bust_open() welded = FALSE //applies to all lockers locked = FALSE //applies to critter crates and secure lockers only broken = TRUE //applies to secure lockers only open() - /obj/structure/closet/proc/break_open() if(!opened) dump_contents() @@ -386,12 +367,10 @@ welded = FALSE update_icon() - /obj/structure/closet/AltClick(mob/user) . = ..() return togglelock(user) - /obj/structure/closet/proc/togglelock(mob/living/user, silent) if(!CHECK_BITFIELD(closet_flags, CLOSET_IS_SECURE)) return FALSE @@ -418,23 +397,19 @@ update_icon() return TRUE - /obj/structure/closet/contents_explosion(severity) for(var/i in contents) var/atom/movable/closet_contents = i closet_contents.ex_act(severity) - /obj/structure/closet/proc/closet_special_handling(mob/living/mob_to_stuff) return TRUE //We are permisive by default. - //Redefined procs for closets /atom/movable/proc/closet_insertion_allowed(obj/structure/closet/destination) return FALSE - /mob/living/closet_insertion_allowed(obj/structure/closet/destination) if(anchored || buckled) return FALSE @@ -448,7 +423,6 @@ destination.RegisterSignal(destination, COMSIG_ATOM_EXITED, TYPE_PROC_REF(/obj/structure/closet, open)) return TRUE - /obj/closet_insertion_allowed(obj/structure/closet/destination) if(!CHECK_BITFIELD(destination.closet_flags, CLOSET_ALLOW_OBJS)) return FALSE @@ -460,7 +434,6 @@ return FALSE return TRUE - /obj/item/closet_insertion_allowed(obj/structure/closet/destination) if(anchored) return FALSE @@ -481,7 +454,6 @@ /obj/structure/closet/closet_insertion_allowed(obj/structure/closet/destination) return FALSE - /mob/living/proc/on_closet_dump(obj/structure/closet/origin) SetStun(origin.closet_stun_delay)//Action delay when going out of a closet if(!lying_angle && IsStun()) diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index b8121fd8d98..15d9364d5f2 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -129,5 +129,5 @@ /obj/structure/fence/fire_act(exposed_temperature, exposed_volume) if(exposed_temperature > T0C + 800) - take_damage(round(exposed_volume / 100), BURN, "fire") + take_damage(round(exposed_volume / 100), BURN, FIRE) return ..() diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index 95e04435d4b..bfb07c51cf2 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -23,7 +23,6 @@ return INITIALIZE_HINT_LATELOAD - /obj/structure/ladder/LateInitialize() . = ..() for(var/obj/structure/ladder/L AS in GLOB.ladder_list) @@ -65,8 +64,8 @@ else //wtf make your ladders properly assholes icon_state = "ladder00" -/obj/structure/ladder/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - return attack_hand(X) +/obj/structure/ladder/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + return attack_hand(xeno_attacker) /obj/structure/ladder/attack_larva(mob/living/carbon/xenomorph/larva/X) return attack_hand(X) @@ -111,7 +110,6 @@ user.visible_message(span_notice("[user] climbs [ladder_dir_name] [src]."), span_notice("You climb [ladder_dir_name] [src].")) - /obj/structure/ladder/attack_ghost(mob/dead/observer/user) . = ..() if(.) @@ -131,7 +129,6 @@ else if(down) user.forceMove(get_turf(down)) - /obj/structure/ladder/check_eye(mob/user) //Are we capable of looking? if(user.incapacitated() || get_dist(user, src) > 1 || is_blind(user) || user.lying_angle || !user.client) @@ -145,8 +142,6 @@ if (!up || !up.cam || !up.cam.can_use()) //Camera doesn't work or is gone user.unset_interaction() - - /obj/structure/ladder/on_set_interaction(mob/user) if (is_watching == 1) if (down || down.cam || down.cam.can_use()) //Camera works @@ -159,8 +154,6 @@ user.unset_interaction() //No usable cam, we stop interacting right away - - /obj/structure/ladder/on_unset_interaction(mob/user) ..() is_watching = 0 @@ -205,7 +198,6 @@ is_watching = 1 usr.set_interaction(src) - //Throwing Shiet /obj/structure/ladder/attackby(obj/item/I, mob/user, params) . = ..() diff --git a/code/game/objects/structures/mine_structures.dm b/code/game/objects/structures/mine_structures.dm index 343799e5ec4..b8c020005e9 100644 --- a/code/game/objects/structures/mine_structures.dm +++ b/code/game/objects/structures/mine_structures.dm @@ -17,10 +17,10 @@ density = TRUE /obj/structure/mine_structure/wooden/flamer_fire_act(burnlevel) - take_damage(burnlevel, BURN, "fire") + take_damage(burnlevel, BURN, FIRE) /obj/structure/mine_structure/wooden/fire_act() - take_damage(25, BURN, "fire") + take_damage(25, BURN, FIRE) /obj/structure/mine_structure/wooden/support_wall name = "wooden support" diff --git a/code/game/objects/structures/razorwire.dm b/code/game/objects/structures/razorwire.dm index 8ec6f3bb6a4..0489da55955 100644 --- a/code/game/objects/structures/razorwire.dm +++ b/code/game/objects/structures/razorwire.dm @@ -71,7 +71,6 @@ span_danger("You got entangled in the barbed wire! Resist to untangle yourself after [duration * 0.1] seconds since you were entangled!"), null, null, 5) do_razorwire_tangle(entangled) - /obj/structure/razorwire/proc/do_razorwire_tangle(mob/living/entangled) ADD_TRAIT(entangled, TRAIT_IMMOBILE, type) ENABLE_BITFIELD(entangled.restrained_flags, RESTRAINED_RAZORWIRE) @@ -80,7 +79,6 @@ RegisterSignal(entangled, COMSIG_QDELETING, PROC_REF(do_razorwire_untangle)) RegisterSignal(entangled, COMSIG_MOVABLE_PULL_MOVED, PROC_REF(razorwire_untangle)) - /obj/structure/razorwire/resisted_against(datum/source) var/mob/living/entangled = source if(TIMER_COOLDOWN_CHECK(entangled, COOLDOWN_ENTANGLE)) @@ -100,7 +98,6 @@ entangled.apply_damage(RAZORWIRE_BASE_DAMAGE * RAZORWIRE_MIN_DAMAGE_MULT_MED, BRUTE, def_zone, MELEE, TRUE, updating_health = TRUE) //Apply damage as we tear free return TRUE - ///This proc is used for signals, so if you plan on adding a second argument, or making it return a value, then change those RegisterSignal's referncing it first. /obj/structure/razorwire/proc/do_razorwire_untangle(mob/living/entangled) SIGNAL_HANDLER @@ -109,7 +106,6 @@ DISABLE_BITFIELD(entangled.restrained_flags, RESTRAINED_RAZORWIRE) REMOVE_TRAIT(entangled, TRAIT_IMMOBILE, type) - /obj/structure/razorwire/proc/on_exited(datum/source, atom/movable/AM, direction) if(!isliving(AM)) return @@ -122,7 +118,6 @@ do_razorwire_untangle(i) return ..() - /obj/structure/razorwire/attackby(obj/item/I, mob/user, params) . = ..() @@ -184,11 +179,11 @@ deconstruct(TRUE) return TRUE -/obj/structure/razorwire/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/razorwire/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - X.apply_damage(RAZORWIRE_BASE_DAMAGE, blocked = MELEE, updating_health = TRUE) //About a third as damaging as actually entering + xeno_attacker.apply_damage(RAZORWIRE_BASE_DAMAGE, blocked = MELEE, updating_health = TRUE) //About a third as damaging as actually entering update_icon() return ..() @@ -198,7 +193,6 @@ visible_message(span_danger("[src] is blown apart!")) update_icon() - /obj/structure/razorwire/CanAllowThrough(atom/movable/mover, turf/target) if(mover.throwing && ismob(mover) && !(mover.pass_flags & PASS_DEFENSIVE_STRUCTURE)) return FALSE diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 91adfc1cf9b..0ff1c7b76f9 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -1,12 +1,3 @@ -/* -* Contains: -* Beds -* Roller beds -*/ - -/* -* Beds -*/ /obj/structure/bed name = "bed" desc = "A mattress seated on a rectangular metallic frame. This is used to support a lying person in a comfortable manner, notably for regular sleep. Ancient technology, but still useful." @@ -29,7 +20,6 @@ var/accepts_bodybag = FALSE //Whether you can buckle bodybags to this bed var/base_bed_icon //Used by beds that change sprite when something is buckled to them - /obj/structure/bed/nometal dropmetal = FALSE @@ -50,7 +40,6 @@ unbuckle_bodybag() return ..() - /obj/structure/bed/post_buckle_mob(mob/buckling_mob) . = ..() buckling_mob.pixel_y = buckling_y @@ -92,7 +81,6 @@ if(pulledby) B.set_glide_size(pulledby.glide_size) - /obj/structure/bed/proc/unbuckle_bodybag(mob/user) if(!buckled_bodybag) return @@ -105,7 +93,6 @@ density = FALSE update_icon() - //Trying to buckle a mob /obj/structure/bed/buckle_mob(mob/living/buckling_mob, force = FALSE, check_loc = TRUE, lying_buckle = FALSE, hands_needed = 0, target_hands_needed = 0, silent) if(buckled_bodybag) @@ -222,7 +209,6 @@ accepts_bodybag = TRUE base_bed_icon = "roller" - /obj/item/roller name = "roller bed" desc = "A collapsed roller bed that can be carried around." @@ -256,7 +242,6 @@ forceMove(RH) RH.held = src - /obj/item/roller/proc/deploy_roller(mob/user, atom/location) var/obj/structure/bed/roller/R = new rollertype(location) user.temporarilyRemoveItemFromInventory(src) @@ -322,13 +307,13 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) . = ..() radio = new(src) -/obj/structure/bed/medevac_stretcher/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/bed/medevac_stretcher/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(buckled_bodybag) unbuckle_bodybag() for(var/m in buckled_mobs) - user_unbuckle_mob(m, X, TRUE) + user_unbuckle_mob(m, xeno_attacker, TRUE) /obj/structure/bed/medevac_stretcher/attack_ghost(mob/dead/observer/user) . = ..() @@ -351,7 +336,6 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) if(LAZYLEN(buckled_mobs) || buckled_bodybag) overlays += image("icon_state"="stretcher_box","layer"=LYING_MOB_LAYER + 0.1) - /obj/structure/bed/medevac_stretcher/verb/activate_medevac_displacer() set name = "Activate Medevac Displacement Field" set desc = "Teleport the occupant of the stretcher to a linked beacon." @@ -360,7 +344,6 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) activate_medevac_teleport(usr) - /obj/structure/bed/medevac_stretcher/attack_hand_alternate(mob/living/user) activate_medevac_teleport(user) @@ -420,7 +403,6 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) playsound(loc,'sound/machines/buzz-two.ogg', 25, FALSE) visible_message(span_warning("[src]'s safeties kick in, no longer detecting a buckled user.")) - /obj/structure/bed/medevac_stretcher/proc/medevac_teleport(mob/user) UnregisterSignal(src, COMSIG_MOVABLE_UNBUCKLE) busy = FALSE @@ -489,7 +471,6 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) var/obj/item/healthanalyzer/J = I J.attack(occupant, user) - /obj/structure/bed/medevac_stretcher/proc/medvac_alert(mob/M) playsound(loc, 'sound/machines/ping.ogg', 50, FALSE) radio.talk_into(src, "Patient [M] has been tele-vaced to medvac beacon at: [get_area(linked_beacon)]. Coordinates: (X: [linked_beacon.x], Y: [linked_beacon.y])", RADIO_CHANNEL_MEDICAL) @@ -511,7 +492,6 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) . += span_notice("[details.Join(" ")]") - /obj/item/roller/medevac name = "medevac stretcher" desc = "A collapsed medevac stretcher that can be carried around." @@ -584,7 +564,6 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) return var/mutable_appearance/desc = mutable_appearance('icons/misc/12x12.dmi') desc.maptext = MAPTEXT("[display_timer_cooldown]s") - . += desc /obj/item/roller/medevac/attackby(obj/item/I, mob/user, params) @@ -723,7 +702,6 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers) add_stretcher(I, user) - /obj/item/medevac_beacon/proc/check_power() var/area/A = loc?.loc if(!A || !isarea(A)) diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 3b8e16e46d4..750507bcd1e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -39,7 +39,6 @@ else layer = OBJ_LAYER - /obj/structure/bed/chair/post_buckle_mob(mob/buckling_mob) . = ..() if(isliving(buckling_mob)) //Properly update whether we're lying or not; no more people lying on chairs; ridiculous @@ -56,7 +55,6 @@ . = ..() handle_rotation(newdir) - /obj/structure/bed/chair/verb/rotate() set name = "Rotate Chair" set category = "Object" @@ -79,7 +77,6 @@ desc = "Some say that the TGMC shouldn't spent this much money on reinforced chairs, but the documents from briefing riots prove otherwise." buildstackamount = 2 - /obj/structure/bed/chair/reinforced/attackby(obj/item/I, mob/user, params) . = ..() @@ -117,7 +114,6 @@ playsound(loc, 'sound/items/welder2.ogg', 25, 1) qdel(src) - /obj/structure/bed/chair/wood buildstacktype = /obj/item/stack/sheet/wood hit_sound = 'sound/effects/woodhit.ogg' @@ -194,7 +190,6 @@ //cm benches do not have corners - /obj/structure/bed/chair/pew name = "chapel pew" desc = "An old fashioned wood pew." @@ -288,7 +283,6 @@ visible_message(span_danger("[mover] slams into [src] and breaks it!")) INVOKE_ASYNC(src, PROC_REF(fold_down), TRUE) return FALSE - return ..() /obj/structure/bed/chair/dropship/passenger/Initialize(mapload) @@ -296,19 +290,16 @@ chairbar = image("icons/obj/objects.dmi", "shuttle_bars") chairbar.layer = ABOVE_MOB_LAYER - /obj/structure/bed/chair/dropship/passenger/post_buckle_mob(mob/buckling_mob) icon_state = "shuttle_chair_buckled" overlays += chairbar return ..() - /obj/structure/bed/chair/dropship/passenger/post_unbuckle_mob(mob/buckled_mob) icon_state = "shuttle_chair" overlays -= chairbar return ..() - /obj/structure/bed/chair/dropship/passenger/buckle_mob(mob/living/buckling_mob, force = FALSE, check_loc = TRUE, lying_buckle = FALSE, hands_needed = 0, target_hands_needed = 0, silent) if(chair_state != DROPSHIP_CHAIR_UNFOLDED) return FALSE @@ -341,12 +332,11 @@ /obj/structure/bed/chair/dropship/passenger/rotate() return // no - -/obj/structure/bed/chair/dropship/passenger/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/bed/chair/dropship/passenger/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(chair_state != DROPSHIP_CHAIR_BROKEN) - X.visible_message(span_warning("[X] smashes \the [src], shearing the bolts!"), + xeno_attacker.visible_message(span_warning("[xeno_attacker] smashes \the [src], shearing the bolts!"), span_warning("We smash \the [src], shearing the bolts!")) fold_down(1) @@ -400,7 +390,6 @@ span_warning("You repair \the [src].")) chair_state = DROPSHIP_CHAIR_FOLDED - /obj/structure/bed/chair/ob_chair name = "seat" desc = "A comfortable seat." diff --git a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm index 919e0919ee2..68ae8ce5671 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm @@ -1,9 +1,5 @@ -//RUTGMC EDIT CHANGE BEGIN -//#define NEST_RESIST_TIME 2.5 SECONDS //ORIGINAL -//#define NEST_UNBUCKLED_COOLDOWN 5 SECONDS -#define NEST_RESIST_TIME 80 SECONDS //RUTGMC EDIT +#define NEST_RESIST_TIME 80 SECONDS #define NEST_UNBUCKLED_COOLDOWN 15 SECONDS -//RUTGMC EDIT CHANGE END ///Alium nests. Essentially beds with an unbuckle delay that only aliums can buckle mobs to. /obj/structure/bed/nest @@ -30,18 +26,18 @@ to_chat(user, span_notice("You place [M] on [src].")) M.forceMove(loc) -/obj/structure/bed/nest/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/bed/nest/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return - X.visible_message(span_xenonotice("\The [X] starts tearing down \the [src]!"), \ + xeno_attacker.visible_message(span_xenonotice("\The [xeno_attacker] starts tearing down \the [src]!"), \ span_xenonotice("We start to tear down \the [src].")) - if(!do_after(X, 4 SECONDS, NONE, X, BUSY_ICON_GENERIC)) + if(!do_after(xeno_attacker, 4 SECONDS, NONE, xeno_attacker, BUSY_ICON_GENERIC)) return if(!istype(src)) // Prevent jumping to other turfs if do_after completes with the wall already gone return - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - X.visible_message(span_xenonotice("\The [X] tears down \the [src]!"), \ + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + xeno_attacker.visible_message(span_xenonotice("\The [xeno_attacker] tears down \the [src]!"), \ span_xenonotice("We tear down \the [src].")) playsound(src, "alien_resin_break", 25) take_damage(max_integrity) // Ensure its destroyed @@ -63,11 +59,6 @@ if(TIMER_COOLDOWN_CHECK(H, COOLDOWN_NEST)) to_chat(user, span_warning("[H] was recently unbuckled. Wait a bit.")) return FALSE - //RUTGMC EDIT REMOVAL BEGIN - /*if(!H.lying_angle) - to_chat(user, span_warning("[H] is resisting, ground [H.p_them()].")) - return FALSE */ - //RUTGMC EDIT END user.visible_message(span_warning("[user] pins [buckling_mob] into [src], preparing the securing resin."), span_warning("[user] pins [buckling_mob] into [src], preparing the securing resin.")) @@ -79,11 +70,6 @@ if(LAZYLEN(buckled_mobs)) to_chat(user, span_warning("There's already someone in [src].")) return FALSE - //RUTGMC EDIT REMOVAL BEGIN - /*if(ishuman(buckling_mob) && !buckling_mob.lying_angle) //Improperly stunned Marines won't be nested - to_chat(user, span_warning("[buckling_mob] is resisting, ground [buckling_mob.p_them()].")) - return FALSE */ - //RUTGMC EDIT END buckling_mob.visible_message(span_xenonotice("[user] secretes a thick, vile resin, securing [buckling_mob] into [src]!"), span_xenonotice("[user] drenches you in a foul-smelling resin, trapping you in [src]!"), @@ -93,7 +79,6 @@ silent = TRUE return ..() - /obj/structure/bed/nest/user_unbuckle_mob(mob/living/buckled_mob, mob/user, silent) if(buckled_mob != user) if(user.incapacitated()) @@ -102,14 +87,11 @@ span_notice("\The [user] pulls you free from \the [src]."), span_notice("You hear squelching.")) playsound(loc, "alien_resin_move", 50) - //TIMER_COOLDOWN_START(user, COOLDOWN_NEST, NEST_UNBUCKLED_COOLDOWN) //RUTGMC EDIT REMOVAL silent = TRUE return ..() -// RU TGMC EDIT if(force_nest) to_chat(buckled_mob, span_warning("Nest to thick, you can't resist.")) return FALSE -// RU TGMC EDIT if(buckled_mob.incapacitated(TRUE)) to_chat(buckled_mob, span_warning("You're currently unable to try that.")) return FALSE @@ -129,7 +111,6 @@ silent = TRUE return ..() - /obj/structure/bed/nest/proc/unbuckle_time_message(mob/living/user) if(QDELETED(user) || !(user in buckled_mobs)) return //Time has passed, conditions may have changed. @@ -137,7 +118,6 @@ return //We've been freed and re-nested. to_chat(user, span_danger("You are ready to break free! Resist once more to free yourself!")) - /obj/structure/bed/nest/post_buckle_mob(mob/living/buckling_mob) . = ..() ENABLE_BITFIELD(buckling_mob.restrained_flags, RESTRAINED_XENO_NEST) @@ -157,7 +137,6 @@ if(LAZYLEN(buckled_mobs)) . += image("icon_state" = "nest_overlay", "layer" = LYING_MOB_LAYER + 0.1) - /obj/structure/bed/nest/flamer_fire_act(burnlevel) take_damage(burnlevel * 2, BURN, FIRE) diff --git a/code/game/objects/structures/xeno.dm b/code/game/objects/structures/xeno.dm index 5f9ae963f88..2202cb55ec6 100644 --- a/code/game/objects/structures/xeno.dm +++ b/code/game/objects/structures/xeno.dm @@ -1,7 +1,3 @@ - -/* -* effect/alien -*/ /obj/alien name = "alien thing" desc = "theres something alien about this" @@ -23,7 +19,7 @@ /// Destroy the alien effect when the weed it was on is destroyed /obj/alien/proc/weed_removed() SIGNAL_HANDLER - obj_destruction(damage_flag = "melee") + obj_destruction(damage_flag = MELEE) /obj/alien/attackby(obj/item/I, mob/user, params) . = ..() @@ -57,12 +53,10 @@ max_integrity = 200 resistance_flags = XENO_DAMAGEABLE - /obj/alien/resin/attack_hand(mob/living/user) balloon_alert(user, "You only scrape at it") return TRUE - /obj/alien/resin/sticky name = STICKY_RESIN desc = "A layer of disgusting sticky slime." @@ -108,17 +102,17 @@ victim.next_move_slowdown += slow_amt -/obj/alien/resin/sticky/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/alien/resin/sticky/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - if(X.a_intent != INTENT_DISARM) + if(xeno_attacker.a_intent != INTENT_DISARM) return FALSE - if(X.a_intent == INTENT_DISARM) - if(CHECK_BITFIELD(SSticker.mode?.flags_round_type, MODE_ALLOW_XENO_QUICKBUILD) && SSresinshaping.should_refund(src, X) && refundable) - SSresinshaping.decrement_build_counter(X) - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) + if(xeno_attacker.a_intent == INTENT_DISARM) + if(CHECK_BITFIELD(SSticker.mode?.flags_round_type, MODE_ALLOW_XENO_QUICKBUILD) && SSresinshaping.should_refund(src, xeno_attacker) && refundable) + SSresinshaping.decrement_build_counter(xeno_attacker) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) playsound(src, "alien_resin_break", 25) deconstruct(TRUE) return @@ -154,7 +148,6 @@ trigger_sound = "alien_resin_move" hit_sound = "alien_resin_move" destroy_sound = "alien_resin_move" - ///The delay before the door closes automatically after being open var/close_delay = 10 SECONDS ///The timer that tracks the delay above @@ -187,22 +180,22 @@ try_toggle_state(M) return TRUE -/obj/structure/mineral_door/resin/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - var/turf/cur_loc = X.loc +/obj/structure/mineral_door/resin/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + var/turf/cur_loc = xeno_attacker.loc if(!istype(cur_loc)) return FALSE - if(X.a_intent != INTENT_DISARM) - try_toggle_state(X) + if(xeno_attacker.a_intent != INTENT_DISARM) + try_toggle_state(xeno_attacker) return TRUE - if(CHECK_BITFIELD(SSticker.mode?.flags_round_type, MODE_ALLOW_XENO_QUICKBUILD) && SSresinshaping.should_refund(src, X)) - SSresinshaping.decrement_build_counter(X) + if(CHECK_BITFIELD(SSticker.mode?.flags_round_type, MODE_ALLOW_XENO_QUICKBUILD) && SSresinshaping.should_refund(src, xeno_attacker)) + SSresinshaping.decrement_build_counter(xeno_attacker) qdel(src) return TRUE - src.balloon_alert(X, "Destroying...") + src.balloon_alert(xeno_attacker, "Destroying...") playsound(src, "alien_resin_break", 25) - if(do_after(X, 1 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)) - src.balloon_alert(X, "Destroyed") + if(do_after(xeno_attacker, 1 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)) + src.balloon_alert(xeno_attacker, "Destroyed") qdel(src) /obj/structure/mineral_door/resin/flamer_fire_act(burnlevel) @@ -246,7 +239,6 @@ INVOKE_NEXT_TICK(R, PROC_REF(check_resin_support)) return ..() - //do we still have something next to us to support us? /obj/structure/mineral_door/resin/proc/check_resin_support() var/turf/T @@ -275,20 +267,20 @@ ///Holder to ensure only one user per resin jelly. var/current_user -/obj/item/resin_jelly/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/item/resin_jelly/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - if(X.xeno_caste.can_flags & CASTE_CAN_HOLD_JELLY) - return attack_hand(X) - if(X.do_actions || !isnull(current_user)) + if(xeno_attacker.xeno_caste.can_flags & CASTE_CAN_HOLD_JELLY) + return attack_hand(xeno_attacker) + if(xeno_attacker.do_actions || !isnull(current_user)) return - current_user = X - X.balloon_alert(X, "Applying...") - if(!do_after(X, RESIN_SELF_TIME, NONE, X, BUSY_ICON_MEDICAL)) + current_user = xeno_attacker + xeno_attacker.balloon_alert(xeno_attacker, "Applying...") + if(!do_after(xeno_attacker, RESIN_SELF_TIME, NONE, xeno_attacker, BUSY_ICON_MEDICAL)) current_user = null return - activate_jelly(X) + activate_jelly(xeno_attacker) /obj/item/resin_jelly/attack_self(mob/living/carbon/xenomorph/user) //Activates if the item itself is clicked in hand. @@ -341,11 +333,11 @@ UnregisterSignal(source, COMSIG_MOVABLE_IMPACT) if(!isxeno(hit_atom)) return - var/mob/living/carbon/xenomorph/X = hit_atom - if(X.xeno_caste.caste_flags & CASTE_FIRE_IMMUNE) + var/mob/living/carbon/xenomorph/xenomorph_target = hit_atom + if(xenomorph_target.xeno_caste.caste_flags & CASTE_FIRE_IMMUNE) return - X.visible_message(span_notice("[X] is splattered with jelly!")) - INVOKE_ASYNC(src, PROC_REF(activate_jelly), X) + xenomorph_target.visible_message(span_notice("[xenomorph_target] is splattered with jelly!")) + INVOKE_ASYNC(src, PROC_REF(activate_jelly), xenomorph_target) /obj/alien/resin/resin_growth name = GROWTH_WALL diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 99078c58105..c12cf8b99e8 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -42,7 +42,6 @@ return ..() - /turf/open/examine(mob/user) . = ..() . += ceiling_desc() @@ -92,7 +91,6 @@ barefootstep = FOOTSTEP_HARD mediumxenofootstep = FOOTSTEP_PLATING - /turf/open/shuttle/check_alien_construction(mob/living/builder, silent = FALSE, planned_building) if(ispath(planned_building, /turf/closed/wall/)) // Shuttles move and will leave holes in the floor during transit if(!silent) @@ -295,15 +293,15 @@ /turf/open/lavaland/catwalk/built var/deconstructing = FALSE -/turf/open/lavaland/catwalk/built/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/turf/open/lavaland/catwalk/built/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return - if(X.a_intent != INTENT_HARM) + if(xeno_attacker.a_intent != INTENT_HARM) return if(deconstructing) return deconstructing = TRUE - if(!do_after(X, 10 SECONDS, NONE, src, BUSY_ICON_BUILD)) + if(!do_after(xeno_attacker, 10 SECONDS, NONE, src, BUSY_ICON_BUILD)) deconstructing = FALSE return deconstructing = FALSE diff --git a/code/game/turfs/snow.dm b/code/game/turfs/snow.dm index cced92fa58e..d139db68722 100644 --- a/code/game/turfs/snow.dm +++ b/code/game/turfs/snow.dm @@ -24,7 +24,7 @@ update_icon(TRUE, FALSE) //Xenos digging up snow -/turf/open/floor/plating/ground/snow/attack_alien(mob/living/carbon/xenomorph/M, damage_amount = M.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/turf/open/floor/plating/ground/snow/attack_alien(mob/living/carbon/xenomorph/M, damage_amount = M.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(M.status_flags & INCORPOREAL) return diff --git a/code/game/turfs/walls/resin.dm b/code/game/turfs/walls/resin.dm index c2796d535cb..3b3e26e39c1 100644 --- a/code/game/turfs/walls/resin.dm +++ b/code/game/turfs/walls/resin.dm @@ -1,8 +1,3 @@ -/** - * Resin walls - * - * Used mostly be xenomorphs - */ /turf/closed/wall/resin name = RESIN_WALL desc = "Weird slime solidified into a wall." @@ -25,16 +20,13 @@ . = ..() return INITIALIZE_HINT_LATELOAD - /turf/closed/wall/resin/flamer_fire_act(burnlevel) take_damage(burnlevel * 1.25, BURN, FIRE) - /turf/closed/wall/resin/proc/thicken() ChangeTurf(/turf/closed/wall/resin/thick) return TRUE - /turf/closed/wall/resin/thick name = "thick resin wall" desc = "Weird slime solidified into a thick wall." @@ -42,11 +34,9 @@ icon_state = "thickresin0" walltype = "thickresin" - /turf/closed/wall/resin/thick/thicken() return FALSE - /turf/closed/wall/resin/membrane name = "resin membrane" desc = "Weird slime translucent enough to let light pass through." @@ -60,11 +50,9 @@ smoothing_groups = list(SMOOTH_GROUP_XENO_STRUCTURES) canSmoothWith = list(SMOOTH_GROUP_XENO_STRUCTURES) - /turf/closed/wall/resin/membrane/thicken() ChangeTurf(/turf/closed/wall/resin/membrane/thick) - /turf/closed/wall/resin/membrane/thick name = "thick resin membrane" desc = "Weird thick slime just translucent enough to let light pass through." @@ -73,27 +61,26 @@ walltype = "thickmembrane" alpha = 210 - /turf/closed/wall/resin/ex_act(severity) take_damage(severity * RESIN_EXPLOSIVE_MULTIPLIER, BRUTE, BOMB) -/turf/closed/wall/resin/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/turf/closed/wall/resin/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return - if(X.a_intent != INTENT_DISARM) + if(xeno_attacker.a_intent != INTENT_DISARM) return - if(CHECK_BITFIELD(SSticker.mode?.flags_round_type, MODE_ALLOW_XENO_QUICKBUILD) && SSresinshaping.should_refund(src, X)) - SSresinshaping.decrement_build_counter(X) + if(CHECK_BITFIELD(SSticker.mode?.flags_round_type, MODE_ALLOW_XENO_QUICKBUILD) && SSresinshaping.should_refund(src, xeno_attacker)) + SSresinshaping.decrement_build_counter(xeno_attacker) take_damage(max_integrity) return - X.visible_message(span_xenonotice("\The [X] starts tearing down \the [src]!"), \ + xeno_attacker.visible_message(span_xenonotice("\The [xeno_attacker] starts tearing down \the [src]!"), \ span_xenonotice("We start to tear down \the [src].")) - if(!do_after(X, 1 SECONDS, NONE, X, BUSY_ICON_GENERIC)) + if(!do_after(xeno_attacker, 1 SECONDS, NONE, xeno_attacker, BUSY_ICON_GENERIC)) return if(!istype(src)) return - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - X.visible_message(span_xenonotice("\The [X] tears down \the [src]!"), \ + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + xeno_attacker.visible_message(span_xenonotice("\The [xeno_attacker] tears down \the [src]!"), \ span_xenonotice("We tear down \the [src].")) playsound(src, "alien_resin_break", 25) take_damage(max_integrity) @@ -102,7 +89,6 @@ to_chat(user, span_warning("You scrape ineffectively at \the [src].")) return TRUE - /turf/closed/wall/resin/attackby(obj/item/I, mob/living/user, params) if(I.flags_item & NOBLUDGEON || !isliving(user)) return @@ -128,7 +114,6 @@ /turf/closed/wall/resin/dismantle_wall(devastated = 0, explode = 0) ScrapeAway() - /turf/closed/wall/resin/ChangeTurf(newtype) . = ..() if(.) @@ -145,7 +130,6 @@ */ /turf/closed/wall/resin/regenerating max_integrity = 150 - /// Total health possible for a wall after regenerating at max health var/max_upgradable_health = 300 /// How much the walls integrity heals per tick (5 seconds) @@ -191,7 +175,6 @@ addtimer(CALLBACK(src, PROC_REF(start_healing)), cooldown_on_taking_dmg) existingtimer = TRUE - /* Hivelord walls, they start off stronger */ /turf/closed/wall/resin/regenerating/thick max_integrity = 250 diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index aec922a5d5f..2be0c260f94 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -476,7 +476,7 @@ smoothing_groups = SMOOTH_GROUP_GENERAL_STRUCTURES max_integrity = 9000//Strong, but only available to Hunters, can can still be blown up or melted by boilers. -/turf/closed/wall/mineral/sandstone/runed/attack_alien(mob/living/carbon/xenomorph/user, damage_amount = user.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/turf/closed/wall/mineral/sandstone/runed/attack_alien(mob/living/carbon/xenomorph/user, damage_amount = user.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) visible_message("[user] scrapes uselessly against [src] with their claws.") return diff --git a/code/game/turfs/walls/walls.dm b/code/game/turfs/walls/walls.dm index 2703f231575..61d19f73926 100644 --- a/code/game/turfs/walls/walls.dm +++ b/code/game/turfs/walls/walls.dm @@ -1,36 +1,25 @@ - - /turf/closed/wall name = "wall" desc = "A huge chunk of metal used to seperate rooms." icon = 'icons/turf/walls/regular_wall.dmi' icon_state = "metal-0" + base_icon_state = "metal" baseturfs = /turf/open/floor/plating opacity = TRUE explosion_block = 2 - walltype = "metal" - soft_armor = list(MELEE = 0, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0) - var/wall_integrity var/max_integrity = 1000 //Wall will break down to girders if damage reaches this point - var/damage_overlay var/global/damage_overlays[8] - var/current_bulletholes = 0 var/bullethole_increment = 1 var/bullethole_state = 0 var/image/bullethole_overlay - base_icon_state = "metal" - var/max_temperature = 1800 //K, walls will take damage if they're next to a fire hotter than this - var/d_state = 0 //Normal walls are now as difficult to remove as reinforced walls - var/obj/effect/acid_hole/acided_hole //the acid hole inside the wall - smoothing_flags = SMOOTH_BITMASK smoothing_groups = list( SMOOTH_GROUP_CLOSED_TURFS, @@ -59,7 +48,6 @@ visible_message(span_warning("\The [M] is sealed inside the wall as it is built")) qdel(M) - /turf/closed/wall/ChangeTurf(newtype) if(acided_hole) qdel(acided_hole) @@ -91,8 +79,6 @@ if(istype(O, /obj/alien/weeds)) qdel(O) - - /turf/closed/wall/MouseDrop_T(mob/M, mob/user) if(acided_hole) if(M == user && isxeno(user)) @@ -100,18 +86,14 @@ return ..() - -/turf/closed/wall/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/turf/closed/wall/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return - if(acided_hole && (X.mob_size == MOB_SIZE_BIG || X.xeno_caste.caste_flags & CASTE_IS_STRONG)) //Strong and/or big xenos can tear open acided walls - acided_hole.expand_hole(X) + if(acided_hole && (xeno_attacker.mob_size == MOB_SIZE_BIG || xeno_attacker.xeno_caste.caste_flags & CASTE_IS_STRONG)) //Strong and/or big xenos can tear open acided walls + acided_hole.expand_hole(xeno_attacker) else return ..() - - - //Appearance /turf/closed/wall/examine(mob/user) . = ..() @@ -216,7 +198,7 @@ damage_overlays[i] = img ///Applies damage to the wall -/turf/closed/wall/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", armour_penetration = 0) +/turf/closed/wall/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = MELEE, armour_penetration = 0) if(resistance_flags & INDESTRUCTIBLE) //Hull is literally invincible return @@ -253,7 +235,6 @@ wall_integrity += repair_amount update_icon() - /turf/closed/wall/proc/make_girder(destroyed_girder = FALSE) var/obj/structure/girder/G = new /obj/structure/girder(src) G.update_icon() @@ -261,8 +242,6 @@ if(destroyed_girder) G.deconstruct(FALSE) - - // Devastated and Explode causes the wall to spawn a damaged girder // Walls no longer spawn a metal sheet when destroyed to reduce clutter and // improve visual readability. @@ -275,10 +254,8 @@ make_girder(TRUE) else make_girder(FALSE) - ScrapeAway() - /turf/closed/wall/ex_act(severity, explosion_direction) if(resistance_flags & INDESTRUCTIBLE) return @@ -319,7 +296,6 @@ take_damage(rand(25, 75)) return - /turf/closed/wall/attackby(obj/item/I, mob/user, params) . = ..() @@ -327,11 +303,9 @@ to_chat(user, span_warning("You don't have the dexterity to do this!")) return -//RUTGMC EDIT else if(istype(I, /obj/item/frame/torch_frame)) var/obj/item/frame/torch_frame/AH = I AH.try_build(src) -//RUTGMC EDIT else if(istype(I, /obj/item/frame/apc)) var/obj/item/frame/apc/AH = I diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 4170667653a..277b5cf98ef 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -14,30 +14,23 @@ light_range = 2 light_power = 0.5 light_color = LIGHT_COLOR_EMISSIVE_GREEN - var/autoeject = FALSE var/release_notice = FALSE - var/temperature = 100 - var/efficiency = 1 var/sleep_factor = 0.00125 var/unconscious_factor = 0.001 var/heat_capacity = 20000 var/conduction_coefficient = 0.3 - var/obj/item/reagent_containers/glass/beaker = null var/reagent_transfer = 0 - var/obj/item/radio/headset/mainship/doc/radio - var/idle_ticks_until_shutdown = 60 //Number of ticks permitted to elapse without a patient before the cryotube shuts itself off to save processing - + ///Number of ticks permitted to elapse without a patient before the cryotube shuts itself off to save processing + var/idle_ticks_until_shutdown = 60 var/running_anim = FALSE - var/escape_in_progress = FALSE var/message_cooldown var/breakout_time = 300 - var/mob/living/carbon/occupant /obj/machinery/atmospherics/components/unary/cryo_cell/Initialize(mapload) @@ -196,16 +189,13 @@ if(!idle_ticks_until_shutdown) //shut down after all ticks elapsed to conserve on processing turn_off() idle_ticks_until_shutdown = 60 //reset idle ticks - return TRUE - /obj/machinery/atmospherics/components/unary/cryo_cell/relaymove(mob/user) if(message_cooldown <= world.time) message_cooldown = world.time + 50 to_chat(user, span_warning("[src]'s door won't budge!")) - /obj/machinery/atmospherics/components/unary/cryo_cell/verb/move_eject() set name = "Eject occupant" set category = "Object" @@ -240,9 +230,7 @@ beaker = I - var/reagentnames = "" - for(var/datum/reagent/R in beaker.reagents.reagent_list) reagentnames += ", [R.name]" @@ -440,18 +428,17 @@ /obj/machinery/atmospherics/components/unary/cryo_cell/can_crawl_through() return // can't ventcrawl in or out of cryo. -/obj/machinery/atmospherics/components/unary/cryo_cell/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/atmospherics/components/unary/cryo_cell/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!occupant) - to_chat(X, span_xenowarning("There is nothing of interest in there.")) + to_chat(xeno_attacker, span_xenowarning("There is nothing of interest in there.")) return - if(X.status_flags & INCORPOREAL || X.do_actions) + if(xeno_attacker.status_flags & INCORPOREAL || xeno_attacker.do_actions) return - visible_message(span_warning("[X] begins to pry the [src]'s cover!"), 3) + visible_message(span_warning("[xeno_attacker] begins to pry the [src]'s cover!"), 3) playsound(src,'sound/effects/metal_creaking.ogg', 25, 1) - if(!do_after(X, 2 SECONDS)) + if(!do_after(xeno_attacker, 2 SECONDS)) return playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) go_out() - #undef CRYOMOBS diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index e9f2af43baa..455b1df23f9 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -7,21 +7,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump icon_state = "vent_map-2" - name = "air vent" desc = "Has a valve and pump attached to it." - use_power = IDLE_POWER_USE can_unwrench = FALSE welded = FALSE level = 1 layer = ATMOS_DEVICE_LAYER flags_atom = SHUTTLE_IMMUNE - var/pump_direction = RELEASING - var/pressure_checks = EXT_BOUND - var/radio_filter_out var/radio_filter_in @@ -62,7 +57,6 @@ else // pump_direction == SIPHONING icon_state = "vent_in" - /obj/machinery/atmospherics/components/unary/vent_pump/weld_cut_act(mob/living/user, obj/item/W) if(istype(W, /obj/item/tool/pickaxe/plasmacutter)) var/obj/item/tool/pickaxe/plasmacutter/P = W @@ -118,7 +112,7 @@ to_chat(user, span_warning("You cannot unwrench [src], turn it off first!")) return FALSE -/obj/machinery/atmospherics/components/unary/vent_pump/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/machinery/atmospherics/components/unary/vent_pump/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(F.status_flags & INCORPOREAL) return if(!welded || !(do_after(F, 3 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE))) @@ -135,7 +129,6 @@ if(welded) . += span_notice("It seems welded shut.") - /obj/machinery/atmospherics/components/unary/vent_pump/power_change() ..() update_icon_nopipes() @@ -143,19 +136,18 @@ /obj/machinery/atmospherics/components/unary/vent_pump/can_crawl_through() return !welded -/obj/machinery/atmospherics/components/unary/vent_pump/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/atmospherics/components/unary/vent_pump/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return - if(!welded || !(do_after(X, 2 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE))) + if(!welded || !(do_after(xeno_attacker, 2 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE))) return - X.visible_message("[X] furiously claws at [src]!", "We manage to clear away the stuff blocking the vent", "You hear loud scraping noises.") + xeno_attacker.visible_message("[xeno_attacker] furiously claws at [src]!", "We manage to clear away the stuff blocking the vent", "You hear loud scraping noises.") welded = FALSE update_icon() pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) pipe_vision_img.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) - /obj/machinery/atmospherics/components/unary/vent_pump/AltClick(mob/user) if(!isliving(user)) return @@ -166,7 +158,6 @@ var/mob/living/living_user = user living_user.handle_ventcrawl(src) - /obj/machinery/atmospherics/components/unary/vent_pump/high_volume name = "large air vent" power_channel = EQUIP diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 189be74dbd0..90a0932ee61 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -2,10 +2,9 @@ #define SCRUBBING 1 /obj/machinery/atmospherics/components/unary/vent_scrubber - icon_state = "scrub_map-2" - name = "air scrubber" desc = "Has a valve and pump attached to it." + icon_state = "scrub_map-2" use_power = IDLE_POWER_USE idle_power_usage = 10 active_power_usage = 60 @@ -15,7 +14,6 @@ layer = ATMOS_DEVICE_LAYER flags_atom = SHUTTLE_IMMUNE var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing - var/filter_types = list()///datum/gas/carbon_dioxide) var/volume_rate = 200 var/widenet = 0 //is this scrubber acting on the 3x3 area around it. @@ -119,7 +117,7 @@ to_chat(user, span_warning("You cannot unwrench [src], turn it off first!")) return FALSE -/obj/machinery/atmospherics/components/unary/vent_scrubber/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/machinery/atmospherics/components/unary/vent_scrubber/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(F.status_flags & INCORPOREAL) return if(!welded || !(do_after(F, 3 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE))) @@ -139,19 +137,18 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/can_crawl_through() return !welded -/obj/machinery/atmospherics/components/unary/vent_scrubber/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/atmospherics/components/unary/vent_scrubber/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return - if(!welded || !(do_after(X, 2 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE))) + if(!welded || !(do_after(xeno_attacker, 2 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE))) return - X.visible_message("[X] furiously claws at [src]!", "We manage to clear away the stuff blocking the scrubber.", "You hear loud scraping noises.") + xeno_attacker.visible_message("[xeno_attacker] furiously claws at [src]!", "We manage to clear away the stuff blocking the scrubber.", "You hear loud scraping noises.") welded = FALSE update_icon() pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) pipe_vision_img.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) - /obj/machinery/atmospherics/components/unary/vent_scrubber/AltClick(mob/user) if(!isliving(user)) return @@ -162,7 +159,6 @@ var/mob/living/living_user = user living_user.handle_ventcrawl(src) - /obj/machinery/atmospherics/components/unary/vent_scrubber/on on = TRUE icon_state = "scrub_map_on-2" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 15d0da6b33c..e8e04673f13 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -37,12 +37,12 @@ update_action_button_icons() update_icon() -/obj/item/clothing/head/hardhat/attack_alien(mob/living/carbon/xenomorph/X, isrightclick = FALSE) - if(turn_light(X, FALSE) != CHECKS_PASSED) +/obj/item/clothing/head/hardhat/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, isrightclick = FALSE) + if(turn_light(xeno_attacker, FALSE) != CHECKS_PASSED) return playsound(loc, "alien_claw_metal", 25, 1) - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - to_chat(X, span_warning("We disable the metal thing's lights.") ) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + to_chat(xeno_attacker, span_warning("We disable the metal thing's lights.") ) /obj/item/clothing/head/hardhat/update_icon() . = ..() diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 17dfb785f91..456d0021a84 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -104,7 +104,7 @@ src.onfire = !( src.onfire ) if (src.onfire) src.force = 3 - src.damtype = "fire" + src.damtype = FIRE src.icon_state = "cake1" START_PROCESSING(SSobj, src) return diff --git a/code/modules/clothing/modular_armor/combat_robot.dm b/code/modules/clothing/modular_armor/combat_robot.dm index 34e1acaad31..55c9b6c5bb5 100644 --- a/code/modules/clothing/modular_armor/combat_robot.dm +++ b/code/modules/clothing/modular_armor/combat_robot.dm @@ -219,7 +219,7 @@ name = "\improper Urodela upper armor plating" desc = "Heavy armor plating designed for self mounting on the upper half of TerraGov combat robotics. It has self-sealing bolts for mounting on robotic owners inside.The top armor made from fireproof glass-like material. This is done in order not to reduce the effectiveness of the robot's tracking modules. The glass itself can withstand high temperatures and a short stay in lava." soft_armor = list(MELEE = 50, BULLET = 50, LASER = 80, ENERGY = 50, BOMB = 50, BIO = 50, FIRE = 100, ACID = 50) - hard_armor = list("fire" = 200) + hard_armor = list(FIRE = 200) icon_state = "robo_helm_fire" item_state = "robo_helm_fire" diff --git a/code/modules/condor/cas_chair.dm b/code/modules/condor/cas_chair.dm index c33aadcc24e..8cef6c54ffb 100644 --- a/code/modules/condor/cas_chair.dm +++ b/code/modules/condor/cas_chair.dm @@ -121,7 +121,6 @@ playsound(loc, 'sound/effects/refill.ogg', 25, 1, 3) to_chat(user, span_notice("You refill the plane with fuel. New fuel level [owner.fuel_left/owner.fuel_max*100]%")) - /obj/structure/caspart/caschair/resisted_against(datum/source) if(owner.state) ui_interact(occupant) @@ -144,15 +143,15 @@ occupant.forceMove(get_step(loc, WEST)) occupant = null -/obj/structure/caspart/caschair/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/structure/caspart/caschair/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!occupant) - to_chat(X, span_xenowarning("There is nothing of interest in there.")) + to_chat(xeno_attacker, span_xenowarning("There is nothing of interest in there.")) return - if(X.status_flags & INCORPOREAL || X.do_actions) + if(xeno_attacker.status_flags & INCORPOREAL || xeno_attacker.do_actions) return - visible_message(span_warning("[X] begins to pry the [src]'s cover!"), 3) + visible_message(span_warning("[xeno_attacker] begins to pry the [src]'s cover!"), 3) playsound(src,'sound/effects/metal_creaking.ogg', 25, 1) - if(!do_after(X, 2 SECONDS)) + if(!do_after(xeno_attacker, 2 SECONDS)) return playsound(loc, 'sound/effects/metal_creaking.ogg', 25, 1) eject_user(TRUE) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index b9f48bc818e..0d262058677 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -8,7 +8,7 @@ var/mob/living/carbon/human/H = user - if(user != src && !check_shields(COMBAT_TOUCH_ATTACK, H.melee_damage, "melee")) + if(user != src && !check_shields(COMBAT_TOUCH_ATTACK, H.melee_damage, MELEE)) visible_message(span_danger("[user] attempted to touch [src]!"), null, null, 5) return FALSE diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 1ef669aa1a6..d2221a83d62 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -113,14 +113,12 @@ Contains most of the procs that are called when a mob is attacked by something return FALSE var/hit_area = affecting.display_name -//RUTGMC EDIT ADDITION BEGIN - Preds if((user != src) && check_pred_shields(I.force, "the [I.name]", backside_attack = dir == get_dir(get_turf(user), get_turf(src)))) return FALSE -//RUTGMC EDIT ADDITION END var/damage = I.force + round(I.force * MELEE_SKILL_DAM_BUFF * user.skills.getRating(SKILL_MELEE_WEAPONS)) if(user != src) - damage = check_shields(COMBAT_MELEE_ATTACK, damage, "melee") + damage = check_shields(COMBAT_MELEE_ATTACK, damage, MELEE) if(!damage) log_combat(user, src, "attacked", I, "(FAILED: shield blocked) (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(I.damtype)])") return TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index 1c50877b5d4..681184d3fa3 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -17,16 +17,14 @@ return TRUE /mob/living/carbon/human/attack_alien_grab(mob/living/carbon/xenomorph/X) - if(check_shields(COMBAT_TOUCH_ATTACK, X.xeno_caste.melee_damage, "melee")) + if(check_shields(COMBAT_TOUCH_ATTACK, X.xeno_caste.melee_damage, MELEE)) return ..() X.visible_message(span_danger("\The [X]'s grab is blocked by [src]'s shield!"), span_danger("Our grab was blocked by [src]'s shield!"), null, 5) playsound(loc, 'sound/weapons/alien_claw_block.ogg', 25, TRUE) //Feedback return FALSE - /mob/living/proc/attack_alien_disarm(mob/living/carbon/xenomorph/X, dam_bonus) - SEND_SIGNAL(src, COMSIG_LIVING_MELEE_ALIEN_DISARMED, X) X.do_attack_animation(src, ATTACK_EFFECT_DISARM2) playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, TRUE) @@ -86,7 +84,7 @@ armor_pen += i if(!(signal_return & COMPONENT_BYPASS_SHIELDS)) - damage = check_shields(COMBAT_MELEE_ATTACK, damage, "melee") + damage = check_shields(COMBAT_MELEE_ATTACK, damage, MELEE) if(!damage) X.visible_message(span_danger("\The [X]'s slash is blocked by [src]'s shield!"), @@ -152,7 +150,6 @@ spark_system.start(src) playsound(loc, "alien_claw_metal", 25, TRUE) - /mob/living/carbon/xenomorph/attack_alien_harm(mob/living/carbon/xenomorph/X, dam_bonus, set_location = FALSE, random_location = FALSE, no_head = FALSE, no_crit = FALSE, force_intent = null) if(issamexenohive(X)) X.visible_message(span_warning("\The [X] nibbles [src]."), @@ -160,7 +157,6 @@ return FALSE return ..() - /mob/living/carbon/human/attack_alien_harm(mob/living/carbon/xenomorph/X, dam_bonus, set_location = FALSE, random_location = FALSE, no_head = FALSE, no_crit = FALSE, force_intent = null) if(isnestedhost(src) && stat != DEAD) //No more memeing nested and infected hosts @@ -186,14 +182,11 @@ to_chat(X, span_warning("[src] is dead, why would we want to touch it?")) return FALSE -//RUTGMC EDIT ADDITION BEGIN - Preds if(isyautja(src) && check_pred_shields(X.xeno_caste.melee_damage * X.xeno_melee_damage_modifier + dam_bonus, backside_attack = dir == get_dir(get_turf(X), get_turf(src)), xenomorph = TRUE)) return FALSE -//RUTGMC EDIT ADDITION END SEND_SIGNAL(X, COMSIG_XENOMORPH_ATTACK_HUMAN, src) -//RUTGMC EDIT ADDITION BEGIN - Preds if(wear_mask && X.zone_selected == "head" && istype(wear_mask, /obj/item/clothing/mask/gas/yautja) && prob(5)) playsound(loc, "alien_claw_metal", 25, 1) X.visible_message(span_danger("The [X] smashes off [src]'s [wear_mask.name]!"), \ @@ -204,43 +197,42 @@ else emote("scream") return TRUE -//RUTGMC EDIT ADDITION END . = ..() if(!.) return FALSE //Every other type of nonhuman mob //MARKER OVERRIDE -/mob/living/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/mob/living/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - if (X.fortify || X.behemoth_charging) + if (xeno_attacker.fortify || xeno_attacker.behemoth_charging) return FALSE - SEND_SIGNAL(X, COMSIG_XENOMORPH_ATTACK_LIVING, src, damage_amount, X.xeno_caste.melee_damage * X.xeno_melee_damage_modifier) + SEND_SIGNAL(xeno_attacker, COMSIG_XENOMORPH_ATTACK_LIVING, src, damage_amount, xeno_attacker.xeno_caste.melee_damage * xeno_attacker.xeno_melee_damage_modifier) - switch(X.a_intent) + switch(xeno_attacker.a_intent) if(INTENT_HELP) if(on_fire) - X.visible_message(span_danger("[X] stares at [src]."), span_notice("We stare at the roasting [src], toasty."), null, 5) + xeno_attacker.visible_message(span_danger("[xeno_attacker] stares at [src]."), span_notice("We stare at the roasting [src], toasty."), null, 5) return FALSE - X.visible_message(span_notice("\The [X] caresses [src] with its scythe-like arm."), \ + xeno_attacker.visible_message(span_notice("\The [xeno_attacker] caresses [src] with its scythe-like arm."), \ span_notice("We caress [src] with our scythe-like arm."), null, 5) return FALSE if(INTENT_GRAB) - return attack_alien_grab(X) + return attack_alien_grab(xeno_attacker) if(INTENT_HARM, INTENT_DISARM) - return attack_alien_harm(X) + return attack_alien_harm(xeno_attacker) return FALSE /mob/living/attack_larva(mob/living/carbon/xenomorph/larva/M) M.visible_message(span_danger("[M] nudges its head against [src]."), \ span_danger("We nudge our head against [src]."), null, 5) -/mob/living/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/mob/living/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(F.status_flags & INCORPOREAL) return FALSE switch(F.a_intent) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm b/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm index a03a57f740e..1bed20235ac 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm @@ -51,7 +51,7 @@ if(ishuman(living_target) && (angle_to_dir(Get_Angle(caster.throw_source, living_target)) in reverse_nearby_direction(living_target.dir))) var/mob/living/carbon/human/human_target = living_target - if(!human_target.check_shields(COMBAT_TOUCH_ATTACK, 30, "melee")) + if(!human_target.check_shields(COMBAT_TOUCH_ATTACK, 30, MELEE)) caster.Paralyze(HUGGER_POUNCE_SHIELD_STUN_DURATION) caster.set_throwing(FALSE) //Reset throwing manually. playsound(caster, 'sound/machines/bonk.ogg', 50, FALSE) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm b/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm index efc73cfe8be..9bfba85b2a0 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/gorger/abilities_gorger.dm @@ -125,18 +125,6 @@ to_chat(owner_xeno, span_xenowarning("No need, we feel sated for now...")) return FALSE -#define DO_DRAIN_ACTION(owner_xeno, target_human) \ - owner_xeno.do_attack_animation(target_human, ATTACK_EFFECT_REDSTAB);\ - owner_xeno.visible_message(target_human, span_danger("[owner_xeno] stabs its tail into [target_human]!"));\ - playsound(target_human, "alien_claw_flesh", 25, TRUE);\ - target_human.emote("scream");\ - target_human.apply_damage(damage = 4, damagetype = BRUTE, def_zone = BODY_ZONE_HEAD, blocked = 0, sharp = TRUE, edge = FALSE, updating_health = TRUE);\ -\ - var/drain_healing = GORGER_DRAIN_HEAL;\ - HEAL_XENO_DAMAGE(owner_xeno, drain_healing, TRUE);\ - adjustOverheal(owner_xeno, drain_healing);\ - owner_xeno.gain_plasma(owner_xeno.xeno_caste.drain_plasma_gain) - /datum/action/ability/activable/xeno/drain/use_ability(mob/living/carbon/human/target_human) var/mob/living/carbon/xenomorph/owner_xeno = owner if(target_human.stat == DEAD) @@ -155,14 +143,22 @@ if(!do_after(owner_xeno, GORGER_DRAIN_DELAY, IGNORE_HELD_ITEM, target_human)) break target_human.blood_volume = max(target_human.blood_volume - 15, 0) - DO_DRAIN_ACTION(owner_xeno, target_human) + + owner_xeno.do_attack_animation(target_human, ATTACK_EFFECT_REDSTAB) + owner_xeno.visible_message(target_human, span_danger("[owner_xeno] stabs its tail into [target_human]!")) + playsound(target_human, "alien_claw_flesh", 25, TRUE) + target_human.emote("scream") + target_human.apply_damage(damage = 4, damagetype = BRUTE, def_zone = BODY_ZONE_HEAD, blocked = 0, sharp = TRUE, edge = FALSE, updating_health = TRUE) + + var/drain_heal = GORGER_DRAIN_HEAL + HEAL_XENO_DAMAGE(owner_xeno, drain_heal, TRUE) // this define shitcoded proc errors if we have a define inside of a define + adjustOverheal(owner_xeno, drain_heal) + owner_xeno.gain_plasma(owner_xeno.xeno_caste.drain_plasma_gain) REMOVE_TRAIT(owner_xeno, TRAIT_HANDS_BLOCKED, src) target_human.blur_eyes(1) add_cooldown() -#undef DO_DRAIN_ACTION - /datum/action/ability/activable/xeno/drain/ai_should_use(atom/target) return can_use_ability(target, TRUE) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm b/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm index ed91d311059..f84625dfc0a 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm @@ -94,7 +94,6 @@ qdel(hive_core) return ..() - /mob/living/carbon/xenomorph/hivemind/on_death() var/obj/structure/xeno/hivemindcore/hive_core = get_core() if(!QDELETED(hive_core)) @@ -357,14 +356,14 @@ //hivemind cores -/obj/structure/xeno/hivemindcore/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(isxenoqueen(X)) - var/choice = tgui_alert(X, "Are you sure you want to destroy the hivemind?", "Destroy hivemind", list("Yes", "Cancel")) +/obj/structure/xeno/hivemindcore/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(isxenoqueen(xeno_attacker)) + var/choice = tgui_alert(xeno_attacker, "Are you sure you want to destroy the hivemind?", "Destroy hivemind", list("Yes", "Cancel")) if(choice == "Yes") deconstruct(FALSE) return - X.visible_message(span_danger("[X] nudges its head against [src]."), \ + xeno_attacker.visible_message(span_danger("[xeno_attacker] nudges its head against [src]."), \ span_danger("You nudge your head against [src].")) /obj/structure/xeno/hivemindcore/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm b/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm index 49190f5f764..ce9c339e5af 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm @@ -354,7 +354,7 @@ var/mob/living/carbon/xenomorph/xeno_owner = owner if(ishuman(living_target) && (angle_to_dir(Get_Angle(xeno_owner.throw_source, living_target)) in reverse_nearby_direction(living_target.dir))) var/mob/living/carbon/human/human_target = living_target - if(!human_target.check_shields(COMBAT_TOUCH_ATTACK, 30, "melee")) + if(!human_target.check_shields(COMBAT_TOUCH_ATTACK, 30, MELEE)) xeno_owner.Paralyze(XENO_POUNCE_SHIELD_STUN_DURATION) xeno_owner.set_throwing(FALSE) playsound(xeno_owner, 'sound/machines/bonk.ogg', 50, FALSE) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/spiderling/spiderling.dm b/code/modules/mob/living/carbon/xenomorph/castes/spiderling/spiderling.dm index f2ecf279d0e..c1952454be3 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/spiderling/spiderling.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/spiderling/spiderling.dm @@ -50,7 +50,7 @@ return ..() ///If we're covering our widow, any clicks should be transferred to them -/mob/living/carbon/xenomorph/spiderling/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/mob/living/carbon/xenomorph/spiderling/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) if(!get_dist(src, spidermother) && isxeno(x)) spidermother.attack_alien(X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) return diff --git a/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm b/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm index 73e8dade2c2..e402616164a 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm @@ -108,7 +108,7 @@ return COMPONENT_MOVABLE_BLOCK_PRE_MOVE /// This is so that xenos can remove leash balls -/obj/structure/xeno/aoe_leash/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/structure/xeno/aoe_leash/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(X.status_flags & INCORPOREAL) return X.visible_message(span_xenonotice("\The [X] starts tearing down \the [src]!"), \ diff --git a/code/modules/mob/living/carbon/xenomorph/egg.dm b/code/modules/mob/living/carbon/xenomorph/egg.dm index 24efd97544d..9361503d680 100644 --- a/code/modules/mob/living/carbon/xenomorph/egg.dm +++ b/code/modules/mob/living/carbon/xenomorph/egg.dm @@ -173,7 +173,7 @@ hugger_type = null hugger.go_active() -/obj/alien/egg/hugger/attack_alien(mob/living/carbon/xenomorph/xenomorph, damage_amount = xenomorph.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/alien/egg/hugger/attack_alien(mob/living/carbon/xenomorph/xenomorph, damage_amount = xenomorph.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(xenomorph.status_flags & INCORPOREAL) return FALSE @@ -288,7 +288,7 @@ NS.set_up(spread, get_turf(src)) NS.start() -/obj/alien/egg/gas/attack_alien(mob/living/carbon/xenomorph/xenomorph, damage_amount = xenomorph.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/alien/egg/gas/attack_alien(mob/living/carbon/xenomorph/xenomorph, damage_amount = xenomorph.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(maturity_stage > stage_ready_to_burst) xenomorph.visible_message(span_xenonotice("\The [xenomorph] clears the hatched egg."), \ span_xenonotice("We clear the broken egg.")) diff --git a/code/modules/mob/living/carbon/xenomorph/facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/facehuggers.dm index a32a82a5af2..7de6a01cac9 100644 --- a/code/modules/mob/living/carbon/xenomorph/facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/facehuggers.dm @@ -27,7 +27,6 @@ worn_layer = FACEHUGGER_LAYER layer = FACEHUGGER_LAYER pass_flags = PASS_XENO - ///Whether the hugger is dead, active or inactive var/stat = CONSCIOUS ///"Freezes" the hugger in for example, eggs @@ -63,7 +62,6 @@ ///Time to become active after moving into the facehugger's space. var/proximity_time = 0.75 SECONDS - /obj/item/clothing/mask/facehugger/Initialize(mapload, input_hivenumber, input_source) . = ..() if(stat == CONSCIOUS) @@ -115,20 +113,19 @@ else icon_state = "[initial(icon_state)]" - //Deal with picking up facehuggers. "attack_alien" is the universal 'xenos click something while unarmed' proc. -/obj/item/clothing/mask/facehugger/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/item/clothing/mask/facehugger/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return - if(!issamexenohive(X) && stat != DEAD) - X.do_attack_animation(src, ATTACK_EFFECT_SMASH) - X.visible_message("[X] crushes \the [src]", - "We crush \the [src]") + if(!issamexenohive(xeno_attacker) && stat != DEAD) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_SMASH) + xeno_attacker.visible_message(span_xenowarning("[xeno_attacker] crushes \the [src]"), + span_xenowarning("We crush \the [src]")) kill_hugger() return else - attack_hand(X) + attack_hand(xeno_attacker) //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/clothing/mask/facehugger/attack_hand(mob/living/user) @@ -474,7 +471,6 @@ ///////////////////////////// // ATTACHING AND IMPREGNATION ////////////////////////////// -//RUTGMC EDIT BEGIN - Moved to modular_RUtgmc\code\modules\mob\living\carbon\xenomorph\facehuggers.dm /obj/item/clothing/mask/facehugger/proc/Attach(mob/living/carbon/M, can_catch = TRUE) set_throwing(FALSE) @@ -559,13 +555,11 @@ reset_attach_status(FALSE) return if(ishuman(user)) -//RUTGMC EDIT ADDITION BEGIN - Preds var/hugsound if(isyautja(user)) hugsound = get_sfx("pred_hugged") else hugsound = user.gender == FEMALE ? get_sfx("female_hugged") : get_sfx("male_hugged") -//RUTGMC EDIT ADDITION END playsound(loc, hugsound, 25, 0) if(!sterile && !issynth(user)) var/stamina_dmg = user.maxHealth + user.max_stamina @@ -589,14 +583,12 @@ if(source?.client) var/datum/personal_statistics/personal_statistics = GLOB.personal_statistics_list[source.ckey] personal_statistics.impregnations++ -//RUTGMC EDIT ADDITION BEGIN - Preds if(isyautja(target)) var/datum/hive_status/hive = GLOB.hive_datums[embryo.hivenumber] if(!istype(hive)) return hive.max_thick_nests++ xeno_message("The hive senses that a headhunter has been infected! The thick resin nest is now available in the mother's blessing!", hivenumber = hive.hivenumber) -//RUTGMC EDIT ADDITION END sterile = TRUE kill_hugger() else @@ -615,7 +607,6 @@ if(isxenofacehugger(source) && as_planned) dropped(target) - /obj/item/clothing/mask/facehugger/proc/kill_hugger(melt_timer = 1 MINUTES) reset_attach_status() @@ -694,7 +685,6 @@ source.death() qdel(src) - ///////////////////////////// // SUBTYPES ///////////////////////////// @@ -706,7 +696,6 @@ . = ..() update_icon() - /obj/item/clothing/mask/facehugger/dead desc = "It has some sort of a tube at the end of its tail. What the hell is this thing?" name = "????" @@ -717,7 +706,6 @@ . = ..() update_icon() - /obj/item/clothing/mask/facehugger/larval name = "larval hugger" @@ -727,7 +715,6 @@ combat_hugger = TRUE flags_equip_slot = NONE - /obj/item/clothing/mask/facehugger/combat/neuro name = "neuro hugger" desc = "This strange creature has a single prominent sharp proboscis." @@ -773,7 +760,6 @@ if(!locate(/obj/effect/xenomorph/spray) in acid_tile.contents) new /obj/effect/xenomorph/spray(acid_tile, 6 SECONDS, 16) - var/datum/effect_system/smoke_spread/xeno/acid/light/A = new(get_turf(src)) //Spawn acid smoke A.set_up(1,src) A.start() @@ -781,7 +767,6 @@ return TRUE - /obj/item/clothing/mask/facehugger/combat/resin name = "resin hugger" desc = "This truly bizzare, bloated creature drips with purple, viscous resin." @@ -814,7 +799,6 @@ return TRUE - /obj/item/clothing/mask/facehugger/combat/slash name = "clawed hugger" desc = "This nasty little creature is a nightmarish scrabble of muscle and sharp, long claws." @@ -850,7 +834,6 @@ var/mob/living/carbon/xenomorph/X = M if(hivenumber == X.hive.hivenumber) //No friendly fire return FALSE - return TRUE #undef FACEHUGGER_DEATH diff --git a/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm b/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm index 1d4795b3b32..23a82232944 100644 --- a/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm +++ b/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm @@ -17,7 +17,6 @@ UPDATEHEALTH(src) log_combat(S, src, "attacked") - /mob/living/carbon/xenomorph/attack_hand(mob/living/user) . = ..() if(.) @@ -66,48 +65,47 @@ visible_message(span_danger("[H] [pick(attack.attack_verb)]ed [src]!"), null, null, 5) apply_damage(melee_damage + attack.damage, BRUTE, blocked = MELEE, updating_health = TRUE) - //Hot hot Aliens on Aliens action. //Actually just used for eating people. -/mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(status_flags & INCORPOREAL || X.status_flags & INCORPOREAL) //Incorporeal xenos cannot attack or be attacked +/mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(status_flags & INCORPOREAL || xeno_attacker.status_flags & INCORPOREAL) //Incorporeal xenos cannot attack or be attacked return - if(src == X) + if(src == xeno_attacker) return TRUE - if(isxenolarva(X)) //Larvas can't eat people - X.visible_message(span_danger("[X] nudges its head against \the [src]."), \ + if(isxenolarva(xeno_attacker)) //Larvas can't eat people + xeno_attacker.visible_message(span_danger("[xeno_attacker] nudges its head against \the [src]."), \ span_danger("We nudge our head against \the [src].")) return FALSE - switch(X.a_intent) + switch(xeno_attacker.a_intent) if(INTENT_HELP) if(on_fire) fire_stacks = max(fire_stacks - 1, 0) playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) - X.visible_message(span_danger("[X] tries to put out the fire on [src]!"), \ + xeno_attacker.visible_message(span_danger("[xeno_attacker] tries to put out the fire on [src]!"), \ span_warning("We try to put out the fire on [src]!"), null, 5) if(fire_stacks <= 0) - X.visible_message(span_danger("[X] has successfully extinguished the fire on [src]!"), \ + xeno_attacker.visible_message(span_danger("[xeno_attacker] has successfully extinguished the fire on [src]!"), \ span_notice("We extinguished the fire on [src]."), null, 5) ExtinguishMob() return TRUE - X.visible_message(span_notice("\The [X] caresses \the [src] with its scythe-like arm."), \ + xeno_attacker.visible_message(span_notice("\The [xeno_attacker] caresses \the [src] with its scythe-like arm."), \ span_notice("We caress \the [src] with our scythe-like arm."), null, 5) if(INTENT_DISARM) - X.do_attack_animation(src, ATTACK_EFFECT_DISARM) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_DISARM) playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) - if(!issamexenohive(X)) + if(!issamexenohive(xeno_attacker)) return FALSE - if(X.tier != XENO_TIER_FOUR && !X.queen_chosen_lead) + if(xeno_attacker.tier != XENO_TIER_FOUR && !xeno_attacker.queen_chosen_lead) return FALSE - if((isxenoqueen(src) || queen_chosen_lead) && !isxenoqueen(X)) + if((isxenoqueen(src) || queen_chosen_lead) && !isxenoqueen(xeno_attacker)) return FALSE - X.visible_message("\The [X] shoves \the [src] out of her way!", \ + xeno_attacker.visible_message("\The [xeno_attacker] shoves \the [src] out of her way!", \ span_warning("You shove \the [src] out of your way!"), null, 5) apply_effect(1 SECONDS, WEAKEN) return TRUE @@ -115,34 +113,34 @@ if(INTENT_GRAB) if(anchored) return FALSE - if(!X.start_pulling(src)) + if(!xeno_attacker.start_pulling(src)) return FALSE - X.visible_message(span_warning("[X] grabs \the [src]!"), \ + xeno_attacker.visible_message(span_warning("[xeno_attacker] grabs \the [src]!"), \ span_warning("We grab \the [src]!"), null, 5) playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) if(INTENT_HARM)//Can't slash other xenos for now. SORRY // You can now! --spookydonut - if(issamexenohive(X) && !HAS_TRAIT(src, TRAIT_BANISHED)) - X.do_attack_animation(src) - X.visible_message(span_warning("\The [X] nibbles \the [src]."), \ + if(issamexenohive(xeno_attacker) && !HAS_TRAIT(src, TRAIT_BANISHED)) + xeno_attacker.do_attack_animation(src) + xeno_attacker.visible_message(span_warning("\The [xeno_attacker] nibbles \the [src]."), \ span_warning("We nibble \the [src]."), null, 5) return TRUE // copypasted from attack_alien.dm //From this point, we are certain a full attack will go out. Calculate damage and modifiers - var/damage = X.xeno_caste.melee_damage + var/damage = xeno_attacker.xeno_caste.melee_damage //Somehow we will deal no damage on this attack if(!damage) - X.do_attack_animation(src) - playsound(X.loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1) - X.visible_message(span_danger("\The [X] lunges at [src]!"), \ + xeno_attacker.do_attack_animation(src) + playsound(xeno_attacker.loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1) + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] lunges at [src]!"), \ span_danger("We lunge at [src]!"), null, 5) return FALSE - X.visible_message(span_danger("\The [X] slashes [src]!"), \ + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] slashes [src]!"), \ span_danger("We slash [src]!"), null, 5) - log_combat(X, src, "slashed") + log_combat(xeno_attacker, src, "slashed") - X.do_attack_animation(src, ATTACK_EFFECT_REDSLASH) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_REDSLASH) playsound(loc, "alien_claw_flesh", 25, 1) apply_damage(damage, BRUTE, blocked = MELEE, updating_health = TRUE) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 8fdd40846c2..c4300144f6c 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -217,7 +217,7 @@ S.reagents?.reaction(src, TOUCH, S.fraction) return protection -/mob/living/proc/check_shields(attack_type, damage, damage_type = "melee", silent, penetration = 0) +/mob/living/proc/check_shields(attack_type, damage, damage_type = MELEE, silent, penetration = 0) if(!damage) stack_trace("check_shields called without a damage value") return 0 diff --git a/code/modules/mob/living/simple_animal/friendly/parrot.dm b/code/modules/mob/living/simple_animal/friendly/parrot.dm index cf94b7f4e53..5c7776c7e88 100644 --- a/code/modules/mob/living/simple_animal/friendly/parrot.dm +++ b/code/modules/mob/living/simple_animal/friendly/parrot.dm @@ -6,9 +6,7 @@ #define PARROT_RETURN (1<<5) //Flying towards its perch #define PARROT_FLEE (1<<6) //Flying away from its attacker -GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( - /datum/strippable_item/parrot_headset -))) +GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list(/datum/strippable_item/parrot_headset))) /mob/living/simple_animal/parrot name = "parrot" @@ -71,7 +69,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( /obj/machinery/recharge_station, /obj/machinery/smartfridge, /obj/machinery/suit_storage_unit) var/obj/item/held_item = null - /mob/living/simple_animal/parrot/Initialize(mapload) . = ..() if(!ears) @@ -94,12 +91,10 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( return ..() - /mob/living/simple_animal/parrot/get_status_tab_items() . = ..() . += "Held Item: [held_item]" - /mob/living/simple_animal/parrot/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) . = ..() if(speaker != src && prob(50)) //Dont imitate ourselves @@ -110,7 +105,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( if(speaker == src && !client) //If a parrot squawks in the woods and no one is around to hear it, does it make a sound? This code says yes! return message - /mob/living/simple_animal/parrot/radio(message, message_mode, list/spans, language) //literally copied from human/radio(), but there's no other way to do this. at least it's better than it used to be. . = ..() if(. != 0) @@ -156,9 +150,8 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( if(stat != DEAD && user.a_intent == INTENT_HELP) handle_automated_speech(1) //assured speak/emote -/mob/living/simple_animal/parrot/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - return attack_hand(X) - +/mob/living/simple_animal/parrot/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + return attack_hand(xeno_attacker) /mob/living/simple_animal/parrot/attack_animal(mob/living/simple_animal/M) . = ..() //goodbye immortal parrots @@ -174,7 +167,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless icon_state = icon_living - /mob/living/simple_animal/parrot/bullet_act(obj/projectile/Proj) . = ..() if(!stat && !client) @@ -187,7 +179,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( icon_state = icon_living drop_held_item(0) - /mob/living/simple_animal/parrot/Life() . = ..() @@ -198,16 +189,13 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( pixel_x = initial(pixel_x) pixel_y = initial(pixel_y) - /mob/living/simple_animal/parrot/handle_automated_speech() . = ..() if(length(speech_buffer) && prob(speech_shuffle_rate)) //shuffle out a phrase and add in a new one if(length(speak)) speak -= pick(speak) - speak += pick(speech_buffer) - /mob/living/simple_animal/parrot/handle_automated_movement() if(!isturf(loc) || !canmove || buckled) return @@ -256,7 +244,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( newspeak.Add(possible_phrase) speak = newspeak - else if(parrot_state == PARROT_WANDER) //Stop movement, we'll set it later walk(src, 0) @@ -317,7 +304,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( walk_to(src, parrot_interest, 1, parrot_speed) - else if(parrot_state == (PARROT_SWOOP|PARROT_RETURN)) walk(src, 0) if(!parrot_perch || !isturf(parrot_perch.loc)) //Make sure the perch exists and somehow isnt inside of something else. @@ -354,7 +340,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( melee_damage = parrot_damage_upper a_intent = INTENT_HARM - if(!Adjacent(parrot_interest)) walk_to(src, parrot_interest, 1, parrot_speed) return @@ -380,7 +365,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( drop_held_item() parrot_state = PARROT_WANDER - /mob/living/simple_animal/parrot/proc/steal_from_ground() for(var/obj/item/I in view(1, src)) //Make sure we're not already holding it and it's small enough @@ -403,7 +387,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( return O return null - //This proc was made to save on doing two 'in view' loops seperatly /mob/living/simple_animal/parrot/proc/search_for_perch_and_item() for(var/atom/movable/AM in view(src)) @@ -419,10 +402,8 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( var/obj/item/I = AM if(I.w_class <= WEIGHT_CLASS_SMALL) return I - return null - /mob/living/simple_animal/parrot/Moved(oldLoc, dir) . = ..() if(. && !stat && client && parrot_state == PARROT_PERCH) @@ -431,7 +412,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( pixel_x = initial(pixel_x) pixel_y = initial(pixel_y) - /mob/living/simple_animal/parrot/Poly name = "Poly" desc = "Poly the Parrot. An expert on quantum cracker theory." @@ -440,7 +420,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( voice_filter = "rubberband=pitch=1.5" var/memory_saved = FALSE - /mob/living/simple_animal/parrot/Poly/Initialize(mapload) ears = new /obj/item/radio/headset/mainship/st(src) available_channels = list(RADIO_TOKEN_ENGINEERING) @@ -456,14 +435,12 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( voice_filter = "rubberband=pitch=1.5" // Use the filter to pitch up if we can't naturally pitch up. return ..() - /mob/living/simple_animal/parrot/Poly/Life() if(!stat && SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) Write_Memory(FALSE) memory_saved = TRUE return ..() - /mob/living/simple_animal/parrot/Poly/on_death() if(!memory_saved) Write_Memory(TRUE) @@ -475,7 +452,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( G.key = key return ..() - /mob/living/simple_animal/parrot/Poly/proc/Read_Memory() if(fexists("data/npc_saves/Poly.sav")) //legacy compatability to convert old format to new var/savefile/S = new /savefile("data/npc_saves/Poly.sav") @@ -490,7 +466,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( if(!islist(speech_buffer)) speech_buffer = list() - /mob/living/simple_animal/parrot/Poly/proc/Write_Memory(dead) var/json_file = file("data/npc_saves/Poly.json") var/list/file_data = list() @@ -499,7 +474,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) - /mob/living/simple_animal/parrot/Poly/ghost name = "The Ghost of Poly" desc = "Doomed to squawk the Earth." @@ -508,18 +482,15 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( status_flags = GODMODE resistance_flags = RESIST_ALL - /mob/living/simple_animal/parrot/Poly/ghost/Initialize(mapload) memory_saved = TRUE return ..() - /mob/living/simple_animal/parrot/Poly/ghost/handle_automated_speech() if(ismob(loc)) return return ..() - /mob/living/simple_animal/parrot/Poly/ghost/handle_automated_movement() if(isliving(parrot_interest)) if(!ishuman(parrot_interest)) @@ -528,7 +499,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( walk_to(src, parrot_interest, 0, parrot_speed) return ..() - /mob/living/simple_animal/parrot/clock_hawk name = "clock hawk" desc = "Cbyl jnaan penpxre! Fdhnnnjx!" @@ -601,7 +571,6 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list( if(RADIO_CHANNEL_DELTA) parrot_source.available_channels.Add(RADIO_TOKEN_DELTA) - /datum/strippable_item/parrot_headset/start_unequip(atom/source, mob/user) . = ..() if(!.) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index cc91d83a31e..15789f4e7f1 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -61,7 +61,6 @@ if(speed) update_simplemob_varspeed() - /mob/living/simple_animal/Destroy() GLOB.simple_animals[AIStatus] -= src @@ -74,12 +73,10 @@ return ..() - /mob/living/simple_animal/updatehealth() . = ..() health = clamp(health, 0, maxHealth) - /mob/living/simple_animal/update_stat() if(status_flags & GODMODE) return @@ -90,7 +87,6 @@ set_stat(CONSCIOUS) med_hud_set_status() - /mob/living/simple_animal/revive(admin_revive = FALSE) . = ..() icon = initial(icon) @@ -98,31 +94,24 @@ density = initial(density) set_resting(FALSE) - /mob/living/simple_animal/blind_eyes() return - /mob/living/simple_animal/adjust_blindness() return - /mob/living/simple_animal/set_blindness() return - /mob/living/simple_animal/blur_eyes() return - /mob/living/simple_animal/adjust_blurriness() return - /mob/living/simple_animal/set_blurriness() return - /mob/living/simple_animal/death(gibbing, deathmessage, silent) if(stat == DEAD) return ..() @@ -131,7 +120,6 @@ silent = TRUE //No need to for the parent to deathmessage again. return ..() - /mob/living/simple_animal/on_death() health = 0 icon_state = icon_dead @@ -143,24 +131,20 @@ if(del_on_death && !QDELETED(src)) qdel(src) - /mob/living/simple_animal/gib_animation() if(!icon_gib) return new /obj/effect/overlay/temp/gib_animation/animal(loc, 0, src, icon_gib) - /mob/living/simple_animal/proc/set_varspeed(var_value) speed = var_value update_simplemob_varspeed() - /mob/living/simple_animal/proc/update_simplemob_varspeed() if(speed == 0) remove_movespeed_modifier(MOVESPEED_ID_SIMPLEMOB_VARSPEED, TRUE) add_movespeed_modifier(MOVESPEED_ID_SIMPLEMOB_VARSPEED, TRUE, 100, multiplicative_slowdown = speed, override = TRUE) - /mob/living/simple_animal/update_transform() var/matrix/ntransform = matrix(transform) //aka transform.Copy() var/changed = FALSE @@ -196,31 +180,28 @@ log_combat(user, src, "attacked") return TRUE - -/mob/living/simple_animal/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/mob/living/simple_animal/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) . = ..() if(!.) return - if(X.a_intent == INTENT_DISARM) + if(xeno_attacker.a_intent == INTENT_DISARM) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) - visible_message(span_danger("[X] [response_disarm] [name]!"), \ - span_userdanger("[X] [response_disarm] [name]!")) - log_combat(X, src, "disarmed") + visible_message(span_danger("[xeno_attacker] [response_disarm] [name]!"), \ + span_userdanger("[xeno_attacker] [response_disarm] [name]!")) + log_combat(xeno_attacker, src, "disarmed") else var/damage = rand(15, 30) - visible_message(span_danger("[X] has slashed at [src]!"), \ - span_userdanger("[X] has slashed at [src]!")) + visible_message(span_danger("[xeno_attacker] has slashed at [src]!"), \ + span_userdanger("[xeno_attacker] has slashed at [src]!")) playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) attack_threshold_check(damage) - log_combat(X, src, "attacked") + log_combat(xeno_attacker, src, "attacked") return TRUE - /mob/living/simple_animal/get_status_tab_items() . = ..() . += "Health: [round((health / maxHealth) * 100)]%" - /mob/living/simple_animal/ex_act(severity) flash_act() @@ -231,18 +212,15 @@ adjustBruteLoss(severity / 3) UPDATEHEALTH(src) - /mob/living/simple_animal/get_idcard(hand_first) return access_card - /mob/living/simple_animal/say_mod(input, message_mode, datum/language/language) if(length(speak_emote)) verb_say = pick(speak_emote) return ..() - -/mob/living/simple_animal/proc/attack_threshold_check(damage, damagetype = BRUTE, armorcheck = "melee") +/mob/living/simple_animal/proc/attack_threshold_check(damage, damagetype = BRUTE, armorcheck = MELEE) var/temp_damage = damage if(!damage_coeff[damagetype]) temp_damage = 0 @@ -257,7 +235,6 @@ UPDATEHEALTH(src) return TRUE - /mob/living/simple_animal/proc/toggle_ai(togglestatus) if(!can_have_ai && (togglestatus != AI_OFF)) return @@ -275,14 +252,12 @@ else stack_trace("Something attempted to set simple animals AI to an invalid state: [togglestatus]") - /mob/living/simple_animal/onTransitZ(old_z, new_z) . = ..() if(AIStatus == AI_Z_OFF) SSidlenpcpool.idle_mobs_by_zlevel[old_z] -= src toggle_ai(initial(AIStatus)) - /mob/living/simple_animal/proc/handle_automated_action() set waitfor = FALSE return @@ -300,7 +275,6 @@ turns_since_move = 0 return TRUE - /mob/living/simple_animal/proc/handle_automated_speech(override) set waitfor = FALSE if(speak_chance) @@ -336,7 +310,6 @@ else emote("me", 2, pick(emote_hear)) - /mob/living/simple_animal/proc/CanAttack(atom/the_target) if(see_invisible < the_target.invisibility) return FALSE @@ -350,12 +323,10 @@ return FALSE return TRUE - /mob/living/simple_animal/proc/consider_wakeup() if(pulledby || shouldwakeup) toggle_ai(AI_ON) - /mob/living/simple_animal/proc/adjustHealth(amount, updating_health = TRUE, forced = FALSE) if(!forced && (status_flags & GODMODE)) return FALSE diff --git a/code/modules/organs/limbs.dm b/code/modules/organs/limbs.dm index a50d8fc5044..556040c27cb 100644 --- a/code/modules/organs/limbs.dm +++ b/code/modules/organs/limbs.dm @@ -1137,15 +1137,15 @@ Note that amputating the affected organ does in fact remove the infection from t /datum/limb/head/take_damage_limb(brute, burn, sharp, edge, blocked = 0, updating_health = FALSE, list/forbidden_limbs = list()) . = ..() - if (!disfigured) - if (brute_dam > 40) - if (prob(50)) + if(!disfigured) + if(brute_dam > 40) + if(prob(50)) disfigure(BRUTE) - if (burn_dam > 40) - disfigure("burn") + if(burn_dam > 40) + disfigure(BURN) /datum/limb/head/proc/disfigure(type = BRUTE) - if (disfigured) + if(disfigured) return if(type == BRUTE) owner.visible_message(span_warning(" You hear a sickening cracking sound coming from \the [owner]'s face."), \ diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 97519ad9e13..5327936f159 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -23,7 +23,6 @@ //May be opened to change power cell //Three different channels (lighting/equipment/environ) - may each be set to on, off, or auto - /obj/machinery/power/apc name = "area power controller" desc = "A control terminal for the area electrical systems." @@ -144,7 +143,6 @@ cell.charge = start_charge * cell.maxcharge / 100.0 //Convert percentage to actual value cell.update_icon() - make_terminal() update() //areas should be lit on startup @@ -176,13 +174,11 @@ if(cell) RegisterSignal(cell, COMSIG_QDELETING, PROC_REF(on_cell_deletion)) - ///Called by the deletion of the referenced powercell. /obj/machinery/power/apc/proc/on_cell_deletion(obj/item/cell/source, force) SIGNAL_HANDLER set_cell(null) - /obj/machinery/power/apc/proc/make_terminal() //Create a terminal object at the same position as original turf loc //Wires will attach to this @@ -326,13 +322,13 @@ /obj/machinery/power/apc/proc/queue_icon_update() updating_icon = TRUE -/obj/machinery/power/apc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/power/apc/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE if(effects) - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - X.visible_message(span_danger("[X] slashes \the [src]!"), \ + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + xeno_attacker.visible_message(span_danger("[xeno_attacker] slashes \the [src]!"), \ span_danger("We slash \the [src]!"), null, 5) playsound(loc, "alien_claw_metal", 25, 1) @@ -347,8 +343,8 @@ wires.cut_all() update_icon() visible_message(span_danger("\The [src]'s wires snap apart in a rain of sparks!"), null, null, 5) - if(X.client) - var/datum/personal_statistics/personal_statistics = GLOB.personal_statistics_list[X.ckey] + if(xeno_attacker.client) + var/datum/personal_statistics/personal_statistics = GLOB.personal_statistics_list[xeno_attacker.ckey] personal_statistics.apcs_slashed++ else beenhit += 1 @@ -377,8 +373,8 @@ return set_cell(I) - user.visible_message("[user] inserts [I] into [src]!", - "You insert [I] into [src]!") + user.visible_message(span_notice("[user] inserts [I] into [src]!"), + span_notice("You insert [I] into [src]!")) chargecount = 0 update_icon() @@ -524,7 +520,6 @@ return attack_hand(user) balloon_alert_to_viewers("Hits [src] with [I]") - /obj/machinery/power/apc/crowbar_act(mob/user, obj/item/I) . = TRUE if(opened) @@ -566,7 +561,6 @@ update_icon() return - /obj/machinery/power/apc/screwdriver_act(mob/living/user, obj/item/I) . = ..() if(.) @@ -608,13 +602,11 @@ balloon_alert(user, "wires [CHECK_BITFIELD(machine_stat, PANEL_OPEN) ? "exposed" : "unexposed"]") update_icon() - /obj/machinery/power/apc/wirecutter_act(mob/living/user, obj/item/I) if(terminal && opened) terminal.deconstruct(user) return TRUE - /obj/machinery/power/apc/welder_act(mob/living/user, obj/item/I) if(!opened || has_electronics || terminal) return @@ -641,14 +633,12 @@ qdel(src) return TRUE - //Attack with hand - remove cell (if cover open) or interact with the APC /obj/machinery/power/apc/attack_hand(mob/living/user) . = ..() if(.) return -//RUTGMC EDIT ADDITION BEGIN - Preds if(!ishuman(user)) return FALSE var/mob/living/carbon/human/grabber = user @@ -693,7 +683,6 @@ set_broken() // Breaks the APC return TRUE -//RUTGMC EDIT ADDITION END if(opened && cell && !issilicon(user)) if(user.skills.getRating(SKILL_ENGINEER) < SKILL_ENGINEER_ENGI) @@ -714,8 +703,6 @@ interact(user) - - /obj/machinery/power/apc/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) @@ -770,7 +757,6 @@ ) return data - /obj/machinery/power/apc/proc/setsubsystem(val) if(cell?.charge > 0) return (val==1) ? 0 : val @@ -836,7 +822,6 @@ /obj/machinery/power/apc/proc/report() return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" - /obj/machinery/power/apc/proc/update() if(operating && !shorted) area.power_light = (lighting > 1) @@ -848,7 +833,6 @@ area.power_environ = 0 area.power_change() - /obj/machinery/power/apc/proc/reset(wire) switch(wire) if(WIRE_IDSCAN) @@ -871,20 +855,17 @@ else return 0 - /obj/machinery/power/apc/add_load(amount) if(terminal?.powernet) return terminal.add_load(amount) return 0 - /obj/machinery/power/apc/avail() if(terminal) return terminal.avail() else return 0 - /obj/machinery/power/apc/process() if(updating_icon) update_icon() @@ -943,7 +924,6 @@ lighting = autoset(lighting, 0) environ = autoset(environ, 0) - // set channels depending on how much charge we have left // Allow the APC to operate as normal if the cell can charge @@ -1045,7 +1025,6 @@ return 1 return val - /obj/machinery/power/apc/emp_act(severity) if(cell) cell.emp_act(severity) @@ -1057,7 +1036,6 @@ addtimer(CALLBACK(src, PROC_REF(reset), APC_RESET_EMP), 60 SECONDS) return ..() - /obj/machinery/power/apc/ex_act(severity) if(severity >= EXPLODE_HEAVY) qdel(src) @@ -1065,13 +1043,11 @@ set_broken() cell.ex_act(severity) - /obj/machinery/power/apc/proc/set_broken() //Aesthetically much better! visible_message(span_warning("[src]'s screen flickers with warnings briefly!")) addtimer(CALLBACK(src, PROC_REF(do_break)), rand(2, 5)) - /obj/machinery/power/apc/proc/do_break() visible_message(span_danger("[src]'s screen suddenly explodes in rain of sparks and small debris!")) machine_stat |= BROKEN @@ -1079,7 +1055,6 @@ update_icon() update() - //Overload all the lights in this APC area /obj/machinery/power/apc/proc/overload_lighting() if(!operating || shorted) @@ -1088,19 +1063,16 @@ cell.use(20) INVOKE_ASYNC(src, PROC_REF(break_lights)) - /obj/machinery/power/apc/proc/break_lights() for(var/obj/machinery/light/L in get_area(src)) L.broken() stoplag() - /obj/machinery/power/apc/disconnect_terminal() if(terminal) terminal.master = null terminal = null - /obj/machinery/power/apc/proc/toggle_breaker(mob/user) if(machine_stat & (NOPOWER|BROKEN|MAINT)) return @@ -1110,7 +1082,6 @@ update() update_icon() - //------Various APCs ------// // mapping helpers diff --git a/code/modules/power/groundmap_geothermal.dm b/code/modules/power/groundmap_geothermal.dm index 6a5fa16eda4..6e0c52648ab 100644 --- a/code/modules/power/groundmap_geothermal.dm +++ b/code/modules/power/groundmap_geothermal.dm @@ -57,13 +57,11 @@ GLOBAL_VAR_INIT(generators_on_ground, 0) //We don't want to cut/update the power overlays every single proc. Just when it actually changes. This should save on CPU cycles. Efficiency! /obj/machinery/power/geothermal/update_icon() . = ..() - //RUTGMC ADDITION BEGIN SSminimaps.remove_marker(src) if(!corrupted && !is_on) SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, "generator_off")) if(corrupted) SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, "generator_corrupt")) - //RUTGMC ADDITION END switch(buildstate) if(GEOTHERMAL_NO_DAMAGE) if(is_on) @@ -158,26 +156,26 @@ GLOBAL_VAR_INIT(generators_on_ground, 0) return TRUE return FALSE //Nope, all fine -/obj/machinery/power/geothermal/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/machinery/power/geothermal/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) . = ..() if(corrupted) //you have no reason to interact with it if its already corrupted return - if(CHECK_BITFIELD(X.xeno_caste.can_flags, CASTE_CAN_CORRUPT_GENERATOR) && is_corruptible) - to_chat(X, span_notice("You start to corrupt [src]")) - if(!do_after(X, 10 SECONDS, NONE, src, BUSY_ICON_HOSTILE)) + if(CHECK_BITFIELD(xeno_attacker.xeno_caste.can_flags, CASTE_CAN_CORRUPT_GENERATOR) && is_corruptible) + to_chat(xeno_attacker, span_notice("You start to corrupt [src]")) + if(!do_after(xeno_attacker, 10 SECONDS, NONE, src, BUSY_ICON_HOSTILE)) return - corrupt(X.hivenumber) - to_chat(X, span_notice("You have corrupted [src]")) - record_generator_sabotages(X) + corrupt(xeno_attacker.hivenumber) + to_chat(xeno_attacker, span_notice("You have corrupted [src]")) + record_generator_sabotages(xeno_attacker) return if(buildstate) return - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) play_attack_sound(1) - X.visible_message(span_danger("\The [X] slashes at \the [src], tearing at it's components!"), + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] slashes at \the [src], tearing at it's components!"), span_danger("We start slashing at \the [src], tearing at it's components!")) fail_rate += 5 // 5% fail rate every attack - record_generator_sabotages(X) + record_generator_sabotages(xeno_attacker) /obj/machinery/power/geothermal/attack_hand(mob/living/carbon/user) interact_hand(user) @@ -185,7 +183,6 @@ GLOBAL_VAR_INIT(generators_on_ground, 0) /obj/machinery/power/geothermal/attack_ai(mob/living/silicon/ai/user) interact_hand(user) - /obj/machinery/power/geothermal/proc/interact_hand(mob/living/user) if(.) return diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 34c905ad5a4..cf408b666d4 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -1,8 +1,5 @@ // The lighting system -// // consists of light fixtures (/obj/machinery/light) and light tube/bulb items (/obj/item/light) - - // status values shared between lighting fixtures and items /obj/machinery/light_construct name = "light fixture frame" @@ -31,7 +28,6 @@ if(3) . += "The casing is closed." - /obj/machinery/light_construct/attackby(obj/item/I, mob/user, params) . = ..() @@ -109,7 +105,6 @@ newlight.setDir(dir) qdel(src) - /obj/machinery/light_construct/small name = "small light fixture frame" desc = "A small light fixture under construction." @@ -195,7 +190,6 @@ status = LIGHT_EMPTY update(FALSE) - /obj/machinery/light/small/built/Initialize(mapload) . = ..() status = LIGHT_EMPTY @@ -236,7 +230,6 @@ return INITIALIZE_HINT_LATELOAD - /obj/machinery/light/LateInitialize() var/area/A = get_area(src) turn_light(null, (A.lightswitch && A.power_light)) @@ -311,8 +304,6 @@ if(LIGHT_BROKEN) . += "The [fitting] has been smashed." - - // attack with item - insert light (if right type), otherwise try to break the light /obj/machinery/light/attackby(obj/item/I, mob/user, params) @@ -387,7 +378,6 @@ if(prob(75)) electrocute_mob(user, get_area(src), src, rand(7, 10) * 0.1) - // returns whether this light has power // true if area has power and lightswitch is on /obj/machinery/light/proc/has_power() @@ -413,15 +403,14 @@ /obj/machinery/light/attack_ai(mob/user) flicker(1) - //Xenos smashing lights -/obj/machinery/light/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/machinery/light/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return if(status == 2) //Ignore if broken. return FALSE - X.do_attack_animation(src, ATTACK_EFFECT_SMASH) - X.visible_message(span_danger("\The [X] smashes [src]!"), \ + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_SMASH) + xeno_attacker.visible_message(span_danger("\The [xeno_attacker] smashes [src]!"), \ span_danger("We smash [src]!"), null, 5) broken() //Smashola! @@ -631,7 +620,6 @@ icon_state = "[base_state]-broken" desc = "A broken [name]." - /obj/item/light_bulb/Initialize(mapload) . = ..() switch(name) @@ -641,7 +629,6 @@ brightness = rand(4,6) update() - // attack bulb/tube with object // if a syringe, can inject phoron to make it explode /obj/item/light_bulb/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 598cd7880ea..ce344304609 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -30,11 +30,11 @@ record_generator_sabotages(user) return TRUE -/obj/machinery/power/port_gen/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/power/port_gen/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) . = ..() if(!.) return FALSE - record_generator_sabotages(X) + record_generator_sabotages(xeno_attacker) return TRUE /obj/machinery/power/port_gen/should_have_node() diff --git a/code/modules/projectiles/ammo_datums.dm b/code/modules/projectiles/ammo_datums.dm index 63958c4131f..41f9aac8908 100644 --- a/code/modules/projectiles/ammo_datums.dm +++ b/code/modules/projectiles/ammo_datums.dm @@ -60,7 +60,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh ///How far the bullet can travel before incurring a chance of hitting barricades; normally 1. var/barricade_clear_distance = 1 ///Does this have an override for the armor type the ammo should test? Bullet by default - var/armor_type = "bullet" + var/armor_type = BULLET ///How many stacks of sundering to apply to a mob on hit var/sundering = 0 ///how much damage airbursts do to mobs around the target, multiplier of the bullet's damage @@ -1628,7 +1628,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh ping = null //no bounce off. sound_bounce = "rocket_bounce" flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_SUNDERING - armor_type = "bomb" + armor_type = BOMB damage_falloff = 0.5 shell_speed = 2 accurate_range = 12 @@ -2047,7 +2047,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh ping = null //no bounce off. sound_bounce = "rocket_bounce" flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_IFF - armor_type = "bomb" + armor_type = BOMB damage_falloff = 0.5 shell_speed = 2 accurate_range = 12 @@ -2148,7 +2148,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh ping = null //no bounce off. sound_bounce = "rocket_bounce" flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_SUNDERING - armor_type = "bomb" + armor_type = BOMB damage_falloff = 0 shell_speed = 2 accuracy = 40 @@ -2276,7 +2276,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh icon_state = "rocket_wp" hud_state = "rocket_fire" flags_ammo_behavior = AMMO_ROCKET|AMMO_INCENDIARY|AMMO_EXPLOSIVE|AMMO_SUNDERING - armor_type = "fire" + armor_type = FIRE damage_type = BURN accuracy_var_low = 7 accurate_range = 15 @@ -2344,7 +2344,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh hud_state = "shell_he" hud_state_empty = "shell_empty" flags_ammo_behavior = AMMO_EXPLOSIVE|AMMO_ROCKET|AMMO_SUNDERING - armor_type = "bomb" + armor_type = BOMB damage_falloff = 0 shell_speed = 2 accurate_range = 20 @@ -2816,7 +2816,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh damage_type = BURN flags_ammo_behavior = AMMO_ENERGY|AMMO_SOUND_PITCH - armor_type = "energy" + armor_type = ENERGY accuracy = 15 //lasers fly fairly straight bullet_color = COLOR_LASER_RED barricade_clear_distance = 2 @@ -2878,7 +2878,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh name = "laser bolt" icon_state = "laser" hud_state = "laser" - armor_type = "laser" + armor_type = LASER flags_ammo_behavior = AMMO_ENERGY|AMMO_SUNDERING shell_speed = 4 accurate_range = 15 @@ -3466,7 +3466,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh name = "plasma bolt" icon_state = "pulse2" hud_state = "plasma" - armor_type = "laser" + armor_type = LASER shell_speed = 4 accurate_range = 15 damage = 40 @@ -3528,7 +3528,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh hud_state_empty = "battery_empty_flash" flags_ammo_behavior = AMMO_ENERGY|AMMO_SUNDERING|AMMO_SOUND_PITCH bullet_color = COLOR_TAN_ORANGE - armor_type = "energy" + armor_type = ENERGY max_range = 14 accurate_range = 5 //for charger shell_speed = 4 @@ -3587,7 +3587,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh flags_ammo_behavior = AMMO_XENO var/added_spit_delay = 0 //used to make cooldown of the different spits vary. var/spit_cost = 5 - armor_type = "bio" + armor_type = BIO shell_speed = 1 accuracy = 40 accurate_range = 15 @@ -3708,7 +3708,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh ping = null flags_ammo_behavior = AMMO_SKIPS_ALIENS|AMMO_EXPLOSIVE|AMMO_XENO damage_type = STAMINA - armor_type = "bio" + armor_type = BIO spit_cost = 50 sound_hit = "alien_resin_build2" sound_bounce = "alien_resin_build3" @@ -3798,7 +3798,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh added_spit_delay = 5 spit_cost = 50 flags_ammo_behavior = AMMO_XENO|AMMO_EXPLOSIVE - armor_type = "acid" + armor_type = ACID damage = 18 max_range = 8 bullet_color = COLOR_PALE_GREEN_GRAY @@ -3932,7 +3932,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh var/select_text = "We will now fire neurotoxic gas. This is nonlethal." flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_EXPLOSIVE var/danger_message = span_danger("A glob of acid lands with a splat and explodes into noxious fumes!") - armor_type = "bio" + armor_type = BIO accuracy_var_high = 10 max_range = 30 damage = 50 @@ -4046,7 +4046,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh icon_key = BOILER_GLOB_ACID select_text = "We will now fire corrosive acid. This is lethal!" flags_ammo_behavior = AMMO_XENO|AMMO_SKIPS_ALIENS|AMMO_EXPLOSIVE - armor_type = "acid" + armor_type = ACID danger_message = span_danger("A glob of acid lands with a splat and explodes into corrosive bile!") damage = 50 damage_type = BURN @@ -4247,7 +4247,7 @@ RU TGMC EDIT*/ flags_ammo_behavior = AMMO_BALLISTIC accurate_range = 15 damage_type = STAMINA - armor_type = "bio" + armor_type = BIO damage = 1 damage_falloff = 0 penetration = 0 @@ -4290,7 +4290,7 @@ RU TGMC EDIT*/ hud_state_empty = "flame_empty" damage_type = BURN flags_ammo_behavior = AMMO_INCENDIARY|AMMO_FLAME|AMMO_EXPLOSIVE - armor_type = "fire" + armor_type = FIRE max_range = 7 damage = 31 damage_falloff = 0 @@ -4389,7 +4389,7 @@ RU TGMC EDIT*/ damage_type = BRUTE var/nade_type = /obj/item/explosive/grenade icon_state = "grenade" - armor_type = "bomb" + armor_type = BOMB damage = 15 accuracy = 15 max_range = 10 diff --git a/code/modules/projectiles/gun_system.dm b/code/modules/projectiles/gun_system.dm index 2e1d9e25f49..e115b4717e0 100644 --- a/code/modules/projectiles/gun_system.dm +++ b/code/modules/projectiles/gun_system.dm @@ -192,11 +192,9 @@ var/windup_sound ///Used if a weapon need windup before firing var/windup_checked = WEAPON_WINDUP_NOT_CHECKED - /* * STAT VARS */ - ///Multiplier. Increased and decreased through attachments. Multiplies the projectile's accuracy by this number. var/accuracy_mult = 1 ///Same as above, for damage. @@ -271,10 +269,8 @@ var/wield_penalty = 0.2 SECONDS ///Storing value for above var/wield_time = 0 - var/wield_sound - ///how much energy is consumed per shot. var/charge_cost = 0 ///How much ammo consumed per shot; normally 1. @@ -295,21 +291,17 @@ /* * extra icon and item states or overlays */ - ///Whether the gun has ammo level overlays for its icon, mainly for eguns var/ammo_level_icon ///Whether the icon_state overlay is offset in the x axis var/icon_overlay_x_offset = 0 ///Whether the icon_state overlay is offset in the Y axis var/icon_overlay_y_offset = 0 - /* * * ATTACHMENT VARS * */ - - ///List of offsets to make attachment overlays not look wonky. var/list/attachable_offset = null ///List of allowed attachments, IT MUST INCLUDE THE STARTING ATTACHMENT TYPES OR THEY WILL NOT ATTACH. @@ -333,7 +325,6 @@ /* * Gun as Attachment Vars */ - ///Gun reference if src is an attachment and is attached to a gun. This will be the gun that src is attached to. var/obj/item/weapon/gun/master_gun ///Slot the gun fits into. @@ -351,13 +342,11 @@ ///How long ADS takes (time before firing) var/wield_delay_mod = 0 - /* * Deployed and Sentry Vars */ ///If the gun has a deployed item.. var/deployable_item = null - ///If the gun is deployable, the time it takes for the weapon to deploy. var/deploy_time = 0 ///If the gun is deployable, the time it takes for the weapon to undeploy. @@ -511,7 +500,6 @@ RegisterSignal(gun_user, COMSIG_KB_GUN_SAFETY, PROC_REF(toggle_gun_safety_keybind)) RegisterSignal(gun_user, COMSIG_KB_AUTOEJECT, PROC_REF(toggle_auto_eject_keybind)) - ///Null out gun user to prevent hard del /obj/item/weapon/gun/proc/clean_gun_user() SIGNAL_HANDLER @@ -549,7 +537,6 @@ var/mob/living/carbon/human/human = user human.regenerate_icons() - //manages the overlays for the gun - separate from attachment overlays /obj/item/weapon/gun/update_overlays() . = ..() @@ -675,7 +662,6 @@ if(HAS_TRAIT(src, TRAIT_GUN_AUTO_AIM_MODE)) toggle_aim_mode(user) - /obj/item/weapon/gun/unwield(mob/user) . = ..() if(!.) @@ -802,11 +788,6 @@ set_target(get_turf_on_clickcatcher(over_object, gun_user, params)) gun_user?.face_atom(target) - - - - - //---------------------------------------------------------- // \\ // FIRE BULLET AND POINT BLANK/SUICIDE \\ @@ -1119,7 +1100,6 @@ // \\ //---------------------------------------------------------- - /** * Performs the unique action. Can be overwritten. * This does a few things, depending on the flags of the gun. @@ -1218,7 +1198,6 @@ update_ammo_count() update_icon() - /** * Handles reloading. Called on attack_by * Reload works in one of three ways, depending on the guns flags. @@ -1300,7 +1279,6 @@ RegisterSignal(new_mag, COMSIG_ITEM_REMOVED_INVENTORY, TYPE_PROC_REF(/obj/item/weapon/gun, drop_connected_mag)) return TRUE - var/list/obj/items_to_insert = list() if(max_chamber_items) if(CHECK_BITFIELD(reciever_flags, AMMO_RECIEVER_HANDFULS)) @@ -1505,7 +1483,6 @@ casing.update_icon() playsound(current_turf, sound_to_play, 25, 1, 5) - ///Gets a projectile to fire from the magazines ammo type. /obj/item/weapon/gun/proc/get_ammo_object() var/datum/ammo/new_ammo = get_ammo() @@ -1726,7 +1703,6 @@ return playsound(user, fire_sound, 60, firing_sndfreq ? TRUE : FALSE, frequency = firing_sndfreq) - /obj/item/weapon/gun/proc/apply_gun_modifiers(obj/projectile/projectile_to_fire, atom/target, firer) projectile_to_fire.shot_from = src projectile_to_fire.damage *= damage_mult @@ -1820,7 +1796,6 @@ if(recoil_tweak) total_recoil -= recoil_tweak * 2 - var/actual_angle = firing_angle + rand(-recoil_deviation, recoil_deviation) + 180 if(actual_angle > 360) actual_angle -= 360 @@ -1840,7 +1815,7 @@ muzzle_flash.applied = FALSE //For letting xenos turn off the flashlights on any guns left lying around. -/obj/item/weapon/gun/attack_alien(mob/living/carbon/xenomorph/X, isrightclick = FALSE) +/obj/item/weapon/gun/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, isrightclick = FALSE) if(!HAS_TRAIT(src, TRAIT_GUN_FLASHLIGHT_ON)) return for(var/attachment_slot in attachments_by_slot) @@ -1849,5 +1824,5 @@ continue lit_flashlight.turn_light(null, FALSE) playsound(loc, "alien_claw_metal", 25, 1) - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - to_chat(X, span_warning("We disable the metal thing's lights.") ) + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + to_chat(xeno_attacker, span_warning("We disable the metal thing's lights.") ) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 88e1c34f49b..7df00b91bf7 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -62,8 +62,8 @@ GLOBAL_LIST_EMPTY(tagger_locations) to_chat(user, span_notice("It has a note attached which reads, \"[examtext]\"")) return -/obj/structure/bigDelivery/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) - attack_hand(X) +/obj/structure/bigDelivery/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) + attack_hand(xeno_attacker) /obj/structure/bigDelivery/attackby(obj/item/I, mob/user, params) . = ..() @@ -116,7 +116,6 @@ GLOBAL_LIST_EMPTY(tagger_locations) span_notice("You label \the [src]: \"[examtext]\""),\ "You hear someone scribbling a note.") - /obj/item/smallDelivery desc = "A small wrapped package." name = "small parcel" @@ -223,7 +222,6 @@ GLOBAL_LIST_EMPTY(tagger_locations) span_notice("You label \the [src]: \"[examtext]\""),\ "You hear someone scribbling a note.") - /obj/item/packageWrap name = "package wrapper" icon = 'icons/obj/stack_objects.dmi' @@ -231,7 +229,6 @@ GLOBAL_LIST_EMPTY(tagger_locations) w_class = WEIGHT_CLASS_NORMAL var/amount = 25 - /obj/item/packageWrap/afterattack(obj/target, mob/user, proximity) if(!proximity) return if(!istype(target)) //this really shouldn't be necessary (but it is). -Pete @@ -248,7 +245,6 @@ GLOBAL_LIST_EMPTY(tagger_locations) log_combat(user, target, "used", src) - if (istype(target, /obj/item) && !(istype(target, /obj/item/storage) && !istype(target,/obj/item/storage/box))) var/obj/item/O = target if (src.amount > 1) @@ -315,7 +311,6 @@ GLOBAL_LIST_EMPTY(tagger_locations) if(get_dist(src, user) < 2) to_chat(user, span_notice("There are [amount] units of package wrap left!")) - /obj/item/destTagger name = "destination tagger" desc = "Used to set the destination of properly wrapped packages." diff --git a/code/modules/shuttle/escape_pod.dm b/code/modules/shuttle/escape_pod.dm index e671e9c2f0d..4ce993cdec7 100644 --- a/code/modules/shuttle/escape_pod.dm +++ b/code/modules/shuttle/escape_pod.dm @@ -210,5 +210,5 @@ /obj/machinery/door/airlock/evacuation/attack_hand(mob/living/user) return TRUE -/obj/machinery/door/airlock/evacuation/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/machinery/door/airlock/evacuation/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) return FALSE //Probably a better idea that these cannot be forced open. diff --git a/code/modules/shuttle/marine_dropship.dm b/code/modules/shuttle/marine_dropship.dm index c08aa1a1e55..80fe541bc5b 100644 --- a/code/modules/shuttle/marine_dropship.dm +++ b/code/modules/shuttle/marine_dropship.dm @@ -1,4 +1,3 @@ -// marine dropships /obj/docking_port/stationary/marine_dropship name = "dropship landing zone" id = "dropship" @@ -304,11 +303,9 @@ playsound(loc,'sound/effects/alert.ogg', 50) addtimer(CALLBACK(src, PROC_REF(request_to), S), 15 SECONDS) - /obj/docking_port/mobile/marine_dropship/proc/do_start_hijack_timer(hijack_time = LOCKDOWN_TIME) addtimer(CALLBACK(src, PROC_REF(reset_hijack)), hijack_time) - /obj/docking_port/mobile/marine_dropship/proc/request_to(obj/docking_port/stationary/S) set_idle() request(S) @@ -325,7 +322,6 @@ if(light.linked_port == destination) light.turn_on() - /obj/docking_port/mobile/marine_dropship/getStatusText() if(hijack_state == HIJACK_STATE_CALLED_DOWN) return "Control integrity compromised" @@ -333,14 +329,12 @@ return "Remote control compromised" return ..() + (timeleft(cycle_timer) ? (" Automatic cycle : [round(timeleft(cycle_timer) / 10 + 20, 1)] seconds before departure towards [previous.name]") : "") - /obj/docking_port/mobile/marine_dropship/can_move_topic(mob/user) if(hijack_state != HIJACK_STATE_NORMAL) to_chat(user, span_warning("Control integrity compromised!")) return FALSE return ..() - /mob/living/carbon/xenomorph/proc/hijack() set category = "Alien" set name = "Hijack Dropship" @@ -486,12 +480,12 @@ req_one_access = list(ACCESS_MARINE_DROPSHIP, ACCESS_MARINE_LEADER) // TLs can only operate the remote console possible_destinations = "lz1;lz2;normandy" -/obj/machinery/computer/shuttle/marine_dropship/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(!(X.xeno_caste.caste_flags & CASTE_IS_INTELLIGENT)) +/obj/machinery/computer/shuttle/marine_dropship/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(!(xeno_attacker.xeno_caste.caste_flags & CASTE_IS_INTELLIGENT)) return #ifndef TESTING if(SSticker.round_start_time + SHUTTLE_HIJACK_LOCK > world.time) - to_chat(X, span_xenowarning("It's too early to do this!")) + to_chat(xeno_attacker, span_xenowarning("It's too early to do this!")) return #endif var/obj/docking_port/mobile/marine_dropship/M = SSshuttle.getShuttle(shuttleId) @@ -502,17 +496,16 @@ M.unlock_all() M.silicon_lock_airlocks(TRUE) if(M.hijack_state != HIJACK_STATE_CALLED_DOWN) - to_chat(X, span_xenowarning("We corrupt the bird's controls, unlocking the doors[(M.mode != SHUTTLE_IGNITING) ? "and preventing it from flying." : ", but we are unable to prevent it from flying as it is already taking off!"]")) + to_chat(xeno_attacker, span_xenowarning("We corrupt the bird's controls, unlocking the doors[(M.mode != SHUTTLE_IGNITING) ? "and preventing it from flying." : ", but we are unable to prevent it from flying as it is already taking off!"]")) SEND_GLOBAL_SIGNAL(COMSIG_GLOB_DROPSHIP_CONTROLS_CORRUPTED, src) if(M.mode != SHUTTLE_IGNITING) M.set_hijack_state(HIJACK_STATE_CALLED_DOWN) M.do_start_hijack_timer() - var/datum/browser/popup = new(X, "computer", M ? M.name : "shuttle", 300, 200) + var/datum/browser/popup = new(xeno_attacker, "computer", M ? M.name : "shuttle", 300, 200) popup.set_content("
[dat]
") popup.open() - /obj/machinery/computer/shuttle/marine_dropship/can_interact(mob/user) . = ..() @@ -521,6 +514,7 @@ if(!(X.xeno_caste.caste_flags & CASTE_IS_INTELLIGENT)) return FALSE + else if(!allowed(user)) return FALSE @@ -703,10 +697,8 @@ do_hijack(M, CT, X) if(href_list["abduct"]) -//RUTGMC EDIT ADDITION BEGIN - Preds var/list/living_player_list = SSticker.mode.count_humans_and_xenos(SSmapping.levels_by_any_trait(list(ZTRAIT_GROUND)), COUNT_IGNORE_ALIVE_SSD) if(living_player_list[1] > 5) -//RUTGMC EDIT ADDITION END to_chat(X, span_xenowarning("There is still prey left to hunt!")) return @@ -743,7 +735,6 @@ to_chat(user, span_warning("ERROR. This shouldn't happen, please report it.")) CRASH("moveShuttleToDock() returned a non-zero-nor-one value.") - /obj/machinery/computer/shuttle/marine_dropship/one name = "\improper 'Normandy' flight controls" desc = "The flight controls for the 'Normandy' Dropship. Named after a department in France, noteworthy for the famous naval invasion of Normandy on the 6th of June 1944, a bloody but decisive victory in World War II and the campaign for the Liberation of France." @@ -886,7 +877,6 @@ /obj/structure/dropship_piece/one/weapon/rightright icon_state = "brown_weapon_rr" - /obj/structure/dropship_piece/one/wing opacity = FALSE @@ -902,7 +892,6 @@ /obj/structure/dropship_piece/one/wing/right/bottom icon_state = "brown_wing_rb" - /obj/structure/dropship_piece/one/corner/middleleft icon_state = "brown_middle_lc" @@ -915,7 +904,6 @@ /obj/structure/dropship_piece/one/corner/rearright icon_state = "brown_rear_rc" - /obj/structure/dropship_piece/one/engine opacity = FALSE @@ -963,8 +951,6 @@ opacity = FALSE allow_pass_flags = PASSABLE - - /obj/structure/dropship_piece/two name = "\improper Normandy" @@ -1055,7 +1041,6 @@ /obj/structure/dropship_piece/two/cockpit/right icon_state = "blue_cockpit_fr" - /obj/structure/dropship_piece/two/weapon opacity = FALSE @@ -1071,7 +1056,6 @@ /obj/structure/dropship_piece/two/weapon/rightright icon_state = "blue_weapon_rr" - /obj/structure/dropship_piece/two/wing opacity = FALSE @@ -1087,7 +1071,6 @@ /obj/structure/dropship_piece/two/wing/right/bottom icon_state = "blue_wing_rb" - /obj/structure/dropship_piece/two/corner/middleleft icon_state = "blue_middle_lc" @@ -1106,7 +1089,6 @@ /obj/structure/dropship_piece/two/corner/frontright icon_state = "blue_front_rc" - /obj/structure/dropship_piece/two/engine opacity = FALSE @@ -1122,7 +1104,6 @@ /obj/structure/dropship_piece/two/engine/rightbottom icon_state = "blue_engine_rb" - /obj/structure/dropship_piece/two/rearwing/lefttop icon_state = "blue_rearwing_lt" @@ -1151,7 +1132,6 @@ icon_state = "blue_rearwing_rrrb" opacity = FALSE - /obj/structure/dropship_piece/three name = "\improper Triumph" @@ -1172,7 +1152,6 @@ /obj/structure/dropship_piece/three/cockpit/right icon_state = "brown_cockpit_fr" - /obj/structure/dropship_piece/three/weapon opacity = FALSE @@ -1188,7 +1167,6 @@ /obj/structure/dropship_piece/three/weapon/rightright icon_state = "brown_weapon_rr" - /obj/structure/dropship_piece/three/wing opacity = FALSE @@ -1204,7 +1182,6 @@ /obj/structure/dropship_piece/three/wing/right/bottom icon_state = "brown_wing_rb" - /obj/structure/dropship_piece/three/corner/middleleft icon_state = "brown_middle_lc" @@ -1217,7 +1194,6 @@ /obj/structure/dropship_piece/three/corner/rearright icon_state = "brown_rear_rc" - /obj/structure/dropship_piece/three/engine opacity = FALSE @@ -1233,7 +1209,6 @@ /obj/structure/dropship_piece/three/engine/rightbottom icon_state = "brown_engine_rb" - /obj/structure/dropship_piece/three/rearwing/lefttop icon_state = "brown_rearwing_lt" @@ -1262,7 +1237,6 @@ icon_state = "brown_rearwing_rrrb" opacity = FALSE - //Dropship control console /obj/machinery/computer/shuttle/shuttle_control @@ -1273,17 +1247,14 @@ ///Able to auto-relink to any shuttle with at least one of the flags in common if shuttleId is invalid. var/compatible_control_flags = NONE - /obj/machinery/computer/shuttle/shuttle_control/Initialize(mapload) . = ..() GLOB.shuttle_controls_list += src - /obj/machinery/computer/shuttle/shuttle_control/Destroy() GLOB.shuttle_controls_list -= src return ..() - /obj/machinery/computer/shuttle/shuttle_control/ui_interact(mob/user, datum/tgui/ui) if(!(SSshuttle.getShuttle(shuttleId))) RelinkShuttleId() @@ -1421,8 +1392,6 @@ say("Relinked Dropship Control Console to: '[shuttleName]'") return TRUE //Did relink - - /obj/machinery/computer/shuttle/shuttle_control/dropship name = "\improper 'Normandy' dropship console" desc = "The remote controls for the 'Normandy' Dropship. Named after a department in France, noteworthy for the famous naval invasion of Normandy on the 6th of June 1944, a bloody but decisive victory in World War II and the campaign for the Liberation of France." @@ -1435,7 +1404,6 @@ req_one_access = list(ACCESS_MARINE_DROPSHIP, ACCESS_MARINE_LEADER) // TLs can only operate the remote console compatible_control_flags = SHUTTLE_MARINE_PRIMARY_DROPSHIP - /obj/machinery/computer/shuttle/shuttle_control/dropship/two name = "\improper 'Alamo' dropship console" desc = "The remote controls for the 'Alamo' Dropship. Named after the Alamo Mission, stage of the Battle of the Alamo in the United States' state of Texas in the Spring of 1836. The defenders held to the last, encouraging other Texans to rally to the flag." @@ -1465,7 +1433,6 @@ popup.set_content("
[dat]
") popup.open() - /obj/machinery/computer/shuttle/shuttle_control/canterbury/Topic(href, href_list) // Since we want to avoid the standard move topic, we are just gonna override everything. add_fingerprint(usr, "topic") diff --git a/code/modules/shuttle/mini_dropship.dm b/code/modules/shuttle/mini_dropship.dm index 73ee62729ee..e79a4a85420 100644 --- a/code/modules/shuttle/mini_dropship.dm +++ b/code/modules/shuttle/mini_dropship.dm @@ -160,23 +160,23 @@ return nvg_vision_mode = !nvg_vision_mode -/obj/machinery/computer/camera_advanced/shuttle_docker/minidropship/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) +/obj/machinery/computer/camera_advanced/shuttle_docker/minidropship/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) . = ..() if(machine_stat & BROKEN) return - if(X.status_flags & INCORPOREAL) + if(xeno_attacker.status_flags & INCORPOREAL) return - X.visible_message("[X] begins to slash delicately at the computer", + xeno_attacker.visible_message("[xeno_attacker] begins to slash delicately at the computer", "We start slashing delicately at the computer. This will take a while.") - if(!do_after(X, 10 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) + if(!do_after(xeno_attacker, 10 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) return visible_message("The inner wiring is visible, it can be slashed!") - X.visible_message("[X] continue to slash at the computer", + xeno_attacker.visible_message("[xeno_attacker] continue to slash at the computer", "We continue slashing at the computer. If we stop now we will have to start all over again.") var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() - if(!do_after(X, 10 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) + if(!do_after(xeno_attacker, 10 SECONDS, NONE, src, BUSY_ICON_DANGER, BUSY_ICON_HOSTILE)) return visible_message("The wiring is destroyed, nobody will be able to repair this computer!") SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MINI_DROPSHIP_DESTROYED, src) @@ -248,7 +248,6 @@ .["equipment_data"] += list(list("name"= sanitize(copytext(E.name,1,MAX_MESSAGE_LEN)), "eqp_tag" = element_nbr, "is_weapon" = (E.dropship_equipment_flags & IS_WEAPON), "is_interactable" = (E.dropship_equipment_flags & IS_INTERACTABLE))) element_nbr++ - /obj/machinery/computer/camera_advanced/shuttle_docker/minidropship/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() switch(action) diff --git a/code/modules/vehicles/multitile/cm_armored.dm b/code/modules/vehicles/multitile/cm_armored.dm index ded3f673849..2ce17a9ef33 100644 --- a/code/modules/vehicles/multitile/cm_armored.dm +++ b/code/modules/vehicles/multitile/cm_armored.dm @@ -1,4 +1,3 @@ - //NOT bitflags, just global constant values #define HDPT_PRIMARY "primary" #define HDPT_SECDGUN "secondary" @@ -20,21 +19,15 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( desc = "Get inside to operate the vehicle." hitbox_type = /obj/vehicle/multitile/hitbox/cm_armored //Used for emergencies and respawning hitboxes - //What slots the vehicle can have + ///What slots the vehicle can have var/list/hardpoints = list(HDPT_ARMOR, HDPT_TREADS, HDPT_SECDGUN, HDPT_SUPPORT, HDPT_PRIMARY) - - //The next world.time when the tank can move + ///The next world.time when the tank can move var/next_move = 0 - //Below are vars that can be affected by hardpoints, generally used as ratios or decisecond timers - move_delay = 30 //default 3 seconds per tile - var/active_hp - var/list/dmg_distribs = list() - - //Changes cooldowns and accuracies + ///Changes cooldowns and accuracies var/list/misc_ratios = list( "move" = 1.0, "prim_acc" = 1.0, @@ -43,8 +36,7 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( "prim_cool" = 1.0, "secd_cool" = 1.0, "supp_cool" = 1.0) - - //Changes how much damage the tank takes + ///Changes how much damage the tank takes var/list/dmg_multipliers = list( "all" = 1.0, //for when you want to make it invincible "acid" = 1.0, @@ -53,14 +45,12 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( "explosive" = 1.0, "blunt" = 1.0, "abstract" = 1.0) //abstract for when you just want to hurt it - - //Decisecond cooldowns for the slots + ///Decisecond cooldowns for the slots var/list/internal_cooldowns = list( "primary" = 300, "secondary" = 200, "support" = 150) - - //Percentage accuracies for slot + ///Percentage accuracies for slot var/list/accuracies = list( "primary" = 0.97, "secondary" = 0.67, @@ -70,13 +60,11 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( icon = 'icons/obj/vehicles.dmi' icon_state = "cargo_engine" - /obj/vehicle/multitile/root/cm_armored/Initialize(mapload) . = ..() GLOB.tank_list += src set_light(0.01) - /obj/vehicle/multitile/root/cm_armored/Destroy() for(var/i in linked_objs) var/obj/O = linked_objs[i] @@ -189,7 +177,6 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( to_chat(usr, span_notice("You reload the [slot] module.")) - /obj/vehicle/multitile/root/cm_armored/proc/get_activatable_hardpoints() var/list/slots = list() for(var/slot in hardpoints) @@ -202,8 +189,6 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( return slots - - //Special armored vic healthcheck that mainly updates the hardpoint states /obj/vehicle/multitile/root/cm_armored/proc/healthcheck() repair_damage(max_integrity) //The tank itself doesn't take damage @@ -278,7 +263,6 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( if(isliving(A)) log_attack("[get_driver()] drove over [A] with [root]") - /obj/vehicle/multitile/hitbox/cm_armored/proc/get_driver() return "Someone" @@ -428,8 +412,8 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( /obj/vehicle/multitile/hitbox/cm_armored/attackby(obj/item/I, mob/user, params) return root.attackby(I, user, params) -/obj/vehicle/multitile/hitbox/cm_armored/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - return root.attack_alien(X, damage_amount) +/obj/vehicle/multitile/hitbox/cm_armored/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + return root.attack_alien(xeno_attacker, damage_amount) /obj/vehicle/multitile/hitbox/cm_armored/effect_smoke(obj/effect/particle_effect/smoke/S) . = ..() @@ -437,7 +421,7 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( return if(CHECK_BITFIELD(S.smoke_traits, SMOKE_XENO_ACID)) var/obj/vehicle/multitile/root/cm_armored/T = root - T.take_damage_type(30, "acid") + T.take_damage_type(30, ACID) //A bit icky, but basically if you're adjacent to the tank hitbox, you are then adjacent to the root object /obj/vehicle/multitile/root/cm_armored/Adjacent(atom/A) @@ -477,7 +461,6 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( return ..() - //severity 1.0 explosions never really happen so we're gonna follow everyone else's example /obj/vehicle/multitile/root/cm_armored/ex_act(severity) @@ -489,7 +472,7 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( take_damage(rand(30, 40)) //Heavy explosions do some damage, but are largely deferred by the armour/bulk. //Honestly copies some code from the Xeno files, just handling some special cases -/obj/vehicle/multitile/root/cm_armored/attack_alien(mob/living/carbon/xenomorph/M, damage_amount = M.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) +/obj/vehicle/multitile/root/cm_armored/attack_alien(mob/living/carbon/xenomorph/M, damage_amount = M.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) if(M.loc == entrance.loc && M.a_intent == INTENT_HELP) handle_player_entrance(M) //will call the get out of tank proc on its own @@ -523,7 +506,6 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( handle_player_entrance(user) return - /obj/vehicle/multitile/root/cm_armored/Entered(atom/movable/A) if(istype(A, /obj) && !istype(A, /obj/item/ammo_magazine/tank) && !istype(A, /obj/item/hardpoint)) A.forceMove(loc) @@ -531,7 +513,6 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( return ..() - //Redistributes damage ratios based off of what things are attached (no armor means the armor doesn't mitigate any damage) /obj/vehicle/multitile/root/cm_armored/proc/update_damage_distribs() dmg_distribs = GLOB.armorvic_dmg_distributions.Copy() //Assume full installs @@ -572,7 +553,6 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( if(!(O.flags_item & NOBLUDGEON)) take_damage_type(O.force * 0.05, "blunt", user) //Melee weapons from people do very little damage - /obj/vehicle/multitile/root/cm_armored/proc/handle_hardpoint_repair(obj/item/O, mob/user) //Need to the what the hell you're doing @@ -803,7 +783,5 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list( update_damage_distribs() update_icon() - - /obj/vehicle/multitile/root/cm_armored/contents_explosion(severity) return diff --git a/code/modules/xenomorph/xeno_structures.dm b/code/modules/xenomorph/xeno_structures.dm index be02df49348..55b5a858495 100644 --- a/code/modules/xenomorph/xeno_structures.dm +++ b/code/modules/xenomorph/xeno_structures.dm @@ -48,17 +48,16 @@ else obj_destruction() -/obj/structure/xeno/attack_alien(mob/living/carbon/xenomorph/X, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) - if(!(HAS_TRAIT(X, TRAIT_VALHALLA_XENO) && X.a_intent == INTENT_HARM && (tgui_alert(X, "Are you sure you want to tear down [src]?", "Tear down [src]?", list("Yes","No"))) == "Yes")) +/obj/structure/xeno/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount, damage_type, damage_flag, effects, armor_penetration, isrightclick) + if(!(HAS_TRAIT(xeno_attacker, TRAIT_VALHALLA_XENO) && xeno_attacker.a_intent == INTENT_HARM && (tgui_alert(xeno_attacker, "Are you sure you want to tear down [src]?", "Tear down [src]?", list("Yes","No"))) == "Yes")) return ..() - if(!do_after(X, 3 SECONDS, NONE, src)) + if(!do_after(xeno_attacker, 3 SECONDS, NONE, src)) return - X.do_attack_animation(src, ATTACK_EFFECT_CLAW) - balloon_alert_to_viewers("\The [X] tears down \the [src]!", "We tear down \the [src].") + xeno_attacker.do_attack_animation(src, ATTACK_EFFECT_CLAW) + balloon_alert_to_viewers("\The [xeno_attacker] tears down \the [src]!", "We tear down \the [src].") playsound(src, "alien_resin_break", 25) take_damage(max_integrity) // Ensure its destroyed - //Carrier trap /obj/structure/xeno/trap desc = "It looks like a hiding hole." @@ -179,18 +178,6 @@ drop_hugger() if(TRAP_SMOKE_NEURO, TRAP_SMOKE_ACID) smoke.start() -//RUTGMC EDIT START -/* //RUTGMC edit - sprite and stats changes - if(TRAP_ACID_WEAK) - for(var/turf/acided AS in RANGE_TURFS(1, src)) - new /obj/effect/xenomorph/spray(acided, 7 SECONDS, XENO_DEFAULT_ACID_PUDDLE_DAMAGE) - if(TRAP_ACID_NORMAL) - for(var/turf/acided AS in RANGE_TURFS(1, src)) - new /obj/effect/xenomorph/spray(acided, 10 SECONDS, XENO_DEFAULT_ACID_PUDDLE_DAMAGE) - if(TRAP_ACID_STRONG) - for(var/turf/acided AS in RANGE_TURFS(1, src)) - new /obj/effect/xenomorph/spray(acided, 12 SECONDS, XENO_DEFAULT_ACID_PUDDLE_DAMAGE) -*/ if(TRAP_ACID_WEAK) for(var/turf/acided AS in RANGE_TURFS(1, src)) new /obj/effect/xenomorph/spray/weak(acided, 8 SECONDS, XENO_WEAK_ACID_PUDDLE_DAMAGE) @@ -200,7 +187,6 @@ if(TRAP_ACID_STRONG) for(var/turf/acided AS in RANGE_TURFS(1, src)) new /obj/effect/xenomorph/spray/strong(acided, 12 SECONDS, XENO_HIGH_ACID_PUDDLE_DAMAGE) -//RUTGMC EDIT END xeno_message("A [trap_type] trap at [AREACOORD_NO_Z(src)] has been triggered!", "xenoannounce", 5, hivenumber, FALSE, get_turf(src), 'sound/voice/alien_talk2.ogg', FALSE, null, /atom/movable/screen/arrow/attack_order_arrow, COLOR_ORANGE, TRUE) set_trap_type(null) @@ -212,31 +198,31 @@ hugger = null set_trap_type(null) -/obj/structure/xeno/trap/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/xeno/trap/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - if(X.a_intent == INTENT_HARM) + if(xeno_attacker.a_intent == INTENT_HARM) return ..() if(trap_type == TRAP_HUGGER) - if(!(X.xeno_caste.can_flags & CASTE_CAN_HOLD_FACEHUGGERS)) + if(!(xeno_attacker.xeno_caste.can_flags & CASTE_CAN_HOLD_FACEHUGGERS)) return if(!hugger) - balloon_alert(X, "It is empty") + balloon_alert(xeno_attacker, "It is empty") return - X.put_in_active_hand(hugger) + xeno_attacker.put_in_active_hand(hugger) hugger.go_active(TRUE) hugger = null set_trap_type(null) - balloon_alert(X, "Removed facehugger") + balloon_alert(xeno_attacker, "Removed facehugger") return - var/datum/action/ability/activable/xeno/corrosive_acid/acid_action = locate(/datum/action/ability/activable/xeno/corrosive_acid) in X.actions - if(istype(X.ammo, /datum/ammo/xeno/boiler_gas)) - var/datum/ammo/xeno/boiler_gas/boiler_glob = X.ammo - if(!boiler_glob.enhance_trap(src, X)) + var/datum/action/ability/activable/xeno/corrosive_acid/acid_action = locate(/datum/action/ability/activable/xeno/corrosive_acid) in xeno_attacker.actions + if(istype(xeno_attacker.ammo, /datum/ammo/xeno/boiler_gas)) + var/datum/ammo/xeno/boiler_gas/boiler_glob = xeno_attacker.ammo + if(!boiler_glob.enhance_trap(src, xeno_attacker)) return else if(acid_action) - if(!do_after(X, 2 SECONDS, NONE, src)) + if(!do_after(xeno_attacker, 2 SECONDS, NONE, src)) return switch(acid_action.acid_type) if(/obj/effect/xenomorph/acid/weak) @@ -247,8 +233,8 @@ set_trap_type(TRAP_ACID_STRONG) else return // nothing happened! - playsound(X.loc, 'sound/effects/refill.ogg', 25, 1) - balloon_alert(X, "Filled with [trap_type]") + playsound(xeno_attacker.loc, 'sound/effects/refill.ogg', 25, 1) + balloon_alert(xeno_attacker, "Filled with [trap_type]") /obj/structure/xeno/trap/attackby(obj/item/I, mob/user, params) . = ..() @@ -365,25 +351,25 @@ TUNNEL return ..() attack_alien(user) -/obj/structure/xeno/tunnel/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(!istype(X) || X.stat || X.lying_angle || X.status_flags & INCORPOREAL) +/obj/structure/xeno/tunnel/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(!istype(xeno_attacker) || xeno_attacker.stat || xeno_attacker.lying_angle || xeno_attacker.status_flags & INCORPOREAL) return - if(X.a_intent == INTENT_HARM && X == creator) - balloon_alert(X, "Filling in tunnel...") - if(do_after(X, HIVELORD_TUNNEL_DISMANTLE_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) + if(xeno_attacker.a_intent == INTENT_HARM && xeno_attacker == creator) + balloon_alert(xeno_attacker, "Filling in tunnel...") + if(do_after(xeno_attacker, HIVELORD_TUNNEL_DISMANTLE_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) deconstruct(FALSE) return - if(X.anchored) - balloon_alert(X, "Cannot enter while immobile") + if(xeno_attacker.anchored) + balloon_alert(xeno_attacker, "Cannot enter while immobile") return FALSE if(length(GLOB.xeno_tunnels_by_hive[hivenumber]) < 2) - balloon_alert(X, "No exit tunnel") + balloon_alert(xeno_attacker, "No exit tunnel") return FALSE - pick_a_tunnel(X) + pick_a_tunnel(xeno_attacker) /obj/structure/xeno/tunnel/attack_larva(mob/living/carbon/xenomorph/larva/L) //So larvas can actually use tunnels attack_alien(L) @@ -585,46 +571,46 @@ TUNNEL return ..() attack_alien(user) -/obj/structure/xeno/acidwell/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.a_intent == INTENT_HARM && (CHECK_BITFIELD(X.xeno_caste.caste_flags, CASTE_IS_BUILDER) || X == creator) ) //If we're a builder caste or the creator and we're on harm intent, deconstruct it. - balloon_alert(X, "Removing...") - if(!do_after(X, XENO_ACID_WELL_FILL_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)) - balloon_alert(X, "Stopped removing") +/obj/structure/xeno/acidwell/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.a_intent == INTENT_HARM && (CHECK_BITFIELD(xeno_attacker.xeno_caste.caste_flags, CASTE_IS_BUILDER) || xeno_attacker == creator) ) //If we're a builder caste or the creator and we're on harm intent, deconstruct it. + balloon_alert(xeno_attacker, "Removing...") + if(!do_after(xeno_attacker, XENO_ACID_WELL_FILL_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)) + balloon_alert(xeno_attacker, "Stopped removing") return playsound(src, "alien_resin_break", 25) - deconstruct(TRUE, X) + deconstruct(TRUE, xeno_attacker) return if(charges >= 5) - balloon_alert(X, "Already full") + balloon_alert(xeno_attacker, "Already full") return if(charging) - balloon_alert(X, "Already being filled") + balloon_alert(xeno_attacker, "Already being filled") return - if(X.plasma_stored < XENO_ACID_WELL_FILL_COST) //You need to have enough plasma to attempt to fill the well - balloon_alert(X, "Need [XENO_ACID_WELL_FILL_COST - X.plasma_stored] more plasma") + if(xeno_attacker.plasma_stored < XENO_ACID_WELL_FILL_COST) //You need to have enough plasma to attempt to fill the well + balloon_alert(xeno_attacker, "Need [XENO_ACID_WELL_FILL_COST - xeno_attacker.plasma_stored] more plasma") return charging = TRUE - balloon_alert(X, "Refilling...") - if(!do_after(X, XENO_ACID_WELL_FILL_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) + balloon_alert(xeno_attacker, "Refilling...") + if(!do_after(xeno_attacker, XENO_ACID_WELL_FILL_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) charging = FALSE - balloon_alert(X, "Aborted refilling") + balloon_alert(xeno_attacker, "Aborted refilling") return - if(X.plasma_stored < XENO_ACID_WELL_FILL_COST) + if(xeno_attacker.plasma_stored < XENO_ACID_WELL_FILL_COST) charging = FALSE - balloon_alert(X, "Need [XENO_ACID_WELL_FILL_COST - X.plasma_stored] more plasma") + balloon_alert(xeno_attacker, "Need [XENO_ACID_WELL_FILL_COST - xeno_attacker.plasma_stored] more plasma") return - X.plasma_stored -= XENO_ACID_WELL_FILL_COST + xeno_attacker.plasma_stored -= XENO_ACID_WELL_FILL_COST charges++ charging = FALSE update_icon() - balloon_alert(X, "Now has [charges] / [XENO_ACID_WELL_MAX_CHARGES] charges") - to_chat(X,span_xenonotice("We add acid to [src]. It is currently has [charges] / [XENO_ACID_WELL_MAX_CHARGES] charges.") ) + balloon_alert(xeno_attacker, "Now has [charges] / [XENO_ACID_WELL_MAX_CHARGES] charges") + to_chat(xeno_attacker,span_xenonotice("We add acid to [src]. It is currently has [charges] / [XENO_ACID_WELL_MAX_CHARGES] charges.") ) /obj/structure/xeno/acidwell/proc/on_cross(datum/source, atom/movable/A, oldloc, oldlocs) SIGNAL_HANDLER @@ -727,21 +713,21 @@ TUNNEL if(chargesleft >= maxcharges) return PROCESS_KILL -/obj/structure/xeno/resin_jelly_pod/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if(X.status_flags & INCORPOREAL) +/obj/structure/xeno/resin_jelly_pod/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if(xeno_attacker.status_flags & INCORPOREAL) return FALSE - if((X.a_intent == INTENT_HARM && isxenohivelord(X)) || X.hivenumber != hivenumber) - balloon_alert(X, "Destroying...") - if(do_after(X, HIVELORD_TUNNEL_DISMANTLE_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) + if((xeno_attacker.a_intent == INTENT_HARM && isxenohivelord(xeno_attacker)) || xeno_attacker.hivenumber != hivenumber) + balloon_alert(xeno_attacker, "Destroying...") + if(do_after(xeno_attacker, HIVELORD_TUNNEL_DISMANTLE_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_BUILD)) deconstruct(FALSE) return if(!chargesleft) - balloon_alert(X, "No jelly remaining") - to_chat(X, span_xenonotice("We reach into \the [src], but only find dregs of resin. We should wait some more.") ) + balloon_alert(xeno_attacker, "No jelly remaining") + to_chat(xeno_attacker, span_xenonotice("We reach into \the [src], but only find dregs of resin. We should wait some more.") ) return - balloon_alert(X, "Retrieved jelly") + balloon_alert(xeno_attacker, "Retrieved jelly") new /obj/item/resin_jelly(loc) chargesleft-- if(!(datum_flags & DF_ISPROCESSING) && (chargesleft < maxcharges)) @@ -1273,15 +1259,15 @@ TUNNEL return ..() // Clicking on the tower brings up a radial menu that allows you to select the type of pheromone that this tower will emit. -/obj/structure/xeno/pherotower/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - var/phero_choice = show_radial_menu(X, src, GLOB.pheromone_images_list, radius = 35, require_near = TRUE) +/obj/structure/xeno/pherotower/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + var/phero_choice = show_radial_menu(xeno_attacker, src, GLOB.pheromone_images_list, radius = 35, require_near = TRUE) if(!phero_choice) return QDEL_NULL(current_aura) current_aura = SSaura.add_emitter(src, phero_choice, aura_radius, aura_strength, -1, FACTION_XENO, hivenumber) - balloon_alert(X, "[phero_choice]") + balloon_alert(xeno_attacker, "[phero_choice]") playsound(src, "alien_drool", 25) update_icon() @@ -1466,17 +1452,17 @@ TUNNEL return ..() return on_use(user) -/obj/structure/xeno/plant/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - if((X.status_flags & INCORPOREAL)) +/obj/structure/xeno/plant/attack_alien(mob/living/carbon/xenomorph/xeno_attacker, damage_amount = xeno_attacker.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = MELEE, effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + if((xeno_attacker.status_flags & INCORPOREAL)) return FALSE - if(X.a_intent == INTENT_HARM && isxenodrone(X)) - balloon_alert(X, "Uprooted the plant") - X.do_attack_animation(src) + if(xeno_attacker.a_intent == INTENT_HARM && isxenodrone(xeno_attacker)) + balloon_alert(xeno_attacker, "Uprooted the plant") + xeno_attacker.do_attack_animation(src) deconstruct(FALSE) return FALSE - if(can_interact(X)) - return on_use(X) + if(can_interact(xeno_attacker)) + return on_use(xeno_attacker) return TRUE /obj/structure/xeno/plant/heal_fruit @@ -1587,7 +1573,6 @@ TUNNEL playsound(user, "alien_drool", 25) return ..() - /obj/structure/xeno/plant/stealth_plant name = "night shade" desc = "A beautiful flower, what purpose it could serve to the alien hive is beyond you however..."