Merge branch 'master' into Synth-Brainwashing

This commit is contained in:
silicons
2022-04-15 17:44:30 -07:00
committed by GitHub
1210 changed files with 9848 additions and 9523 deletions
+5 -2
View File
@@ -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)
+9
View File
@@ -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]"
+13
View File
@@ -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)
+1 -1
View File
@@ -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
+1
View File
@@ -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)
+31
View File
@@ -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
+11
View File
@@ -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.
+2 -1
View File
@@ -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.
+5
View File
@@ -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)
+5 -1
View File
@@ -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)
+5
View File
@@ -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)
+4
View File
@@ -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]")
+12 -7
View File
@@ -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))
+2
View File
@@ -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))
+3 -3
View File
@@ -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
+3 -5
View File
@@ -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)
+1 -1
View File
@@ -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!")
+1 -1
View File
@@ -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,
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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
-5
View File
@@ -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
-5
View File
@@ -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)
+1 -1
View File
@@ -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()
+3 -3
View File
@@ -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()
+1 -1
View File
@@ -12,7 +12,7 @@
/atom/movable/screen/wanted/New()
return ..()
/atom/movable/screen/wanted/Initialize()
/atom/movable/screen/wanted/Initialize(mapload)
. = ..()
update_icon()
+1 -1
View File
@@ -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()
+7 -7
View File
@@ -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)
-4
View File
@@ -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)
+1 -1
View File
@@ -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)
+4 -4
View File
@@ -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
+2 -2
View File
@@ -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
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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,
+1 -4
View File
@@ -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
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+5 -5
View File
@@ -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
+1 -1
View File
@@ -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.
+2 -2
View File
@@ -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)
. = ..()
+1 -1
View File
@@ -11,7 +11,7 @@
RegisterSignal(parent, COMSIG_ITEM_DROPPED,.proc/OnDropped)
src.knockoff_chance = knockoff_chance
if(zone_override)
target_zones = zone_override
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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
+67
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+4 -4
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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.
+22 -22
View File
@@ -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"
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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
+1 -1
View File
@@ -69,7 +69,7 @@
..()
/datum/status_effect/vanguard_shield/Destroy()
qdel(progbar)
progbar.end_progress()
progbar = null
return ..()
+47 -2
View File
@@ -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)
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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")
+1 -1
View File
@@ -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!!
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
View File
@@ -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
+11 -3
View File
@@ -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
+13 -22
View File
@@ -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)
+3 -3
View File
@@ -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')
//////////////////////////
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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,
+3 -3
View File
@@ -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)
+12 -5
View File
@@ -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.
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+9 -9
View File
@@ -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 ..()
+4 -4
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
. = ..()
+1 -1
View File
@@ -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)
+5 -5
View File
@@ -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
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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()
+3 -3
View File
@@ -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()
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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