Merge branch 'master' into Synth-Brainwashing
This commit is contained in:
@@ -106,15 +106,18 @@ GLOBAL_LIST_INIT(bitflags, list(
|
||||
#define PASSBLOB (1<<3)
|
||||
#define PASSMOB (1<<4)
|
||||
#define PASSCLOSEDTURF (1<<5)
|
||||
/// Let thrown things past us. **ONLY MEANINGFUL ON pass_flags_self!**
|
||||
#define LETPASSTHROW (1<<6)
|
||||
#define PASSMACHINE (1<<7)
|
||||
#define PASSSTRUCTURE (1<<8)
|
||||
|
||||
//Movement Types
|
||||
#define GROUND (1<<0)
|
||||
#define FLYING (1<<1)
|
||||
#define VENTCRAWLING (1<<2)
|
||||
#define FLOATING (1<<3)
|
||||
///When moving, will Bump()/Cross()/Uncross() everything, but won't be stopped.
|
||||
#define UNSTOPPABLE (1<<4)
|
||||
///When moving, will Bump()/Cross()/Uncross() everything, but won't stop or Bump() anything.
|
||||
#define PHASING (1<<4)
|
||||
///Applied if you're crawling around on the ground/resting.
|
||||
#define CRAWLING (1<<5)
|
||||
|
||||
|
||||
@@ -31,12 +31,21 @@
|
||||
#define COOLDOWN_OBJECTIVES "objectives"
|
||||
#define COOLDOWN_OBJ_ADMIN_PING "obj_admin_ping"
|
||||
|
||||
|
||||
//Mecha cooldowns
|
||||
#define COOLDOWN_MECHA_MESSAGE "mecha_message"
|
||||
#define COOLDOWN_MECHA_EQUIPMENT "mecha_equipment"
|
||||
#define COOLDOWN_MECHA_ARMOR "mecha_armor"
|
||||
#define COOLDOWN_MECHA_MELEE_ATTACK "mecha_melee"
|
||||
#define COOLDOWN_MECHA_SMOKE "mecha_smoke"
|
||||
|
||||
//car cooldowns
|
||||
#define COOLDOWN_CAR_HONK "car_honk"
|
||||
|
||||
//clown car cooldowns
|
||||
#define COOLDOWN_CLOWNCAR_RANDOMNESS "clown_car_randomness"
|
||||
|
||||
|
||||
//TIMER COOLDOWN MACROS
|
||||
|
||||
#define COMSIG_CD_STOP(cd_index) "cooldown_[cd_index]"
|
||||
|
||||
@@ -385,6 +385,7 @@
|
||||
#define COMSIG_LIVING_LIFE "life_tick" //from base of mob/living/Life() (seconds, times_fired)
|
||||
#define COMPONENT_INTERRUPT_LIFE_BIOLOGICAL 1 // interrupt biological processes
|
||||
#define COMPONENT_INTERRUPT_LIFE_PHYSICAL 2 // interrupt physical handling
|
||||
#define COMPONET_INTERRUPT_STATUS_EFFECTS 3 // interrupt status effects
|
||||
|
||||
#define COMSIG_LIVING_BIOLOGICAL_LIFE "biological_life" //from base of mob/living/BiologicalLife() (seconds, times_fired)
|
||||
|
||||
@@ -526,7 +527,19 @@
|
||||
#define COMSIG_PROJECTILE_PREHIT "com_proj_prehit" ///sent to targets during the process_hit proc of projectiles
|
||||
|
||||
#define COMSIG_PELLET_CLOUD_INIT "pellet_cloud_init" // sent to targets during the process_hit proc of projectiles
|
||||
// /obj/vehicle/sealed/mecha signals
|
||||
// /sent from mecha action buttons to the mecha they're linked to
|
||||
#define COMSIG_MECHA_ACTION_TRIGGER "mecha_action_activate"
|
||||
|
||||
///sent from clicking while you have no equipment selected. Sent before cooldown and adjacency checks, so you can use this for infinite range things if you want.
|
||||
#define COMSIG_MECHA_MELEE_CLICK "mecha_action_melee_click"
|
||||
/// Prevents click from happening.
|
||||
#define COMPONENT_CANCEL_MELEE_CLICK (1<<0)
|
||||
///sent from clicking while you have equipment selected.
|
||||
#define COMSIG_MECHA_EQUIPMENT_CLICK "mecha_action_equipment_click"
|
||||
/// Prevents click from happening.
|
||||
#define COMPONENT_CANCEL_EQUIPMENT_CLICK (1<<0)
|
||||
|
||||
// /mob/living/carbon/human signals
|
||||
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target)
|
||||
#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker)
|
||||
|
||||
@@ -207,7 +207,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list(
|
||||
|
||||
#define ismachinery(A) (istype(A, /obj/machinery))
|
||||
|
||||
#define ismecha(A) (istype(A, /obj/mecha))
|
||||
#define ismecha(A) (istype(A, /obj/vehicle/sealed/mecha))
|
||||
|
||||
#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#define LOG_ADMIN_PRIVATE (1 << 14)
|
||||
#define LOG_ASAY (1 << 15)
|
||||
#define LOG_VIRUS (1 << 16)
|
||||
#define LOG_MECHA (1 << 17)
|
||||
#define LOG_SHUTTLE (1 << 18)
|
||||
#define LOG_VICTIM (1 << 19)
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#define MECHA_INT_FIRE (1<<0)
|
||||
#define MECHA_INT_TEMP_CONTROL (1<<1)
|
||||
#define MECHA_INT_SHORT_CIRCUIT (1<<2)
|
||||
#define MECHA_INT_TANK_BREACH (1<<3)
|
||||
#define MECHA_INT_CONTROL_LOST (1<<4)
|
||||
|
||||
#define ADDING_ACCESS_POSSIBLE (1<<0)
|
||||
#define ADDING_MAINT_ACCESS_POSSIBLE (1<<1)
|
||||
#define CANSTRAFE (1<<2)
|
||||
#define LIGHTS_ON (1<<3)
|
||||
#define SILICON_PILOT (1<<4)
|
||||
#define IS_ENCLOSED (1<<5)
|
||||
#define HAS_LIGHTS (1<<6)
|
||||
#define QUIET_STEPS (1<<7)
|
||||
#define QUIET_TURNS (1<<8)
|
||||
///blocks using equipment and melee attacking.
|
||||
#define CANNOT_INTERACT (1<<9)
|
||||
/// posibrains can drive this mecha
|
||||
#define MMI_COMPATIBLE (1<<10)
|
||||
|
||||
#define MECHA_MELEE (1 << 0)
|
||||
#define MECHA_RANGED (1 << 1)
|
||||
|
||||
#define MECHA_FRONT_ARMOUR 1
|
||||
#define MECHA_SIDE_ARMOUR 2
|
||||
#define MECHA_BACK_ARMOUR 3
|
||||
|
||||
#define MECHA_LOCKED 0
|
||||
#define MECHA_SECURE_BOLTS 1
|
||||
#define MECHA_LOOSE_BOLTS 2
|
||||
#define MECHA_OPEN_HATCH 3
|
||||
@@ -1,3 +1,14 @@
|
||||
|
||||
// check_pierce() return values
|
||||
/// Default behavior: hit and delete self
|
||||
#define PROJECTILE_PIERCE_NONE 0
|
||||
/// Hit the thing but go through without deleting. Causes on_hit to be called with pierced = TRUE
|
||||
#define PROJECTILE_PIERCE_HIT 1
|
||||
/// Entirely phase through the thing without ever hitting.
|
||||
#define PROJECTILE_PIERCE_PHASE 2
|
||||
// Delete self without hitting
|
||||
#define PROJECTILE_DELETE_WITHOUT_HITTING 3
|
||||
|
||||
/// This atom should be ricocheted off of from its inherent properties using standard % chance handling.
|
||||
#define PROJECTILE_RICOCHET_YES 1
|
||||
/// This atom should not be ricocheted off of from its inherent properties.
|
||||
|
||||
@@ -74,5 +74,6 @@
|
||||
)
|
||||
|
||||
#define BOMB_TARGET_POINTS 50000 //Adjust as needed. Actual hard cap is double this, but will never be reached due to hyperbolic curve.
|
||||
#define BOMB_TARGET_SIZE 175 // The shockwave radius required for a bomb to get TECHWEB_BOMB_MIDPOINT points.
|
||||
#define BOMB_TARGET_SIZE (world.system_type == MS_WINDOWS ? 240 : 50000) // The shockwave radius required for a bomb to get TECHWEB_BOMB_MIDPOINT points.
|
||||
// Linux still has old trit fires, so
|
||||
#define BOMB_SUB_TARGET_EXPONENT 3 // The power of the points curve below the target size. Higher = less points for worse bombs, below target.
|
||||
|
||||
@@ -152,4 +152,9 @@
|
||||
// GROUPED //
|
||||
/////////////
|
||||
|
||||
#define STASIS_MACHINE_EFFECT "stasis_machine"
|
||||
|
||||
#define STASIS_ASCENSION_EFFECT "heretic_ascension"
|
||||
|
||||
/// If the incapacitated status effect will ignore a mob in stasis (stasis beds)
|
||||
#define IGNORE_STASIS (1<<1)
|
||||
|
||||
@@ -70,6 +70,10 @@
|
||||
#define HAS_TRAIT_NOT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (length(target.status_traits[trait] - source) > 0) : FALSE) : FALSE)
|
||||
|
||||
//mob traits
|
||||
/// Prevents voluntary movement.
|
||||
#define TRAIT_IMMOBILIZED "immobilized"
|
||||
/// Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage).
|
||||
#define TRAIT_HANDS_BLOCKED "handsblocked"
|
||||
#define TRAIT_BLIND "blind"
|
||||
#define TRAIT_MUTE "mute"
|
||||
#define TRAIT_EMOTEMUTE "emotemute"
|
||||
@@ -226,7 +230,7 @@
|
||||
#define TRAIT_HUMAN_NO_RENDER "human_no_render"
|
||||
#define TRAIT_TRASHCAN "trashcan"
|
||||
///Used for fireman carry to have mobe not be dropped when passing by a prone individual.
|
||||
#define TRAIT_BEING_CARRIED "being_carried"
|
||||
#define TRAIT_BEING_CARRIED "being_carried"
|
||||
|
||||
// mobility flag traits
|
||||
// IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it)
|
||||
|
||||
@@ -11,6 +11,11 @@
|
||||
///changing around settings and the like.
|
||||
#define VEHICLE_CONTROL_SETTINGS (1<<4)
|
||||
|
||||
|
||||
///ez define for giving a single pilot mech all the flags it needs.
|
||||
#define FULL_MECHA_CONTROL ALL
|
||||
|
||||
|
||||
//car_traits flags
|
||||
///Will this car kidnap people by ramming into them?
|
||||
#define CAN_KIDNAP (1<<0)
|
||||
|
||||
@@ -77,6 +77,10 @@
|
||||
if (CONFIG_GET(flag/log_game))
|
||||
WRITE_LOG(GLOB.world_game_log, "GAME: [text]")
|
||||
|
||||
/proc/log_mecha(text)
|
||||
if (CONFIG_GET(flag/log_mecha))
|
||||
WRITE_LOG(GLOB.world_mecha_log, "MECHA: [text]")
|
||||
|
||||
/proc/log_virus(text)
|
||||
if (CONFIG_GET(flag/log_virus))
|
||||
WRITE_LOG(GLOB.world_virus_log, "VIRUS: [text]")
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
break
|
||||
|
||||
// CLEANUP
|
||||
qdel(progbar)
|
||||
progbar.end_progress()
|
||||
// If we failed, just return.
|
||||
if(!.)
|
||||
return FALSE
|
||||
@@ -206,8 +206,9 @@
|
||||
if((!drifting && user.loc != user_loc) || target.loc != target_loc || (!ignorehelditem && user.get_active_held_item() != holding) || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
|
||||
. = 0
|
||||
break
|
||||
if(progress)
|
||||
qdel(progbar)
|
||||
|
||||
if(!QDELETED(progbar))
|
||||
progbar.end_progress()
|
||||
|
||||
if(!QDELETED(target))
|
||||
LAZYREMOVE(user.do_afters, target)
|
||||
@@ -296,8 +297,10 @@
|
||||
if(user.get_active_held_item() != holding)
|
||||
. = 0
|
||||
break
|
||||
if(progress)
|
||||
qdel(progbar)
|
||||
|
||||
if(!QDELETED(progbar))
|
||||
progbar.end_progress()
|
||||
|
||||
if(!QDELETED(target))
|
||||
LAZYREMOVE(user.do_afters, target)
|
||||
|
||||
@@ -351,8 +354,10 @@
|
||||
if((!drifting && user_loc != user.loc) || QDELETED(target) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
|
||||
. = 0
|
||||
break mainloop
|
||||
if(progbar)
|
||||
qdel(progbar)
|
||||
|
||||
if(!QDELETED(progbar))
|
||||
progbar.end_progress()
|
||||
|
||||
for(var/thing in targets)
|
||||
var/atom/target = thing
|
||||
if(!QDELETED(target))
|
||||
|
||||
@@ -484,3 +484,5 @@ GLOBAL_LIST_EMPTY(species_datums)
|
||||
|
||||
//check if the person is dead, not sure where to put this
|
||||
#define IS_DEAD_OR_INCAP(source) (source.incapacitated() || source.stat)
|
||||
|
||||
#define IS_IN_STASIS(mob) (mob.has_status_effect(/datum/status_effect/grouped/stasis))
|
||||
|
||||
@@ -340,12 +340,12 @@
|
||||
/turf/proc/LinkBlockedWithAccess(turf/destination_turf, caller, ID)
|
||||
if(destination_turf.x != x && destination_turf.y != y) //diagonal
|
||||
var/in_dir = get_dir(destination_turf,src) // eg. northwest (1+8) = 9 (00001001)
|
||||
var/first_step_direction_a = in_dir & 3 // eg. north (1+8)&3 (0000 0011) = 1 (0000 0001)
|
||||
var/first_step_direction_b = in_dir & 12 // eg. west (1+8)&12 (0000 1100) = 8 (0000 1000)
|
||||
var/first_step_direction_a = in_dir & 3 // eg. north (1+8)&3 (0000 0011) = 1 (0000 0001)
|
||||
var/first_step_direction_b = in_dir & 12 // eg. west (1+8)&12 (0000 1100) = 8 (0000 1000)
|
||||
|
||||
for(var/first_step_direction in list(first_step_direction_a,first_step_direction_b))
|
||||
var/turf/midstep_turf = get_step(destination_turf,first_step_direction)
|
||||
var/way_blocked = LinkBlockedWithAccess(midstep_turf,caller,ID) || midstep_turf.LinkBlockedWithAccess(destination_turf,caller,ID)
|
||||
var/way_blocked = midstep_turf.density || LinkBlockedWithAccess(midstep_turf,caller,ID) || midstep_turf.LinkBlockedWithAccess(destination_turf,caller,ID)
|
||||
if(!way_blocked)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -75,10 +75,8 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
|
||||
/proc/daysSince(realtimev)
|
||||
return round((world.realtime - realtimev) / (24 HOURS))
|
||||
|
||||
/proc/worldtime2text()
|
||||
return gameTimestamp("hh:mm:ss", world.time)
|
||||
/proc/worldtime2text(wtime = world.timeofday)
|
||||
return gameTimestamp("hh:mm:ss", wtime)
|
||||
|
||||
/proc/gameTimestamp(format = "hh:mm:ss", wtime=null)
|
||||
if(!wtime)
|
||||
wtime = world.time
|
||||
/proc/gameTimestamp(format = "hh:mm:ss", wtime=world.time)
|
||||
return time2text(wtime - GLOB.timezoneOffset, format)
|
||||
|
||||
@@ -1235,7 +1235,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
move_resist = INFINITY
|
||||
var/ready_to_die = FALSE
|
||||
|
||||
/mob/dview/Initialize() //Properly prevents this mob from gaining huds or joining any global lists
|
||||
/mob/dview/Initialize(mapload) //Properly prevents this mob from gaining huds or joining any global lists
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
if(flags_1 & INITIALIZED_1)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
|
||||
@@ -130,7 +130,7 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"FLYING" = FLYING,
|
||||
"VENTCRAWLING" = VENTCRAWLING,
|
||||
"FLOATING" = FLOATING,
|
||||
"UNSTOPPABLE" = UNSTOPPABLE
|
||||
"PHASING" = PHASING
|
||||
),
|
||||
"resistance_flags" = list(
|
||||
"LAVA_PROOF" = LAVA_PROOF,
|
||||
|
||||
@@ -33,8 +33,8 @@ GLOBAL_VAR(query_debug_log)
|
||||
GLOBAL_PROTECT(query_debug_log)
|
||||
GLOBAL_VAR(world_job_debug_log)
|
||||
GLOBAL_PROTECT(world_job_debug_log)
|
||||
// GLOBAL_VAR(world_mecha_log)
|
||||
// GLOBAL_PROTECT(world_mecha_log)
|
||||
GLOBAL_VAR(world_mecha_log)
|
||||
GLOBAL_PROTECT(world_mecha_log)
|
||||
GLOBAL_VAR(world_virus_log)
|
||||
GLOBAL_PROTECT(world_virus_log)
|
||||
GLOBAL_VAR(world_asset_log)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
for(var/obj/O in src)
|
||||
if((mover && O.CanPass(mover,get_step(src,target_dir))) || (!mover && !O.density))
|
||||
continue
|
||||
if(O == target_atom || O == mover || (O.pass_flags & LETPASSTHROW)) //check if there's a dense object present on the turf
|
||||
if(O == target_atom || O == mover || (O.pass_flags_self & LETPASSTHROW)) //check if there's a dense object present on the turf
|
||||
continue // LETPASSTHROW is used for anything you can click through (or the firedoor special case, see above)
|
||||
|
||||
if( O.flags_1&ON_BORDER_1) // windows are on border, check them first
|
||||
|
||||
@@ -55,11 +55,6 @@
|
||||
if(modifiers["shift"] && modifiers["ctrl"])
|
||||
CtrlShiftClickOn(A)
|
||||
return
|
||||
if(modifiers["middle"])
|
||||
if(controlled_mech) //Are we piloting a mech? Placed here so the modifiers are not overridden.
|
||||
controlled_mech.click_action(A, src, params) //Override AI normal click behavior.
|
||||
return
|
||||
|
||||
if(modifiers["shift"])
|
||||
ShiftClickOn(A)
|
||||
return
|
||||
|
||||
@@ -82,11 +82,6 @@
|
||||
if(!modifiers["catcher"] && A.IsObscured())
|
||||
return
|
||||
|
||||
if(ismecha(loc))
|
||||
var/obj/mecha/M = loc
|
||||
M.click_action(A,src,params)
|
||||
return TRUE
|
||||
|
||||
if(restrained())
|
||||
DelayNextAction(CLICK_CD_HANDCUFFED)
|
||||
return RestrainedClickOn(A)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
var/mutable_appearance/hide_appearance
|
||||
var/mutable_appearance/show_appearance
|
||||
|
||||
/atom/movable/screen/movable/action_button/hide_toggle/Initialize()
|
||||
/atom/movable/screen/movable/action_button/hide_toggle/Initialize(mapload)
|
||||
. = ..()
|
||||
var/static/list/icon_cache = list()
|
||||
|
||||
|
||||
@@ -349,7 +349,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
/// Simply checks if the other person is still in range
|
||||
/atom/movable/screen/alert/give/proc/check_in_range(atom/taker)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
|
||||
if(!offerer.CanReach(taker))
|
||||
to_chat(owner, span_warning("You moved out of range of [offerer]!"))
|
||||
owner.clear_alert("[offerer]")
|
||||
@@ -455,7 +455,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
|
||||
var/angle = 0
|
||||
var/mob/living/simple_animal/hostile/construct/Cviewer = null
|
||||
|
||||
/atom/movable/screen/alert/bloodsense/Initialize()
|
||||
/atom/movable/screen/alert/bloodsense/Initialize(mapload)
|
||||
. = ..()
|
||||
narnar = new('icons/mob/screen_alert.dmi', "mini_nar")
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
@@ -820,7 +820,7 @@ so as to remain in compliance with the most up-to-date laws."
|
||||
return FALSE
|
||||
if(master && click_master)
|
||||
return usr.client.Click(master, location, control, params)
|
||||
|
||||
|
||||
return TRUE
|
||||
|
||||
/atom/movable/screen/alert/Destroy()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/atom/movable/screen/wanted/New()
|
||||
return ..()
|
||||
|
||||
/atom/movable/screen/wanted/Initialize()
|
||||
/atom/movable/screen/wanted/Initialize(mapload)
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
var/mutable_appearance/standard_background
|
||||
var/const/max_dimensions = 10
|
||||
|
||||
/atom/movable/screen/movable/pic_in_pic/Initialize()
|
||||
/atom/movable/screen/movable/pic_in_pic/Initialize(mapload)
|
||||
. = ..()
|
||||
make_backgrounds()
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
alpha = 255
|
||||
|
||||
/atom/movable/screen/plane_master/openspace/Initialize()
|
||||
/atom/movable/screen/plane_master/openspace/Initialize(mapload)
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
plane = ABOVE_WALL_PLANE
|
||||
appearance_flags = PLANE_MASTER
|
||||
|
||||
/atom/movable/screen/plane_master/above_wall/Initialize()
|
||||
/atom/movable/screen/plane_master/above_wall/Initialize(mapload)
|
||||
. = ..()
|
||||
add_filter("vision_cone", 100, list(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE))
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
appearance_flags = PLANE_MASTER //should use client color
|
||||
blend_mode = BLEND_OVERLAY
|
||||
|
||||
/atom/movable/screen/plane_master/game_world/Initialize()
|
||||
/atom/movable/screen/plane_master/game_world/Initialize(mapload)
|
||||
. = ..()
|
||||
add_filter("vision_cone", 100, list(type="alpha", render_source=FIELD_OF_VISION_RENDER_TARGET, flags=MASK_INVERSE))
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
render_target = FIELD_OF_VISION_RENDER_TARGET
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
/atom/movable/screen/plane_master/field_of_vision/Initialize()
|
||||
/atom/movable/screen/plane_master/field_of_vision/Initialize(mapload)
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
plane = FIELD_OF_VISION_VISUAL_PLANE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
|
||||
/atom/movable/screen/plane_master/field_of_vision_visual/Initialize()
|
||||
/atom/movable/screen/plane_master/field_of_vision_visual/Initialize(mapload)
|
||||
. = ..()
|
||||
filters += filter(type="alpha", render_source=FIELD_OF_VISION_BLOCKER_RENDER_TARGET, flags=MASK_INVERSE)
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
* This is then used to alpha mask the lighting plane.
|
||||
*/
|
||||
|
||||
/atom/movable/screen/plane_master/lighting/Initialize()
|
||||
/atom/movable/screen/plane_master/lighting/Initialize(mapload)
|
||||
. = ..()
|
||||
add_filter("emissives", 1, alpha_mask_filter(render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE))
|
||||
add_filter("object_lighting", 2, alpha_mask_filter(render_source = O_LIGHTING_VISUAL_RENDER_TARGET, flags = MASK_INVERSE))
|
||||
@@ -152,7 +152,7 @@
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_target = EMISSIVE_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/emissive/Initialize()
|
||||
/atom/movable/screen/plane_master/emissive/Initialize(mapload)
|
||||
. = ..()
|
||||
add_filter("em_block_masking", 1, color_matrix_filter(GLOB.em_mask_matrix))
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
icon_state = "prog_bar_100"
|
||||
layer = 20 // under hand buttons
|
||||
|
||||
/atom/movable/screen/action_bar/clickdelay/Initialize()
|
||||
/atom/movable/screen/action_bar/clickdelay/Initialize(mapload)
|
||||
. = ..()
|
||||
var/matrix/M = new
|
||||
M.Scale(2, 1)
|
||||
|
||||
@@ -11,10 +11,6 @@
|
||||
if(!modifiers["catcher"] && A.IsObscured())
|
||||
return
|
||||
|
||||
if(ismecha(loc))
|
||||
var/obj/mecha/M = loc
|
||||
return M.click_action(A,src,params)
|
||||
|
||||
if(restrained())
|
||||
DelayNextAction(CLICK_CD_HANDCUFFED)
|
||||
return RestrainedClickOn(A)
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
var/atom/movable/focus
|
||||
var/mob/living/carbon/tk_user
|
||||
|
||||
/obj/item/tk_grab/Initialize()
|
||||
/obj/item/tk_grab/Initialize(mapload)
|
||||
. = ..()
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
|
||||
@@ -381,14 +381,14 @@
|
||||
/*~~~~~~~~~~~~~~~~~~~~
|
||||
BIG STOMPY MECHS
|
||||
~~~~~~~~~~~~~~~~~~~~~*/
|
||||
/obj/mecha/proc/diag_hud_set_mechhealth()
|
||||
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechhealth()
|
||||
var/image/holder = hud_list[DIAG_MECH_HUD]
|
||||
var/icon/I = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = I.Height() - world.icon_size
|
||||
holder.icon_state = "huddiag[RoundDiagBar(obj_integrity/max_integrity)]"
|
||||
|
||||
|
||||
/obj/mecha/proc/diag_hud_set_mechcell()
|
||||
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechcell()
|
||||
var/image/holder = hud_list[DIAG_BATT_HUD]
|
||||
var/icon/I = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = I.Height() - world.icon_size
|
||||
@@ -399,7 +399,7 @@
|
||||
holder.icon_state = "hudnobatt"
|
||||
|
||||
|
||||
/obj/mecha/proc/diag_hud_set_mechstat()
|
||||
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechstat()
|
||||
var/image/holder = hud_list[DIAG_STAT_HUD]
|
||||
var/icon/I = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = I.Height() - world.icon_size
|
||||
@@ -407,7 +407,7 @@
|
||||
if(internal_damage)
|
||||
holder.icon_state = "hudwarn"
|
||||
|
||||
/obj/mecha/proc/diag_hud_set_mechtracking() //Shows tracking beacons on the mech
|
||||
/obj/vehicle/sealed/mecha/proc/diag_hud_set_mechtracking() //Shows tracking beacons on the mech
|
||||
var/image/holder = hud_list[DIAG_TRACK_HUD]
|
||||
var/icon/I = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = I.Height() - world.icon_size
|
||||
|
||||
@@ -31,6 +31,10 @@
|
||||
/datum/config_entry/flag/log_game
|
||||
config_entry_value = TRUE
|
||||
|
||||
/// log mech data
|
||||
/datum/config_entry/flag/log_mecha
|
||||
config_entry_value = TRUE
|
||||
|
||||
/// log virology data
|
||||
/datum/config_entry/flag/log_virus
|
||||
config_entry_value = TRUE
|
||||
|
||||
@@ -67,7 +67,7 @@ SUBSYSTEM_DEF(atoms)
|
||||
|
||||
for (var/queued_deletion in queued_deletions)
|
||||
qdel(queued_deletion)
|
||||
|
||||
|
||||
testing("[queued_deletions.len] atoms were queued for deletion.")
|
||||
queued_deletions.Cut()
|
||||
|
||||
@@ -152,7 +152,7 @@ SUBSYSTEM_DEF(atoms)
|
||||
. += "Path : [path] \n"
|
||||
var/fails = BadInitializeCalls[path]
|
||||
if(fails & BAD_INIT_DIDNT_INIT)
|
||||
. += "- Didn't call atom/Initialize()\n"
|
||||
. += "- Didn't call atom/Initialize(mapload)\n"
|
||||
if(fails & BAD_INIT_NO_HINT)
|
||||
. += "- Didn't return an Initialize hint\n"
|
||||
if(fails & BAD_INIT_QDEL_BEFORE)
|
||||
|
||||
@@ -48,7 +48,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
||||
cli.prefs.save_character()
|
||||
if (!silent && LAZYLEN(cut))
|
||||
to_chat(to_chat_target || user, "<span class='boldwarning'>Some quirks have been cut from your character because of these quirks conflicting with your job assignment: [english_list(cut)].</span>")
|
||||
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(H) && H.dna?.species)
|
||||
var/datum/species/S = H.dna.species
|
||||
|
||||
@@ -200,6 +200,6 @@ SUBSYSTEM_DEF(throwing)
|
||||
var/atom/movable/AM = thing
|
||||
if (AM == thrownthing || (AM == thrower && !ismob(thrownthing)))
|
||||
continue
|
||||
if (AM.density && !(AM.pass_flags & LETPASSTHROW) && !(AM.flags_1 & ON_BORDER_1))
|
||||
if (AM.density && !(AM.pass_flags_self & LETPASSTHROW) && !(AM.flags_1 & ON_BORDER_1))
|
||||
finalize(hit=TRUE, target=AM)
|
||||
return TRUE
|
||||
|
||||
@@ -107,7 +107,7 @@ SUBSYSTEM_DEF(traumas)
|
||||
/obj/item/clothing/under/rank/medical/doctor/nurse, /obj/item/clothing/under/rank/medical/chief_medical_officer,
|
||||
/obj/item/reagent_containers/syringe, /obj/item/reagent_containers/pill/, /obj/item/reagent_containers/hypospray,
|
||||
/obj/item/storage/firstaid, /obj/item/storage/pill_bottle, /obj/item/healthanalyzer,
|
||||
/obj/structure/sign/departments/medbay, /obj/machinery/door/airlock/medical, /obj/machinery/sleeper,
|
||||
/obj/structure/sign/departments/medbay, /obj/machinery/door/airlock/medical, /obj/machinery/sleeper, /obj/machinery/stasis,
|
||||
/obj/machinery/dna_scannernew, /obj/machinery/atmospherics/components/unary/cryo_cell, /obj/item/surgical_drapes,
|
||||
/obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw,
|
||||
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit, /obj/item/clothing/head/plaguedoctorhat, /obj/item/clothing/mask/gas/plaguedoctor)),
|
||||
@@ -159,7 +159,7 @@ SUBSYSTEM_DEF(traumas)
|
||||
/obj/item/storage/backpack/mime, /obj/item/reagent_containers/food/snacks/grown/banana/mime,
|
||||
/obj/item/grown/bananapeel/mimanapeel, /obj/item/cartridge/virus/mime, /obj/item/clothing/shoes/sneakers/mime,
|
||||
/obj/item/bedsheet/mime, /obj/item/reagent_containers/food/snacks/burger/mime, /obj/item/clothing/head/beret,
|
||||
/obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/mecha/combat/reticence)),
|
||||
/obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/vehicle/sealed/mecha/combat/reticence)),
|
||||
|
||||
"cats" = typecacheof(list(/obj/item/organ/ears/cat, /obj/item/organ/tail/cat, /obj/item/laser_pointer, /obj/item/toy/cattoy, /obj/item/clothing/head/kitty,
|
||||
/obj/item/clothing/head/collectable/kitty, /obj/item/melee/chainofcommand/tailwhip/kitty, /obj/item/stack/sheet/animalhide/cat)),
|
||||
@@ -169,7 +169,7 @@ SUBSYSTEM_DEF(traumas)
|
||||
/obj/structure/fluff/empty_sleeper/syndicate, /obj/item/implant/radio/syndicate, /obj/item/clothing/head/helmet/space/syndicate, /obj/machinery/nuclearbomb/syndicate, /obj/item/grenade/syndieminibomb, /obj/item/storage/backpack/duffelbag/syndie, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver,
|
||||
/obj/item/gun/ballistic/automatic/shotgun/bulldog, /obj/item/gun/ballistic/automatic/c20r, /obj/item/gun/ballistic/automatic/m90, /obj/item/gun/ballistic/automatic/l6_saw, /obj/item/storage/belt/grenade/full, /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate, /obj/item/gun/energy/kinetic_accelerator/crossbow,
|
||||
/obj/item/melee/transforming/energy/sword/saber, /obj/item/dualsaber, /obj/item/melee/powerfist, /obj/item/storage/box/syndie_kit, /obj/item/grenade/spawnergrenade/manhacks, /obj/item/grenade/chem_grenade/bioterrorfoam, /obj/item/reagent_containers/spray/chemsprayer/bioterror, /obj/item/ammo_box/magazine/m10mm,
|
||||
/obj/item/ammo_box/magazine/pistolm9mm, /obj/item/ammo_box/a357, /obj/item/ammo_box/magazine/m12g, /obj/item/ammo_box/magazine/mm195x129, /obj/item/antag_spawner/nuke_ops, /obj/mecha/combat/gygax/dark, /obj/mecha/combat/marauder/mauler, /obj/item/soap/syndie, /obj/item/gun/syringe/syndicate, /obj/item/cartridge/virus/syndicate,
|
||||
/obj/item/ammo_box/magazine/pistolm9mm, /obj/item/ammo_box/a357, /obj/item/ammo_box/magazine/m12g, /obj/item/ammo_box/magazine/mm195x129, /obj/item/antag_spawner/nuke_ops, /obj/vehicle/sealed/mecha/combat/gygax/dark, /obj/vehicle/sealed/mecha/combat/marauder/mauler, /obj/item/soap/syndie, /obj/item/gun/syringe/syndicate, /obj/item/cartridge/virus/syndicate,
|
||||
/obj/item/cartridge/virus/frame, /obj/item/chameleon, /obj/item/storage/box/syndie_kit/cutouts, /obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/card/emag, /obj/item/storage/toolbox/syndicate, /obj/item/storage/book/bible/syndicate, /obj/item/encryptionkey/binary, /obj/item/encryptionkey/syndicate, /obj/item/aiModule/syndicate,
|
||||
/obj/item/clothing/shoes/magboots/syndie, /obj/item/powersink, /obj/item/sbeacondrop, /obj/item/sbeacondrop/bomb, /obj/item/syndicatedetonator, /obj/item/shield/energy, /obj/item/assault_pod, /obj/item/slimepotion/slime/sentience/nuclear, /obj/item/stack/telecrystal, /obj/item/jammer, /obj/item/codespeak_manual/unlimited,
|
||||
/obj/item/toy/cards/deck/syndicate, /obj/item/storage/secure/briefcase/syndie, /obj/item/storage/fancy/cigarettes/cigpack_syndicate, /obj/item/toy/syndicateballoon, /obj/item/clothing/gloves/fingerless/pugilist/rapid, /obj/item/paper/fluff/ruins/thederelict/syndie_mission, /obj/item/organ/cyberimp/eyes/hud/security/syndicate, /obj/item/clothing/head/HoS/syndicate,
|
||||
|
||||
@@ -5,12 +5,10 @@ SUBSYSTEM_DEF(vis_overlays)
|
||||
init_order = INIT_ORDER_VIS
|
||||
|
||||
var/list/vis_overlay_cache
|
||||
var/list/unique_vis_overlays
|
||||
var/list/currentrun
|
||||
|
||||
/datum/controller/subsystem/vis_overlays/Initialize()
|
||||
vis_overlay_cache = list()
|
||||
unique_vis_overlays = list()
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/vis_overlays/fire(resumed = FALSE)
|
||||
@@ -30,7 +28,7 @@ SUBSYSTEM_DEF(vis_overlays)
|
||||
if(MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
//the "thing" var can be anything with vis_contents which includes images
|
||||
//the "thing" var can be anything with vis_contents which includes images - in the future someone should totally allow vis overlays to be passed in as an arg instead of all this bullshit
|
||||
/datum/controller/subsystem/vis_overlays/proc/add_vis_overlay(atom/movable/thing, icon, iconstate, layer, plane, dir, alpha = 255, add_appearance_flags = NONE, unique = FALSE)
|
||||
var/obj/effect/overlay/vis/overlay
|
||||
if(!unique)
|
||||
@@ -45,7 +43,6 @@ SUBSYSTEM_DEF(vis_overlays)
|
||||
overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags)
|
||||
overlay.cache_expiration = -1
|
||||
var/cache_id = "\ref[overlay]@{[world.time]}"
|
||||
unique_vis_overlays += overlay
|
||||
vis_overlay_cache[cache_id] = overlay
|
||||
. = overlay
|
||||
thing.vis_contents += overlay
|
||||
|
||||
+14
-1
@@ -1,5 +1,18 @@
|
||||
#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]-[wound]"
|
||||
|
||||
#define MELEE "melee"
|
||||
#define BULLET "bullet"
|
||||
#define LASER "laser"
|
||||
#define ENERGY "energy"
|
||||
#define BOMB "bomb"
|
||||
#define BIO "bio"
|
||||
#define RAD "rad"
|
||||
#define FIRE "fire"
|
||||
#define ACID "acid"
|
||||
#define MAGIC "magic"
|
||||
#define WOUND "wound"
|
||||
|
||||
|
||||
/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0, wound = 0)
|
||||
. = locate(ARMORID)
|
||||
if (!.)
|
||||
@@ -56,7 +69,7 @@
|
||||
return vars[rating]
|
||||
|
||||
/datum/armor/proc/getList()
|
||||
return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid, "magic" = magic, "wound" = wound)
|
||||
return list(MELEE = melee, BULLET = bullet, LASER = laser, ENERGY = energy, BOMB = bomb, BIO = bio, RAD = rad, FIRE = fire, ACID = acid, MAGIC = magic, WOUND = wound)
|
||||
|
||||
/datum/armor/proc/attachArmor(datum/armor/AA)
|
||||
return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, magic+AA.magic, wound+AA.wound)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
var/obj/effect/hallucination/simple/bluespace_stream/linked_to
|
||||
var/mob/living/carbon/seer
|
||||
|
||||
/obj/effect/hallucination/simple/bluespace_stream/Initialize()
|
||||
/obj/effect/hallucination/simple/bluespace_stream/Initialize(mapload)
|
||||
. = ..()
|
||||
QDEL_IN(src, 300)
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
if(!(O.resistance_flags & ACID_PROOF))
|
||||
if(prob(33))
|
||||
playsound(O.loc, 'sound/items/welder.ogg', 150, 1)
|
||||
O.take_damage(min(1 + round(sqrt(level)*0.3), 300), BURN, "acid", 0)
|
||||
O.take_damage(min(1 + round(sqrt(level)*0.3), 300), BURN, ACID, 0)
|
||||
|
||||
level = max(level - (5 + 3*round(sqrt(level))), 0)
|
||||
if(level <= 0)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
var/amount = 0
|
||||
var/maxamount = 3
|
||||
var/upgrade_item = /obj/item/stack/sheet/animalhide/goliath_hide
|
||||
var/datum/armor/added_armor = list("melee" = 10)
|
||||
var/datum/armor/added_armor = list(MELEE = 10)
|
||||
var/upgrade_name
|
||||
|
||||
/datum/component/armor_plate/Initialize(_maxamount,obj/item/_upgrade_item,datum/armor/_added_armor)
|
||||
@@ -12,7 +12,7 @@
|
||||
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
|
||||
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/applyplate)
|
||||
RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/dropplates)
|
||||
if(istype(parent, /obj/mecha/working/ripley))
|
||||
if(istype(parent, /obj/vehicle/sealed/mecha/working/ripley))
|
||||
RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_mech_overlays)
|
||||
|
||||
if(_maxamount)
|
||||
@@ -67,7 +67,7 @@
|
||||
O.armor = O.armor.attachArmor(added_armor)
|
||||
|
||||
if(ismecha(O))
|
||||
var/obj/mecha/R = O
|
||||
var/obj/vehicle/sealed/mecha/R = O
|
||||
R.update_icon()
|
||||
to_chat(user, "<span class='info'>You strengthen [R], improving its resistance against melee, bullet and laser damage.</span>")
|
||||
else
|
||||
@@ -80,11 +80,11 @@
|
||||
for(var/i in 1 to amount)
|
||||
new upgrade_item(get_turf(parent))
|
||||
|
||||
/datum/component/armor_plate/proc/apply_mech_overlays(obj/mecha/mech, list/overlays)
|
||||
/datum/component/armor_plate/proc/apply_mech_overlays(obj/vehicle/sealed/mecha/mech, list/overlays)
|
||||
if(amount)
|
||||
var/overlay_string = "ripley-g"
|
||||
if(amount >= 3)
|
||||
overlay_string += "-full"
|
||||
if(!mech.occupant)
|
||||
if(LAZYLEN(mech.occupants) < 1)
|
||||
overlay_string += "-open"
|
||||
overlays += overlay_string
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
to_chat(victim, "<span class='userdanger'>[weapon] sticks itself to your [limb.name]!</span>")
|
||||
|
||||
if(damage > 0)
|
||||
var/armor = victim.run_armor_check(limb.body_zone, "melee", "Your armor has protected your [limb.name].", "Your armor has softened a hit to your [limb.name].",weapon.armour_penetration)
|
||||
var/armor = victim.run_armor_check(limb.body_zone, MELEE, "Your armor has protected your [limb.name].", "Your armor has softened a hit to your [limb.name].",weapon.armour_penetration)
|
||||
limb.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage, blocked=armor, sharpness = weapon.get_sharpness())
|
||||
|
||||
/// Called every time a carbon with a harmful embed moves, rolling a chance for the item to cause pain. The chance is halved if the carbon is crawling or walking.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* KILLER QUEEN
|
||||
*
|
||||
*
|
||||
* Simple contact bomb component
|
||||
* Blows up the first person to touch it.
|
||||
*/
|
||||
@@ -26,7 +26,7 @@
|
||||
var/flame = 0
|
||||
/// only triggered by living mobs
|
||||
var/living_only = TRUE
|
||||
|
||||
|
||||
|
||||
/datum/component/killerqueen/Initialize(ex_strength = EXPLODE_HEAVY, datum/callback/pre_explode, datum/callback/failure, examine_message, light = 0, heavy = 0, dev = 0, flame = 0, living_only = TRUE)
|
||||
. = ..()
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
RegisterSignal(parent, COMSIG_ITEM_DROPPED,.proc/OnDropped)
|
||||
|
||||
src.knockoff_chance = knockoff_chance
|
||||
|
||||
|
||||
if(zone_override)
|
||||
target_zones = zone_override
|
||||
|
||||
|
||||
@@ -38,5 +38,5 @@
|
||||
P.range = override_projectile_range
|
||||
P.preparePixelProjectile(shootat_turf, target)
|
||||
P.firer = firer // don't hit ourself that would be really annoying
|
||||
P.permutated += target // don't hit the target we hit already with the flak
|
||||
P.impacted = list(target = TRUE) // don't hit the target we hit already with the flak
|
||||
P.fire()
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
P.original = target
|
||||
P.fired_from = parent
|
||||
P.firer = parent // don't hit ourself that would be really annoying
|
||||
P.permutated += parent // don't hit the target we hit already with the flak
|
||||
P.impacted = list(parent = TRUE) // don't hit the target we hit already with the flak
|
||||
P.suppressed = SUPPRESSED_VERY // set the projectiles to make no message so we can do our own aggregate message
|
||||
P.preparePixelProjectile(target, parent)
|
||||
RegisterSignal(P, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/pellet_hit)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
progress.end_progress()
|
||||
A.do_squish(0.8, 1.2)
|
||||
|
||||
/datum/component/storage/concrete/bluespace/rped
|
||||
@@ -83,5 +83,5 @@
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
progress.end_progress()
|
||||
A.do_squish(0.8, 1.2)
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
var/list/rejections = list()
|
||||
while(do_after(M, 10, TRUE, parent, FALSE, CALLBACK(src, .proc/handle_mass_pickup, things, I.loc, rejections, progress)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
progress.end_progress()
|
||||
to_chat(M, "<span class='notice'>You put everything you could [insert_preposition] [parent].</span>")
|
||||
A.do_squish(1.4, 0.4)
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
progress.end_progress()
|
||||
A.do_squish(0.8, 1.2)
|
||||
|
||||
/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress, trigger_on_found = TRUE, mob/user)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
return !is_mouth_covered()
|
||||
|
||||
/mob/living/carbon/CanSpreadAirborneDisease()
|
||||
return !((head && (head.flags_cover & HEADCOVERSMOUTH) && (head.armor.getRating("bio") >= 25)) || (wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH) && (wear_mask.armor.getRating("bio") >= 25)))
|
||||
return !((head && (head.flags_cover & HEADCOVERSMOUTH) && (head.armor.getRating(BIO) >= 25)) || (wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH) && (wear_mask.armor.getRating(BIO) >= 25)))
|
||||
|
||||
/mob/living/proc/set_shocked()
|
||||
flags_1 |= SHOCKED_1
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
/datum/disease/crabcancer
|
||||
name = "Crab Cancer"
|
||||
form = "Skin Cancer"
|
||||
max_stages = 3
|
||||
cure_text = "Mutadone"
|
||||
spread_text = "Noncontagious"
|
||||
cures = list(/datum/reagent/medicine/mutadone)
|
||||
agent = "Carcinisoprojection Jelly"
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
permeability_mod = 1
|
||||
desc = "If left untreated, the patient will rapidly and painfully grow flesh that will fall off the subject. This can result in death if unmaintained."
|
||||
severity = DISEASE_SEVERITY_DANGEROUS
|
||||
spread_flags = DISEASE_SPREAD_NON_CONTAGIOUS
|
||||
visibility_flags = HIDDEN_PANDEMIC
|
||||
bypasses_immunity = TRUE
|
||||
|
||||
/datum/disease/crabcancer/stage_act()
|
||||
..()
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='warning'>" + pick("You feel uncomfortable.",
|
||||
"You can feel your arms and legs throbbing.",
|
||||
"You feel... crabby.",
|
||||
"You're starting to smell like seafood.") + "</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>" + pick("Your flesh is starting to look deformed.",
|
||||
"You feel your flesh bubbling and swelling.",
|
||||
"You think you see pincers coming out of your flesh.",
|
||||
"It's time for crab...") + "</span>")
|
||||
if(3)
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>" + pick("Your skin forms black, rough patches!",
|
||||
"The pain is unbearable!",
|
||||
"Your skin is forming painful cysts!") + "</span>")
|
||||
affected_mob.take_bodypart_damage(rand(1,5))
|
||||
if(prob(5))
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob]'s own flesh swells and tears away from \him!</span>", \
|
||||
"<span class='userdanger'>" + pick("You feel your flesh swelling and tearing away from you!",
|
||||
"Your own flesh grows and falls beneath you!",
|
||||
"The pain... the crabby meat falls off you!",
|
||||
"Your flesh... it tears!",
|
||||
"It is now time for crab!") + "</span>",
|
||||
"<span class='italics'>You hear a disgusting squelch of flesh being torn.</span>")
|
||||
playsound(affected_mob, 'sound/items/poster_ripped.ogg', 50, TRUE)
|
||||
playsound(get_turf(affected_mob), 'sound/effects/splat.ogg', 20, TRUE)
|
||||
affected_mob.emote("scream")
|
||||
affected_mob.take_bodypart_damage(rand(15,25))
|
||||
var/humanmeatamount = rand(0,2)
|
||||
var/crabmeatamount = rand(1,2)
|
||||
var/meattype = /obj/item/reagent_containers/food/snacks/meat/slab/human
|
||||
if(ishuman(affected_mob))
|
||||
meattype = affected_mob.dna.species.meat
|
||||
else //grab the carbon's meat instead (usually this means monkey meat... though other disease-compatible carbon mobs might apply.)
|
||||
meattype = affected_mob.type_of_meat
|
||||
|
||||
if(humanmeatamount)
|
||||
for(var/i=1 to humanmeatamount)
|
||||
var/obj/item/reagent_containers/food/snacks/meat/slab/newmeat = new meattype
|
||||
newmeat.name = "[affected_mob.real_name] [newmeat.name]"
|
||||
newmeat.forceMove(affected_mob.loc)
|
||||
if(crabmeatamount)
|
||||
for(var/i=1 to crabmeatamount)
|
||||
new /obj/item/reagent_containers/food/snacks/meat/rawcrab(affected_mob.loc)
|
||||
affected_mob.jitteriness += 3
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
var/actual_chance = embed_chance
|
||||
|
||||
if(!weapon.isEmbedHarmless()) // all the armor in the world won't save you from a kick me sign
|
||||
var/armor = max(victim.run_armor_check(hit_zone, "bullet", silent=TRUE), victim.run_armor_check(hit_zone, "bomb", silent=TRUE)) * 0.5 // we'll be nice and take the better of bullet and bomb armor, halved
|
||||
var/armor = max(victim.run_armor_check(hit_zone, BULLET, silent=TRUE), victim.run_armor_check(hit_zone, BOMB, silent=TRUE)) * 0.5 // we'll be nice and take the better of bullet and bomb armor, halved
|
||||
|
||||
if(armor) // we only care about armor penetration if there's actually armor to penetrate
|
||||
var/pen_mod = -armor + weapon.armour_penetration // even a little bit of armor can make a big difference for shrapnel with large negative armor pen
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
return TRUE
|
||||
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
var/armor_block = D.run_armor_check(affecting, MELEE)
|
||||
|
||||
playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1)
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
|
||||
/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(BODY_ZONE_CHEST)
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
var/armor_block = D.run_armor_check(affecting, MELEE)
|
||||
var/damage = (damage_roll(A,D)*2 + 25)
|
||||
if(!CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
return FALSE
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
/datum/martial_art/krav_maga/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
var/armor_block = D.run_armor_check(affecting, MELEE)
|
||||
if(check_streak(A,D))
|
||||
return TRUE
|
||||
log_combat(A, D, "punched")
|
||||
@@ -165,7 +165,7 @@
|
||||
if(check_streak(A,D))
|
||||
return TRUE
|
||||
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
|
||||
var/armor_block = D.run_armor_check(affecting, "melee")
|
||||
var/armor_block = D.run_armor_check(affecting, MELEE)
|
||||
var/damage = damage_roll(A,D)
|
||||
var/stunthreshold = A.dna.species.punchstunthreshold
|
||||
if(CHECK_MOBILITY(D, MOBILITY_STAND))
|
||||
@@ -233,4 +233,4 @@
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
resistance_flags = NONE
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50)
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
block_chance = 50
|
||||
var/wielded = FALSE // track wielded status on item
|
||||
|
||||
/obj/item/staff/bostaff/Initialize()
|
||||
/obj/item/staff/bostaff/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
|
||||
RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
|
||||
|
||||
@@ -30,7 +30,7 @@ Simple datum which is instanced once per type and is used for every object of sa
|
||||
///This is the amount of value per 1 unit of the material
|
||||
var/value_per_unit = 0
|
||||
///Armor modifiers, multiplies an items normal armor vars by these amounts.
|
||||
var/armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1)
|
||||
var/armor_modifiers = list(MELEE = 1, BULLET = 1, LASER = 1, ENERGY = 1, BOMB = 1, BIO = 1, RAD = 1, FIRE = 1, ACID = 1)
|
||||
///How beautiful is this material per unit.
|
||||
var/beauty_modifier = 0
|
||||
///Can be used to override the sound items make, lets add some SLOSHing.
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
sheet_type = /obj/item/stack/sheet/glass
|
||||
value_per_unit = 0.0025
|
||||
beauty_modifier = 0.05
|
||||
armor_modifiers = list("melee" = 0.2, "bullet" = 0.2, "laser" = 0, "energy" = 1, "bomb" = 0, "bio" = 0.2, "rad" = 0.2, "fire" = 1, "acid" = 0.2) // yeah ok
|
||||
armor_modifiers = list(MELEE = 0.2, BULLET = 0.2, LASER = 0, ENERGY = 1, BOMB = 0, BIO = 0.2, RAD = 0.2, FIRE = 1, ACID = 0.2) // yeah ok
|
||||
|
||||
/*
|
||||
Color matrices are like regular colors but unlike with normal colors, you can go over 255 on a channel.
|
||||
@@ -45,7 +45,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/gold
|
||||
value_per_unit = 0.0625
|
||||
beauty_modifier = 0.15
|
||||
armor_modifiers = list("melee" = 1.1, "bullet" = 1.1, "laser" = 1.15, "energy" = 1.15, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1.1)
|
||||
armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 1.15, ENERGY = 1.15, BOMB = 1, BIO = 1, RAD = 1, FIRE = 0.7, ACID = 1.1)
|
||||
|
||||
///Small force increase, for diamond swords
|
||||
/datum/material/diamond
|
||||
@@ -58,7 +58,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/diamond
|
||||
value_per_unit = 0.25
|
||||
beauty_modifier = 0.3
|
||||
armor_modifiers = list("melee" = 1.3, "bullet" = 1.3, "laser" = 0.6, "energy" = 1, "bomb" = 1.2, "bio" = 1, "rad" = 1, "fire" = 1, "acid" = 1)
|
||||
armor_modifiers = list(MELEE = 1.3, BULLET = 1.3, LASER = 0.6, ENERGY = 1, BOMB = 1.2, BIO = 1, RAD = 1, FIRE = 1, ACID = 1)
|
||||
|
||||
///Is slightly radioactive
|
||||
/datum/material/uranium
|
||||
@@ -69,7 +69,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/uranium
|
||||
value_per_unit = 0.05
|
||||
beauty_modifier = 0.3 //It shines so beautiful
|
||||
armor_modifiers = list("melee" = 1.5, "bullet" = 1.4, "laser" = 0.5, "energy" = 0.5, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 1, "acid" = 1)
|
||||
armor_modifiers = list(MELEE = 1.5, BULLET = 1.4, LASER = 0.5, ENERGY = 0.5, BOMB = 0, BIO = 0, RAD = 0, FIRE = 1, ACID = 1)
|
||||
|
||||
/datum/material/uranium/on_applied(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
@@ -90,7 +90,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/plasma
|
||||
value_per_unit = 0.1
|
||||
beauty_modifier = 0.15
|
||||
armor_modifiers = list("melee" = 1.4, "bullet" = 0.7, "laser" = 0, "energy" = 1.2, "bomb" = 0, "bio" = 1.2, "rad" = 1, "fire" = 0, "acid" = 0.5)
|
||||
armor_modifiers = list(MELEE = 1.4, BULLET = 0.7, LASER = 0, ENERGY = 1.2, BOMB = 0, BIO = 1.2, RAD = 1, FIRE = 0, ACID = 0.5)
|
||||
|
||||
/datum/material/plasma/on_applied(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
@@ -124,7 +124,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/bananium
|
||||
value_per_unit = 0.5
|
||||
beauty_modifier = 0.5
|
||||
armor_modifiers = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) //Clowns cant be blown away
|
||||
armor_modifiers = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 100, BIO = 0, RAD = 0, FIRE = 10, ACID = 0) //Clowns cant be blown away
|
||||
|
||||
/datum/material/bananium/on_applied(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
@@ -147,7 +147,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/titanium
|
||||
value_per_unit = 0.0625
|
||||
beauty_modifier = 0.05
|
||||
armor_modifiers = list("melee" = 1.35, "bullet" = 1.3, "laser" = 1.3, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 0.7, "acid" = 1)
|
||||
armor_modifiers = list(MELEE = 1.35, BULLET = 1.3, LASER = 1.3, ENERGY = 1.25, BOMB = 1.25, BIO = 1, RAD = 1, FIRE = 0.7, ACID = 1)
|
||||
|
||||
/datum/material/runite
|
||||
name = "runite"
|
||||
@@ -157,7 +157,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/runite
|
||||
beauty_modifier = 0.5
|
||||
armor_modifiers = list("melee" = 1.35, "bullet" = 2, "laser" = 0.5, "energy" = 1.25, "bomb" = 1.25, "bio" = 1, "rad" = 1, "fire" = 1.4, "acid" = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle.
|
||||
armor_modifiers = list(MELEE = 1.35, BULLET = 2, LASER = 0.5, ENERGY = 1.25, BOMB = 1.25, BIO = 1, RAD = 1, FIRE = 1.4, ACID = 1) //rune is weak against magic lasers but strong against bullets. This is the combat triangle.
|
||||
|
||||
///Force decrease
|
||||
/datum/material/plastic
|
||||
@@ -168,7 +168,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/plastic
|
||||
value_per_unit = 0.0125
|
||||
beauty_modifier = -0.01
|
||||
armor_modifiers = list("melee" = 1.5, "bullet" = 1.1, "laser" = 0.3, "energy" = 0.5, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 1.1, "acid" = 1)
|
||||
armor_modifiers = list(MELEE = 1.5, BULLET = 1.1, LASER = 0.3, ENERGY = 0.5, BOMB = 1, BIO = 1, RAD = 1, FIRE = 1.1, ACID = 1)
|
||||
|
||||
///Force decrease and mushy sound effect. (Not yet implemented)
|
||||
/datum/material/biomass
|
||||
@@ -187,7 +187,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
value_per_unit = 0.06
|
||||
beauty_modifier = 0.1
|
||||
armor_modifiers = list("melee" = 1.1, "bullet" = 1.1, "laser" = 0.4, "energy" = 0.4, "bomb" = 1, "bio" = 0.2, "rad" = 0, "fire" = 0, "acid" = 0.3)
|
||||
armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 0.4, ENERGY = 0.4, BOMB = 1, BIO = 0.2, RAD = 0, FIRE = 0, ACID = 0.3)
|
||||
|
||||
/datum/material/wood/on_applied_obj(obj/source, amount, material_flags)
|
||||
. = ..()
|
||||
@@ -211,7 +211,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/adamantine
|
||||
value_per_unit = 0.25
|
||||
beauty_modifier = 0.4
|
||||
armor_modifiers = list("melee" = 1.5, "bullet" = 1.5, "laser" = 1.3, "energy" = 1.3, "bomb" = 1, "bio" = 1, "rad" = 1, "fire" = 2.5, "acid" = 1)
|
||||
armor_modifiers = list(MELEE = 1.5, BULLET = 1.5, LASER = 1.3, ENERGY = 1.3, BOMB = 1, BIO = 1, RAD = 1, FIRE = 2.5, ACID = 1)
|
||||
|
||||
///RPG Magic. (Admin only)
|
||||
/datum/material/mythril
|
||||
@@ -222,7 +222,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/mineral/mythril
|
||||
value_per_unit = 0.75
|
||||
beauty_modifier = 0.5
|
||||
armor_modifiers = list("melee" = 2, "bullet" = 2, "laser" = 2, "energy" = 2, "bomb" = 2, "bio" = 2, "rad" = 2, "fire" = 2, "acid" = 2)
|
||||
armor_modifiers = list(MELEE = 2, BULLET = 2, LASER = 2, ENERGY = 2, BOMB = 2, BIO = 2, RAD = 2, FIRE = 2, ACID = 2)
|
||||
|
||||
/datum/material/mythril/on_applied_obj(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
@@ -244,7 +244,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
value_per_unit = 0.001
|
||||
strength_modifier = 0.5
|
||||
integrity_modifier = 0.1
|
||||
armor_modifiers = list("melee" = 0.25, "bullet" = 0.25, "laser" = 1.25, "energy" = 0.25, "bomb" = 0.25, "bio" = 0.25, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 0.25, BULLET = 0.25, LASER = 1.25, ENERGY = 0.25, BOMB = 0.25, BIO = 0.25, RAD = 1.5, FIRE = 1.5, ACID = 1.5)
|
||||
beauty_modifier = 0.25
|
||||
turf_sound_override = FOOTSTEP_SAND
|
||||
texture_layer_icon_state = "sand"
|
||||
@@ -257,7 +257,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/sandstone
|
||||
value_per_unit = 0.0025
|
||||
armor_modifiers = list("melee" = 0.5, "bullet" = 0.5, "laser" = 1.25, "energy" = 0.5, "bomb" = 0.5, "bio" = 0.25, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 0.5, BULLET = 0.5, LASER = 1.25, ENERGY = 0.5, BOMB = 0.5, BIO = 0.25, RAD = 1.5, FIRE = 1.5, ACID = 1.5)
|
||||
beauty_modifier = 0.3
|
||||
turf_sound_override = FOOTSTEP_WOOD
|
||||
texture_layer_icon_state = "brick"
|
||||
@@ -269,7 +269,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/snow
|
||||
value_per_unit = 0.0025
|
||||
armor_modifiers = list("melee" = 0.25, "bullet" = 0.25, "laser" = 0.25, "energy" = 0.25, "bomb" = 0.25, "bio" = 0.25, "rad" = 1.5, "fire" = 0.25, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 0.25, BULLET = 0.25, LASER = 0.25, ENERGY = 0.25, BOMB = 0.25, BIO = 0.25, RAD = 1.5, FIRE = 0.25, ACID = 1.5)
|
||||
beauty_modifier = 0.3
|
||||
turf_sound_override = FOOTSTEP_SAND
|
||||
texture_layer_icon_state = "sand"
|
||||
@@ -282,7 +282,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
strength_modifier = 1.2
|
||||
sheet_type = /obj/item/stack/sheet/runed_metal
|
||||
value_per_unit = 0.75
|
||||
armor_modifiers = list("melee" = 1.2, "bullet" = 1.2, "laser" = 1, "energy" = 1, "bomb" = 1.2, "bio" = 1.2, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 1, ENERGY = 1, BOMB = 1.2, BIO = 1.2, RAD = 1.5, FIRE = 1.5, ACID = 1.5)
|
||||
beauty_modifier = -0.15
|
||||
texture_layer_icon_state = "runed"
|
||||
|
||||
@@ -294,7 +294,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
strength_modifier = 1.3 // Replicant Alloy is very good for skull beatings..
|
||||
sheet_type = /obj/item/stack/tile/brass
|
||||
value_per_unit = 0.75
|
||||
armor_modifiers = list("melee" = 1.4, "bullet" = 1.4, "laser" = 0, "energy" = 0, "bomb" = 1.4, "bio" = 1.2, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5) //But it has.. a few problems that can't easily be compensated for.
|
||||
armor_modifiers = list(MELEE = 1.4, BULLET = 1.4, LASER = 0, ENERGY = 0, BOMB = 1.4, BIO = 1.2, RAD = 1.5, FIRE = 1.5, ACID = 1.5) //But it has.. a few problems that can't easily be compensated for.
|
||||
beauty_modifier = 0.3 //It really beats the cold plain plating of the station, doesn't it?
|
||||
|
||||
/datum/material/bronze
|
||||
@@ -305,7 +305,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/bronze
|
||||
value_per_unit = 0.025
|
||||
armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 1, BULLET = 1, LASER = 1, ENERGY = 1, BOMB = 1, BIO = 1, RAD = 1.5, FIRE = 1.5, ACID = 1.5)
|
||||
beauty_modifier = 0.2
|
||||
|
||||
/datum/material/paper
|
||||
@@ -315,7 +315,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/paperframes
|
||||
value_per_unit = 0.0025
|
||||
armor_modifiers = list("melee" = 0.1, "bullet" = 0.1, "laser" = 0.1, "energy" = 0.1, "bomb" = 0.1, "bio" = 0.1, "rad" = 1.5, "fire" = 0, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 0.1, BULLET = 0.1, LASER = 0.1, ENERGY = 0.1, BOMB = 0.1, BIO = 0.1, RAD = 1.5, FIRE = 0, ACID = 1.5)
|
||||
beauty_modifier = 0.3
|
||||
turf_sound_override = FOOTSTEP_SAND
|
||||
texture_layer_icon_state = "paper"
|
||||
@@ -340,7 +340,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/cardboard
|
||||
value_per_unit = 0.003
|
||||
armor_modifiers = list("melee" = 0.25, "bullet" = 0.25, "laser" = 0.25, "energy" = 0.25, "bomb" = 0.25, "bio" = 0.25, "rad" = 1.5, "fire" = 0, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 0.25, BULLET = 0.25, LASER = 0.25, ENERGY = 0.25, BOMB = 0.25, BIO = 0.25, RAD = 1.5, FIRE = 0, ACID = 1.5)
|
||||
beauty_modifier = -0.1
|
||||
|
||||
/datum/material/cardboard/on_applied_obj(obj/source, amount, material_flags)
|
||||
@@ -364,7 +364,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
sheet_type = /obj/item/stack/sheet/bone
|
||||
strength_modifier = 1.05
|
||||
value_per_unit = 0.05
|
||||
armor_modifiers = list("melee" = 1.2, "bullet" = 0.75, "laser" = 0.75, "energy" = 1.2, "bomb" = 1, "bio" = 1, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 1.2, BULLET = 0.75, LASER = 0.75, ENERGY = 1.2, BOMB = 1, BIO = 1, RAD = 1.5, FIRE = 1.5, ACID = 1.5)
|
||||
beauty_modifier = -0.2
|
||||
|
||||
/datum/material/bamboo
|
||||
@@ -374,7 +374,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
sheet_type = /obj/item/stack/sheet/mineral/bamboo
|
||||
value_per_unit = 0.0025
|
||||
armor_modifiers = list("melee" = 0.5, "bullet" = 0.5, "laser" = 0.5, "energy" = 0.5, "bomb" = 0.5, "bio" = 0.51, "rad" = 1.5, "fire" = 0.5, "acid" = 1.5)
|
||||
armor_modifiers = list(MELEE = 0.5, BULLET = 0.5, LASER = 0.5, ENERGY = 0.5, BOMB = 0.5, BIO = 0.51, RAD = 1.5, FIRE = 0.5, ACID = 1.5)
|
||||
beauty_modifier = 0.2
|
||||
turf_sound_override = FOOTSTEP_WOOD
|
||||
texture_layer_icon_state = "bamboo"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
value_per_unit = 0.05
|
||||
beauty_modifier = -0.3
|
||||
strength_modifier = 0.7
|
||||
armor_modifiers = list("melee" = 0.3, "bullet" = 0.3, "laser" = 1.2, "energy" = 1.2, "bomb" = 0.3, "bio" = 0, "rad" = 0.7, "fire" = 1, "acid" = 1)
|
||||
armor_modifiers = list(MELEE = 0.3, BULLET = 0.3, LASER = 1.2, ENERGY = 1.2, BOMB = 0.3, BIO = 0, RAD = 0.7, FIRE = 1, ACID = 1)
|
||||
item_sound_override = 'sound/effects/meatslap.ogg'
|
||||
turf_sound_override = FOOTSTEP_MEAT
|
||||
texture_layer_icon_state = "meat"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
value_per_unit = 0.05
|
||||
beauty_modifier = 0.1
|
||||
strength_modifier = 0.7
|
||||
armor_modifiers = list("melee" = 0.3, "bullet" = 0.3, "laser" = 1.2, "energy" = 1.2, "bomb" = 0.3, "bio" = 0, "rad" = 0.7, "fire" = 1, "acid" = 1)
|
||||
armor_modifiers = list(MELEE = 0.3, BULLET = 0.3, LASER = 1.2, ENERGY = 1.2, BOMB = 0.3, BIO = 0, RAD = 0.7, FIRE = 1, ACID = 1)
|
||||
item_sound_override = 'sound/effects/meatslap.ogg'
|
||||
turf_sound_override = FOOTSTEP_MEAT
|
||||
texture_layer_icon_state = "pizza"
|
||||
|
||||
@@ -147,6 +147,11 @@
|
||||
mood_change = -5
|
||||
timeout = 1 MINUTES
|
||||
|
||||
/datum/mood_event/painful_limb_regrowth
|
||||
description = "<span class='warning'>It's great to have all my limbs back but that was absolutely painful.</span>\n"
|
||||
mood_change = -5
|
||||
timeout = 1 MINUTES
|
||||
|
||||
/datum/mood_event/loud_gong
|
||||
description = "<span class='warning'>That loud gong noise really hurt my ears!</span>\n"
|
||||
mood_change = -3
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
..()
|
||||
|
||||
/datum/status_effect/vanguard_shield/Destroy()
|
||||
qdel(progbar)
|
||||
progbar.end_progress()
|
||||
progbar = null
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -127,13 +127,58 @@
|
||||
desc = "You've fallen asleep. Wait a bit and you should wake up. Unless you don't, considering how helpless you are."
|
||||
icon_state = "asleep"
|
||||
|
||||
|
||||
/datum/status_effect/grouped/stasis
|
||||
id = "stasis"
|
||||
duration = -1
|
||||
tick_interval = 10
|
||||
alert_type = /atom/movable/screen/alert/status_effect/stasis
|
||||
var/last_dead_time
|
||||
|
||||
/datum/status_effect/grouped/stasis/proc/update_time_of_death()
|
||||
if(last_dead_time)
|
||||
var/delta = world.time - last_dead_time
|
||||
var/new_timeofdeath = owner.timeofdeath + delta
|
||||
owner.timeofdeath = new_timeofdeath
|
||||
owner.tod = gameTimestamp(wtime=new_timeofdeath)
|
||||
last_dead_time = null
|
||||
if(owner.stat == DEAD)
|
||||
last_dead_time = world.time
|
||||
|
||||
/datum/status_effect/grouped/stasis/on_creation(mob/living/new_owner, set_duration)
|
||||
. = ..()
|
||||
if(.)
|
||||
update_time_of_death()
|
||||
owner.reagents?.end_metabolization(owner, FALSE)
|
||||
|
||||
/datum/status_effect/grouped/stasis/on_apply()
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
RegisterSignal(owner, COMSIG_LIVING_LIFE, .proc/InterruptBiologicalLife)
|
||||
owner.mobility_flags &= ~(MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_PULL | MOBILITY_HOLD)
|
||||
owner.update_mobility()
|
||||
owner.add_filter("stasis_status_ripple", 2, list("type" = "ripple", "flags" = WAVE_BOUNDED, "radius" = 0, "size" = 2))
|
||||
var/filter = owner.get_filter("stasis_status_ripple")
|
||||
animate(filter, radius = 32, time = 15, size = 0, loop = -1)
|
||||
|
||||
/datum/status_effect/grouped/stasis/proc/InterruptBiologicalLife()
|
||||
return COMPONENT_INTERRUPT_LIFE_BIOLOGICAL
|
||||
|
||||
/datum/status_effect/grouped/stasis/tick()
|
||||
update_time_of_death()
|
||||
|
||||
/datum/status_effect/grouped/stasis/on_remove()
|
||||
UnregisterSignal(owner, COMSIG_LIVING_LIFE)
|
||||
owner.mobility_flags |= MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_PULL | MOBILITY_HOLD
|
||||
owner.remove_filter("stasis_status_ripple")
|
||||
update_time_of_death()
|
||||
return ..()
|
||||
|
||||
/atom/movable/screen/alert/status_effect/stasis
|
||||
name = "Stasis"
|
||||
desc = "Your biological functions have halted. You could live forever this way, but it's pretty boring."
|
||||
icon_state = "stasis"
|
||||
|
||||
/datum/status_effect/robotic_emp
|
||||
id = "emp_no_combat_mode"
|
||||
|
||||
@@ -819,7 +864,7 @@
|
||||
/obj/effect/temp_visual/curse
|
||||
icon_state = "curse"
|
||||
|
||||
/obj/effect/temp_visual/curse/Initialize()
|
||||
/obj/effect/temp_visual/curse/Initialize(mapload)
|
||||
. = ..()
|
||||
deltimer(timerid)
|
||||
|
||||
|
||||
@@ -27,6 +27,6 @@
|
||||
|
||||
|
||||
/datum/weather/acid_rain/weather_act(mob/living/L)
|
||||
var/resist = L.getarmor(null, "acid")
|
||||
var/resist = L.getarmor(null, ACID)
|
||||
if(prob(max(0,100-resist)))
|
||||
L.acid_act(20,20)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
status_alarm(TRUE)
|
||||
|
||||
/datum/weather/rad_storm/weather_act(mob/living/L)
|
||||
var/resist = L.getarmor(null, "rad")
|
||||
var/resist = L.getarmor(null, RAD)
|
||||
var/ratio = 1 - (min(resist, 100) / 100)
|
||||
L.rad_act(radiation_intensity * ratio)
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
ambientsounds = RUINS
|
||||
area_flags = UNIQUE_AREA | NO_ALERTS
|
||||
|
||||
/area/asteroid/artifactroom/Initialize()
|
||||
/area/asteroid/artifactroom/Initialize(mapload)
|
||||
. = ..()
|
||||
set_dynamic_lighting()
|
||||
|
||||
|
||||
@@ -31,6 +31,6 @@
|
||||
cam.lostTargetRef(WEAKREF(O))
|
||||
return
|
||||
|
||||
/area/ai_monitored/turret_protected/ai/Initialize()
|
||||
/area/ai_monitored/turret_protected/ai/Initialize(mapload)
|
||||
. = ..()
|
||||
src.area_flags |= ABDUCTOR_PROOF
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
///Will objects this area be needing power?
|
||||
var/requires_power = TRUE
|
||||
/// This gets overridden to 1 for space in area/Initialize().
|
||||
/// This gets overridden to 1 for space in area/Initialize(mapload).
|
||||
var/always_unpowered = FALSE
|
||||
|
||||
var/power_equip = TRUE
|
||||
@@ -197,7 +197,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
||||
*
|
||||
* returns INITIALIZE_HINT_LATELOAD
|
||||
*/
|
||||
/area/Initialize()
|
||||
/area/Initialize(mapload)
|
||||
icon_state = ""
|
||||
map_name = name // Save the initial (the name set in the map) name of the area.
|
||||
canSmoothWithAreas = typecacheof(canSmoothWithAreas)
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
icon_state = "supplypod_loading"
|
||||
var/loading_id = ""
|
||||
|
||||
/area/centcom/supplypod/loading/Initialize()
|
||||
/area/centcom/supplypod/loading/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!loading_id)
|
||||
CRASH("[type] created without a loading_id")
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
name = "planet z helper"
|
||||
layer = POINT_LAYER
|
||||
|
||||
/obj/effect/mapping_helpers/planet_z/Initialize()
|
||||
/obj/effect/mapping_helpers/planet_z/Initialize(mapload)
|
||||
. = ..()
|
||||
var/datum/space_level/S = SSmapping.get_level(z)
|
||||
S.traits["Planet"] = TRUE //This probably doesn't work as I expect. But maybe!!
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
Asserts are to avoid the inevitable infinite loops
|
||||
*/
|
||||
|
||||
/area/holodeck/Initialize()
|
||||
/area/holodeck/Initialize(mapload)
|
||||
. = ..()
|
||||
var/list/update_holodeck_cache = SSholodeck?.rejected_areas[type]
|
||||
if(update_holodeck_cache)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
// area_limited_icon_smoothing = /area/shuttle
|
||||
sound_environment = SOUND_ENVIRONMENT_ROOM
|
||||
|
||||
/area/shuttle/Initialize()
|
||||
/area/shuttle/Initialize(mapload)
|
||||
if(!canSmoothWithAreas)
|
||||
canSmoothWithAreas = type
|
||||
. = ..()
|
||||
|
||||
+35
-8
@@ -9,6 +9,9 @@
|
||||
plane = GAME_PLANE
|
||||
appearance_flags = TILE_BOUND
|
||||
|
||||
/// pass_flags that we are. If any of this matches a pass_flag on a moving thing, by default, we let them through.
|
||||
var/pass_flags_self = NONE
|
||||
|
||||
var/level = 2
|
||||
///If non-null, overrides a/an/some in all cases
|
||||
var/article
|
||||
@@ -267,14 +270,29 @@
|
||||
var/a_incidence_s = abs(incidence_s)
|
||||
if(a_incidence_s > 90 && a_incidence_s < 270)
|
||||
return FALSE
|
||||
if((P.flag in list("bullet", "bomb")) && P.ricochet_incidence_leeway)
|
||||
if((P.flag in list(BULLET, BOMB)) && P.ricochet_incidence_leeway)
|
||||
if((a_incidence_s < 90 && a_incidence_s < 90 - P.ricochet_incidence_leeway) || (a_incidence_s > 270 && a_incidence_s -270 > P.ricochet_incidence_leeway))
|
||||
return
|
||||
return FALSE
|
||||
var/new_angle_s = SIMPLIFY_DEGREES(face_angle + incidence_s)
|
||||
P.setAngle(new_angle_s)
|
||||
return TRUE
|
||||
|
||||
/atom/proc/CanPass(atom/movable/mover, turf/target)
|
||||
//SHOULD_CALL_PARENT(TRUE)
|
||||
if(mover.movement_type & PHASING)
|
||||
return TRUE
|
||||
. = CanAllowThrough(mover, target)
|
||||
// This is cheaper than calling the proc every time since most things dont override CanPassThrough
|
||||
if(!mover.generic_canpass)
|
||||
return mover.CanPassThrough(src, target, .)
|
||||
|
||||
/// Returns true or false to allow the mover to move through src
|
||||
/atom/proc/CanAllowThrough(atom/movable/mover, turf/target)
|
||||
//SHOULD_CALL_PARENT(TRUE)
|
||||
if(mover.pass_flags & pass_flags_self)
|
||||
return TRUE
|
||||
if(mover.throwing && (pass_flags_self & LETPASSTHROW))
|
||||
return TRUE
|
||||
return !density
|
||||
|
||||
/**
|
||||
@@ -445,9 +463,19 @@
|
||||
wires.emp_pulse(severity)
|
||||
return protection // Pass the protection value collected here upwards
|
||||
|
||||
/atom/proc/bullet_act(obj/item/projectile/P, def_zone)
|
||||
/**
|
||||
* React to a hit by a projectile object
|
||||
*
|
||||
* Default behaviour is to send the [COMSIG_ATOM_BULLET_ACT] and then call [on_hit][/obj/item/projectile/proc/on_hit] on the projectile
|
||||
*
|
||||
* @params
|
||||
* P - projectile
|
||||
* def_zone - zone hit
|
||||
* piercing_hit - is this hit piercing or normal?
|
||||
*/
|
||||
/atom/proc/bullet_act(obj/item/projectile/P, def_zone, piercing_hit = FALSE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, P, def_zone)
|
||||
. = P.on_hit(src, 0, def_zone)
|
||||
. = P.on_hit(src, 0, def_zone, piercing_hit)
|
||||
|
||||
//used on altdisarm() for special interactions between the shoved victim (target) and the src, with user being the one shoving the target on it.
|
||||
// IMPORTANT: if you wish to add a new own shove_act() to a certain object, remember to add SHOVABLE_ONTO to its obj_flags bitfied var first.
|
||||
@@ -863,7 +891,7 @@
|
||||
return
|
||||
while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
progress.end_progress()
|
||||
to_chat(user, "<span class='notice'>You dump as much of [src_object.parent]'s contents into [STR.insert_preposition]to [src] as you can.</span>")
|
||||
if(user.active_storage) //refresh the HUD to show the transfered contents
|
||||
user.active_storage.ui_show(user)
|
||||
@@ -896,9 +924,6 @@
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir)
|
||||
dir = newdir
|
||||
|
||||
/atom/proc/mech_melee_attack(obj/mecha/M)
|
||||
return
|
||||
|
||||
//If a mob logouts/logins in side of an object you can use this proc
|
||||
/atom/proc/on_log(login)
|
||||
if(loc)
|
||||
@@ -1162,6 +1187,8 @@
|
||||
log_game(log_text)
|
||||
if(LOG_GAME)
|
||||
log_game(log_text)
|
||||
if(LOG_MECHA)
|
||||
log_mecha(log_text)
|
||||
if(LOG_SHUTTLE)
|
||||
log_shuttle(log_text)
|
||||
else
|
||||
|
||||
@@ -25,7 +25,10 @@
|
||||
var/inertia_moving = 0
|
||||
var/inertia_next_move = 0
|
||||
var/inertia_move_delay = 5
|
||||
var/pass_flags = 0
|
||||
/// Things we can pass through while moving. If any of this matches the thing we're trying to pass's [pass_flags_self], then we can pass through.
|
||||
var/pass_flags = NONE
|
||||
/// If false makes CanPass call CanPassThrough on this type instead of using default behaviour
|
||||
var/generic_canpass = TRUE
|
||||
var/moving_diagonally = 0 //0: not doing a diagonal move. 1 and 2: doing the first/second step of the diagonal move
|
||||
var/atom/movable/moving_from_pull //attempt to resume grab after moving instead of before.
|
||||
var/list/acted_explosions //for explosion dodging
|
||||
@@ -473,10 +476,15 @@
|
||||
/atom/movable/proc/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction)
|
||||
return FALSE
|
||||
|
||||
/atom/movable/CanPass(atom/movable/mover, turf/target)
|
||||
/atom/movable/CanAllowThrough(atom/movable/mover, turf/target)
|
||||
. = ..()
|
||||
if(mover in buckled_mobs)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/// Returns true or false to allow src to move through the blocker, mover has final say
|
||||
/atom/movable/proc/CanPassThrough(atom/blocker, turf/target, blocker_opinion)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
return blocker_opinion
|
||||
|
||||
/// called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
|
||||
/atom/movable/proc/on_exit_storage(datum/component/storage/concrete/S) // rename S to master_storage
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
desc = "advanced clown shoes that protect the wearer and render them nearly immune to slipping on their own peels. They also squeak at 100% capacity."
|
||||
clothing_flags = NOSLIP
|
||||
slowdown = SHOES_SLOWDOWN
|
||||
armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 10, "rad" = 0, "fire" = 70, "acid" = 50)
|
||||
armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, RAD = 0, FIRE = 70, ACID = 50)
|
||||
strip_delay = 70
|
||||
resistance_flags = NONE
|
||||
permeability_coefficient = 0.05
|
||||
@@ -28,7 +28,7 @@
|
||||
name = "mk-honk combat shoes"
|
||||
desc = "The culmination of years of clown combat research, these shoes leave a trail of chaos in their wake. They will slowly recharge themselves over time, or can be manually charged with bananium."
|
||||
slowdown = SHOES_SLOWDOWN
|
||||
armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 10, "rad" = 0, "fire" = 70, "acid" = 50)
|
||||
armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 10, RAD = 0, FIRE = 70, ACID = 50)
|
||||
strip_delay = 70
|
||||
resistance_flags = NONE
|
||||
permeability_coefficient = 0.05
|
||||
@@ -37,7 +37,7 @@
|
||||
var/max_recharge = 3000 //30 peels worth
|
||||
var/recharge_rate = 34 //about 1/3 of a peel per tick
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/Initialize()
|
||||
/obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/Initialize(mapload)
|
||||
. = ..()
|
||||
var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container)
|
||||
bananium.insert_amount_mat(max_recharge, /datum/material/bananium)
|
||||
@@ -69,7 +69,7 @@
|
||||
var/next_trombone_allowed = 0
|
||||
var/datum/component/slippery/slipper
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/bananium/Initialize()
|
||||
/obj/item/melee/transforming/energy/sword/bananium/Initialize(mapload)
|
||||
. = ..()
|
||||
slipper = LoadComponent(/datum/component/slippery, 81, GALOSHES_DONT_HELP)
|
||||
slipper.signal_enabled = active
|
||||
@@ -128,7 +128,7 @@
|
||||
on_throw_speed = 1
|
||||
var/datum/component/slippery/slipper
|
||||
|
||||
/obj/item/shield/energy/bananium/Initialize()
|
||||
/obj/item/shield/energy/bananium/Initialize(mapload)
|
||||
. = ..()
|
||||
slipper = LoadComponent(/datum/component/slippery, 81, GALOSHES_DONT_HELP)
|
||||
slipper.signal_enabled = active
|
||||
@@ -173,7 +173,7 @@
|
||||
var/det_time = 50
|
||||
var/obj/item/grenade/syndieminibomb/bomb
|
||||
|
||||
/obj/item/grown/bananapeel/bombanana/Initialize()
|
||||
/obj/item/grown/bananapeel/bombanana/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/slippery, det_time)
|
||||
bomb = new /obj/item/grenade/syndieminibomb(src)
|
||||
@@ -219,7 +219,7 @@
|
||||
/obj/item/clothing/mask/fakemoustache/sticky
|
||||
var/unstick_time = 2 MINUTES
|
||||
|
||||
/obj/item/clothing/mask/fakemoustache/sticky/Initialize()
|
||||
/obj/item/clothing/mask/fakemoustache/sticky/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT)
|
||||
addtimer(TRAIT_CALLBACK_REMOVE(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT), unstick_time)
|
||||
@@ -243,7 +243,7 @@
|
||||
projectiles = 8
|
||||
projectile_energy_cost = 1000
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar/bombanana/can_attach(obj/mecha/combat/honker/M)
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar/bombanana/can_attach(obj/vehicle/sealed/mecha/combat/honker/M)
|
||||
if(..())
|
||||
if(istype(M))
|
||||
return TRUE
|
||||
@@ -261,42 +261,33 @@
|
||||
equip_cooldown = 60
|
||||
det_time = 20
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/tearstache/can_attach(obj/mecha/combat/honker/M)
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/tearstache/can_attach(obj/vehicle/sealed/mecha/combat/honker/M)
|
||||
if(..())
|
||||
if(istype(M))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/mecha/combat/honker/dark
|
||||
/obj/vehicle/sealed/mecha/combat/honker/dark
|
||||
desc = "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. This one has been painted black for maximum fun. HONK!"
|
||||
name = "\improper Dark H.O.N.K"
|
||||
icon_state = "darkhonker"
|
||||
max_integrity = 300
|
||||
deflect_chance = 15
|
||||
armor = list("melee" = 40, "bullet" = 40, "laser" = 50, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
armor = list(MELEE = 40, BULLET = 40, LASER = 50, ENERGY = 35, BOMB = 20, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
|
||||
max_temperature = 35000
|
||||
operation_req_access = list(ACCESS_SYNDICATE)
|
||||
internals_req_access = list(ACCESS_SYNDICATE)
|
||||
wreckage = /obj/structure/mecha_wreckage/honker/dark
|
||||
max_equip = 3
|
||||
|
||||
/obj/mecha/combat/honker/dark/GrantActions(mob/living/user, human_occupant = 0)
|
||||
..()
|
||||
thrusters_action.Grant(user, src)
|
||||
|
||||
|
||||
/obj/mecha/combat/honker/dark/RemoveActions(mob/living/user, human_occupant = 0)
|
||||
..()
|
||||
thrusters_action.Remove(user)
|
||||
|
||||
/obj/mecha/combat/honker/dark/add_cell(obj/item/stock_parts/cell/C)
|
||||
/obj/vehicle/sealed/mecha/combat/honker/dark/add_cell(obj/item/stock_parts/cell/C)
|
||||
if(C)
|
||||
C.forceMove(src)
|
||||
cell = C
|
||||
return
|
||||
cell = new /obj/item/stock_parts/cell/hyper(src)
|
||||
|
||||
/obj/mecha/combat/honker/dark/loaded/Initialize()
|
||||
/obj/vehicle/sealed/mecha/combat/honker/dark/loaded/Initialize(mapload)
|
||||
. = ..()
|
||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/honker()
|
||||
ME.attach(src)
|
||||
|
||||
@@ -281,7 +281,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
var/meteorgibs = /obj/effect/gibspawner/generic
|
||||
threat = 2
|
||||
|
||||
/obj/effect/meteor/meaty/Initialize()
|
||||
/obj/effect/meteor/meaty/Initialize(mapload)
|
||||
for(var/path in meteordrop)
|
||||
if(path == /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant)
|
||||
meteordrop -= path
|
||||
@@ -312,7 +312,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
meteordrop = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno, /obj/item/organ/tongue/alien)
|
||||
meteorgibs = /obj/effect/gibspawner/xeno
|
||||
|
||||
/obj/effect/meteor/meaty/xeno/Initialize()
|
||||
/obj/effect/meteor/meaty/xeno/Initialize(mapload)
|
||||
meteordrop += subtypesof(/obj/item/organ/alien)
|
||||
return ..()
|
||||
|
||||
@@ -363,7 +363,7 @@ GLOBAL_LIST_INIT(meteorsSPOOKY, list(/obj/effect/meteor/pumpkin))
|
||||
meteordrop = list(/obj/item/clothing/head/hardhat/pumpkinhead, /obj/item/reagent_containers/food/snacks/grown/pumpkin)
|
||||
threat = 100
|
||||
|
||||
/obj/effect/meteor/pumpkin/Initialize()
|
||||
/obj/effect/meteor/pumpkin/Initialize(mapload)
|
||||
. = ..()
|
||||
meteorsound = pick('sound/hallucinations/im_here1.ogg','sound/hallucinations/im_here2.ogg')
|
||||
//////////////////////////
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
idle_power_usage = 0
|
||||
var/obj/item/beacon/Beacon
|
||||
|
||||
/obj/machinery/bluespace_beacon/Initialize()
|
||||
/obj/machinery/bluespace_beacon/Initialize(mapload)
|
||||
. = ..()
|
||||
var/turf/T = loc
|
||||
Beacon = new(T)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
if(storedpda)
|
||||
. += "[initial(icon_state)]-closed"
|
||||
|
||||
/obj/machinery/pdapainter/Initialize()
|
||||
/obj/machinery/pdapainter/Initialize(mapload)
|
||||
. = ..()
|
||||
var/list/blocked = list(
|
||||
/obj/item/pda/ai/pai,
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
payment_department = ACCOUNT_MED
|
||||
fair_market_price = 5
|
||||
|
||||
/obj/machinery/sleeper/Initialize()
|
||||
/obj/machinery/sleeper/Initialize(mapload)
|
||||
. = ..()
|
||||
// if(mapload)
|
||||
// component_parts -= circuit
|
||||
@@ -278,7 +278,7 @@
|
||||
icon_state = "sleeper_s"
|
||||
controls_inside = TRUE
|
||||
|
||||
/obj/machinery/sleeper/syndie/Initialize()
|
||||
/obj/machinery/sleeper/syndie/Initialize(mapload)
|
||||
. = ..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/machine/sleeper/syndie(null)
|
||||
@@ -289,7 +289,7 @@
|
||||
component_parts += new /obj/item/stack/cable_coil(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/sleeper/syndie/fullupgrade/Initialize()
|
||||
/obj/machinery/sleeper/syndie/fullupgrade/Initialize(mapload)
|
||||
. = ..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/machine/sleeper/syndie(null)
|
||||
|
||||
@@ -90,6 +90,7 @@ Class Procs:
|
||||
verb_say = "beeps"
|
||||
verb_yell = "blares"
|
||||
pressure_resistance = 15
|
||||
pass_flags_self = PASSMACHINE
|
||||
max_integrity = 200
|
||||
layer = BELOW_OBJ_LAYER //keeps shit coming out of the machine from ending up underneath it.
|
||||
flags_1 = DEFAULT_RICOCHET_1
|
||||
@@ -134,9 +135,9 @@ Class Procs:
|
||||
var/market_verb = "Customer"
|
||||
var/payment_department = ACCOUNT_ENG
|
||||
|
||||
/obj/machinery/Initialize()
|
||||
/obj/machinery/Initialize(mapload)
|
||||
if(!armor)
|
||||
armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
|
||||
armor = list(MELEE = 25, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 70)
|
||||
. = ..()
|
||||
GLOB.machines += src
|
||||
|
||||
@@ -370,7 +371,7 @@ Class Procs:
|
||||
user.DelayNextAction(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
|
||||
user.visible_message("<span class='danger'>[user.name] smashes against \the [src.name] with its paws.</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||
take_damage(4, BRUTE, "melee", 1)
|
||||
take_damage(4, BRUTE, MELEE, 1)
|
||||
|
||||
/obj/machinery/attack_robot(mob/user)
|
||||
if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user))
|
||||
@@ -448,6 +449,12 @@ Class Procs:
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/CanAllowThrough(atom/movable/mover, turf/target)
|
||||
. = ..()
|
||||
|
||||
if(mover.pass_flags & PASSMACHINE)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/proc/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/I)
|
||||
if(!(flags_1 & NODECONSTRUCT_1) && I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
I.play_tool_sound(src, 50)
|
||||
@@ -590,7 +597,7 @@ Class Procs:
|
||||
if(prob(85) && (zap_flags & ZAP_MACHINE_EXPLOSIVE))
|
||||
explosion(src, 1, 2, 4, flame_range = 2, adminlog = FALSE, smoke = FALSE)
|
||||
else if(zap_flags & ZAP_OBJ_DAMAGE)
|
||||
take_damage(power/2000, BURN, "energy")
|
||||
take_damage(power/2000, BURN, ENERGY)
|
||||
if(prob(40))
|
||||
emp_act(50)
|
||||
|
||||
@@ -614,7 +621,7 @@ Class Procs:
|
||||
AM.pixel_y = -8 + (round( . / 3)*8)
|
||||
|
||||
/obj/machinery/rust_heretic_act()
|
||||
take_damage(500, BRUTE, "melee", 1)
|
||||
take_damage(500, BRUTE, MELEE, 1)
|
||||
|
||||
/**
|
||||
* Alerts the AI that a hack is in progress.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
layer = PROJECTILE_HIT_THRESHHOLD_LAYER
|
||||
plane = FLOOR_PLANE
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30)
|
||||
|
||||
var/uses = 20
|
||||
var/cooldown = 0
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
|
||||
|
||||
/obj/machinery/airlock_sensor/Initialize()
|
||||
/obj/machinery/airlock_sensor/Initialize(mapload)
|
||||
. = ..()
|
||||
set_frequency(frequency)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
|
||||
var/pinklight = "Light_Pink"
|
||||
var/errorlight = "Error_Red"
|
||||
|
||||
/obj/machinery/announcement_system/Initialize()
|
||||
/obj/machinery/announcement_system/Initialize(mapload)
|
||||
. = ..()
|
||||
GLOB.announcement_systems += src
|
||||
radio = new /obj/item/radio/headset/silicon/ai(src)
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
max_integrity = 200
|
||||
var/obj/item/bodypart/storedpart
|
||||
var/initial_icon_state
|
||||
var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi',
|
||||
"engineer" = 'icons/mob/augmentation/augments_engineer.dmi',
|
||||
"security" = 'icons/mob/augmentation/augments_security.dmi',
|
||||
"mining" = 'icons/mob/augmentation/augments_mining.dmi',
|
||||
"Talon" = 'icons/mob/augmentation/cosmetic_prosthetic/talon.dmi',
|
||||
"Nanotrasen" = 'icons/mob/augmentation/cosmetic_prosthetic/nanotrasen.dmi',
|
||||
"Hephaesthus" = 'icons/mob/augmentation/cosmetic_prosthetic/hephaestus.dmi',
|
||||
"Bishop" = 'icons/mob/augmentation/cosmetic_prosthetic/bishop.dmi',
|
||||
var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi',
|
||||
"engineer" = 'icons/mob/augmentation/augments_engineer.dmi',
|
||||
"security" = 'icons/mob/augmentation/augments_security.dmi',
|
||||
"mining" = 'icons/mob/augmentation/augments_mining.dmi',
|
||||
"Talon" = 'icons/mob/augmentation/cosmetic_prosthetic/talon.dmi',
|
||||
"Nanotrasen" = 'icons/mob/augmentation/cosmetic_prosthetic/nanotrasen.dmi',
|
||||
"Hephaesthus" = 'icons/mob/augmentation/cosmetic_prosthetic/hephaestus.dmi',
|
||||
"Bishop" = 'icons/mob/augmentation/cosmetic_prosthetic/bishop.dmi',
|
||||
"Xion" = 'icons/mob/augmentation/cosmetic_prosthetic/xion.dmi',
|
||||
"Grayson" = 'icons/mob/augmentation/cosmetic_prosthetic/grayson.dmi',
|
||||
"Cybersolutions" = 'icons/mob/augmentation/cosmetic_prosthetic/cybersolutions.dmi',
|
||||
@@ -27,7 +27,7 @@
|
||||
if(storedpart)
|
||||
. += "<span class='notice'>Alt-click to eject the limb.</span>"
|
||||
|
||||
/obj/machinery/aug_manipulator/Initialize()
|
||||
/obj/machinery/aug_manipulator/Initialize(mapload)
|
||||
initial_icon_state = initial(icon_state)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
"Imported"
|
||||
)
|
||||
|
||||
/obj/machinery/autolathe/Initialize()
|
||||
/obj/machinery/autolathe/Initialize(mapload)
|
||||
. = ..()
|
||||
wires = new /datum/wires/autolathe(src)
|
||||
stored_research = new /datum/techweb/specialized/autounlocking/autolathe
|
||||
@@ -429,7 +429,7 @@
|
||||
desc = "It produces items using metal and glass. This model was reprogrammed without some of the more hazardous designs."
|
||||
circuit = /obj/item/circuitboard/machine/autolathe/secure
|
||||
|
||||
/obj/machinery/autolathe/secure/Initialize()
|
||||
/obj/machinery/autolathe/secure/Initialize(mapload)
|
||||
. = ..()
|
||||
// let's not leave the parent datum floating, right?
|
||||
if(stored_research)
|
||||
@@ -452,14 +452,14 @@
|
||||
"Misc",
|
||||
"Imported"
|
||||
)
|
||||
/obj/machinery/autolathe/toy/Initialize()
|
||||
/obj/machinery/autolathe/toy/Initialize(mapload)
|
||||
. = ..()
|
||||
// let's not leave the parent datum floating, right?
|
||||
if(stored_research)
|
||||
QDEL_NULL(stored_research)
|
||||
stored_research = new /datum/techweb/specialized/autounlocking/autolathe/toy
|
||||
|
||||
/obj/machinery/autolathe/toy/hacked/Initialize()
|
||||
/obj/machinery/autolathe/toy/hacked/Initialize(mapload)
|
||||
. = ..()
|
||||
adjust_hacked(TRUE)
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
var/minimum_time_between_warnings = 400
|
||||
var/syphoning_credits = 0
|
||||
|
||||
/obj/machinery/computer/bank_machine/Initialize()
|
||||
/obj/machinery/computer/bank_machine/Initialize(mapload)
|
||||
. = ..()
|
||||
radio = new(src)
|
||||
radio.subspace_transmission = TRUE
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/efficiency = 0
|
||||
var/productivity = 0
|
||||
|
||||
/obj/machinery/bloodbankgen/Initialize()
|
||||
/obj/machinery/bloodbankgen/Initialize(mapload)
|
||||
. = ..()
|
||||
create_reagents(maxbloodstored, AMOUNT_VISIBLE)
|
||||
update_icon()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/device_type = null
|
||||
var/id = null
|
||||
var/initialized_button = 0
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 70)
|
||||
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 10, BIO = 100, RAD = 100, FIRE = 90, ACID = 70)
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 2
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 50)
|
||||
armor = list(MELEE = 50, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, RAD = 0, FIRE = 90, ACID = 50)
|
||||
max_integrity = 100
|
||||
integrity_failure = 0.5
|
||||
var/list/network = list("ss13")
|
||||
@@ -273,7 +273,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/camera/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == "melee" && damage_amount < 12 && !(stat & BROKEN))
|
||||
if(damage_flag == MELEE && damage_amount < 12 && !(stat & BROKEN))
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
c_tag = "Arena"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF | FREEZE_PROOF
|
||||
|
||||
/obj/machinery/camera/motion/thunderdome/Initialize()
|
||||
/obj/machinery/camera/motion/thunderdome/Initialize(mapload)
|
||||
. = ..()
|
||||
proximity_monitor.SetRange(7)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
/obj/machinery/camera/emp_proof
|
||||
start_active = TRUE
|
||||
|
||||
/obj/machinery/camera/emp_proof/Initialize()
|
||||
/obj/machinery/camera/emp_proof/Initialize(mapload)
|
||||
. = ..()
|
||||
upgradeEmpProof()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
start_active = TRUE
|
||||
icon_state = "xraycam" // Thanks to Krutchen for the icons.
|
||||
|
||||
/obj/machinery/camera/xray/Initialize()
|
||||
/obj/machinery/camera/xray/Initialize(mapload)
|
||||
. = ..()
|
||||
upgradeXRay()
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
start_active = TRUE
|
||||
name = "motion-sensitive security camera"
|
||||
|
||||
/obj/machinery/camera/motion/Initialize()
|
||||
/obj/machinery/camera/motion/Initialize(mapload)
|
||||
. = ..()
|
||||
upgradeMotion()
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/obj/machinery/camera/all
|
||||
start_active = TRUE
|
||||
|
||||
/obj/machinery/camera/all/Initialize()
|
||||
/obj/machinery/camera/all/Initialize(mapload)
|
||||
. = ..()
|
||||
upgradeEmpProof()
|
||||
upgradeXRay()
|
||||
@@ -43,7 +43,7 @@
|
||||
var/number = 0 //camera number in area
|
||||
|
||||
//This camera type automatically sets it's name to whatever the area that it's in is called.
|
||||
/obj/machinery/camera/autoname/Initialize()
|
||||
/obj/machinery/camera/autoname/Initialize(mapload)
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
fair_market_price = 5 // He nodded, because he knew I was right. Then he swiped his credit card to pay me for arresting him.
|
||||
payment_department = ACCOUNT_MED
|
||||
|
||||
/obj/machinery/clonepod/Initialize()
|
||||
/obj/machinery/clonepod/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
countdown = new(src)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/datum/techweb/linked_techweb
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
|
||||
/obj/machinery/computer/operating/Initialize()
|
||||
/obj/machinery/computer/operating/Initialize(mapload)
|
||||
. = ..()
|
||||
linked_techweb = SSresearch.science_tech
|
||||
find_table()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
active_power_usage = 300
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.5
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 20)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 40, ACID = 20)
|
||||
var/brightness_on = 1
|
||||
var/icon_keyboard = "generic_key"
|
||||
var/icon_screen = "generic"
|
||||
@@ -101,10 +101,10 @@
|
||||
switch(severity)
|
||||
if(1)
|
||||
if(prob(50))
|
||||
obj_break("energy")
|
||||
obj_break(ENERGY)
|
||||
if(2)
|
||||
if(prob(10))
|
||||
obj_break("energy")
|
||||
obj_break(ENERGY)
|
||||
|
||||
/obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user)
|
||||
on_deconstruction()
|
||||
|
||||
@@ -77,7 +77,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
|
||||
/obj/machinery/computer/arcade/proc/Reset()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/arcade/Initialize()
|
||||
/obj/machinery/computer/arcade/Initialize(mapload)
|
||||
. = ..()
|
||||
// If it's a generic arcade machine, pick a random arcade
|
||||
// circuit board for it and make the new machine
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
var/killed_crew = 0
|
||||
|
||||
|
||||
/obj/machinery/computer/arcade/orion_trail/Initialize()
|
||||
/obj/machinery/computer/arcade/orion_trail/Initialize(mapload)
|
||||
. = ..()
|
||||
Radio = new /obj/item/radio(src)
|
||||
Radio.listening = 0
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
|
||||
/obj/machinery/computer/atmos_alert/Initialize()
|
||||
/obj/machinery/computer/atmos_alert/Initialize(mapload)
|
||||
. = ..()
|
||||
set_frequency(receive_frequency)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "gas sensor"
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "gsensor1"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 0)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 0)
|
||||
|
||||
var/on = TRUE
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/air_sensor/Initialize()
|
||||
/obj/machinery/air_sensor/Initialize(mapload)
|
||||
. = ..()
|
||||
SSair.atmos_air_machinery += src
|
||||
set_frequency(frequency)
|
||||
@@ -126,7 +126,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
|
||||
/obj/machinery/computer/atmos_control/Initialize()
|
||||
/obj/machinery/computer/atmos_control/Initialize(mapload)
|
||||
. = ..()
|
||||
GLOB.atmos_air_controllers += src
|
||||
set_frequency(frequency)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_SET_MACHINE //| INTERACT_MACHINE_REQUIRES_SIGHT
|
||||
|
||||
/obj/machinery/computer/security/Initialize()
|
||||
/obj/machinery/computer/security/Initialize(mapload)
|
||||
. = ..()
|
||||
// Map name has to start and end with an A-Z character,
|
||||
// and definitely NOT with a square bracket or even a number.
|
||||
@@ -275,7 +275,7 @@
|
||||
var/icon_state_off = "entertainment_blank"
|
||||
var/icon_state_on = "entertainment"
|
||||
|
||||
/obj/machinery/computer/security/telescreen/entertainment/Initialize()
|
||||
/obj/machinery/computer/security/telescreen/entertainment/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_CLICK, .proc/BigClick)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/machinery/computer/camera_advanced/Initialize()
|
||||
/obj/machinery/computer/camera_advanced/Initialize(mapload)
|
||||
. = ..()
|
||||
for(var/i in networks)
|
||||
networks -= i
|
||||
|
||||
@@ -56,7 +56,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
/obj/machinery/computer/card/centcom/get_jobs()
|
||||
return get_all_centcom_jobs()
|
||||
|
||||
/obj/machinery/computer/card/Initialize()
|
||||
/obj/machinery/computer/card/Initialize(mapload)
|
||||
. = ..()
|
||||
change_position_cooldown = CONFIG_GET(number/id_console_jobslot_delay)
|
||||
|
||||
@@ -586,7 +586,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
icon_screen = "idminor"
|
||||
circuit = /obj/item/circuitboard/computer/card/minor
|
||||
|
||||
/obj/machinery/computer/card/minor/Initialize()
|
||||
/obj/machinery/computer/card/minor/Initialize(mapload)
|
||||
. = ..()
|
||||
var/obj/item/circuitboard/computer/card/minor/typed_circuit = circuit
|
||||
if(target_dept)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
|
||||
/obj/machinery/computer/cloning/Initialize()
|
||||
/obj/machinery/computer/cloning/Initialize(mapload)
|
||||
. = ..()
|
||||
updatemodules(TRUE)
|
||||
var/obj/item/circuitboard/computer/cloning/board = circuit
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user