/obj/structure icon = 'icons/obj/structures.dmi' pressure_resistance = 8 max_integrity = 300 var/climb_time = 20 var/climb_stun = 20 var/climbable = FALSE var/mob/living/structureclimber var/broken = 0 //similar to machinery's stat BROKEN /obj/structure/Initialize() if (!armor) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) . = ..() if(smooth) queue_smooth(src) queue_smooth_neighbors(src) icon_state = "" GLOB.cameranet.updateVisibility(src) /obj/structure/Destroy() GLOB.cameranet.updateVisibility(src) if(smooth) queue_smooth_neighbors(src) return ..() /obj/structure/attack_hand(mob/user) . = ..() add_fingerprint(user) if(structureclimber && structureclimber != user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) structureclimber.Knockdown(40) structureclimber.visible_message("[structureclimber] has been knocked off [src].", "You're knocked off [src]!", "You see [structureclimber] get knocked off [src].") interact(user) /obj/structure/interact(mob/user) ui_interact(user) /obj/structure/ui_act(action, params) ..() add_fingerprint(usr) /obj/structure/MouseDrop_T(atom/movable/O, mob/user) . = ..() if(!climbable) return if(user == O && iscarbon(O)) if(user.canmove) climb_structure(user) return if ((!( istype(O, /obj/item) ) || user.get_active_held_item() != O)) return if(iscyborg(user)) return if(!user.drop_all_held_items()) return if (O.loc != src.loc) step(O, get_dir(O, src)) return /obj/structure/proc/do_climb(atom/movable/A) if(climbable) density = FALSE . = step(A,get_dir(A,src.loc)) density = TRUE /obj/structure/proc/climb_structure(mob/living/user) src.add_fingerprint(user) user.visible_message("[user] starts climbing onto [src].", \ "You start climbing onto [src]...") var/adjusted_climb_time = climb_time if(user.restrained()) //climbing takes twice as long when restrained. adjusted_climb_time *= 2 if(isalien(user)) adjusted_climb_time *= 0.25 //aliens are terrifyingly fast if(user.has_trait(TRAIT_FREERUNNING)) //do you have any idea how fast I am??? adjusted_climb_time *= 0.8 structureclimber = user if(do_mob(user, user, adjusted_climb_time)) if(src.loc) //Checking if structure has been destroyed if(do_climb(user)) user.visible_message("[user] climbs onto [src].", \ "You climb onto [src].") add_logs(user, src, "climbed onto") if(climb_stun) user.Stun(climb_stun) . = 1 else to_chat(user, "You fail to climb onto [src].") structureclimber = null /obj/structure/examine(mob/user) ..() if(!(resistance_flags & INDESTRUCTIBLE)) if(resistance_flags & ON_FIRE) to_chat(user, "It's on fire!") if(broken) to_chat(user, "It appears to be broken.") var/examine_status = examine_status(user) if(examine_status) to_chat(user, examine_status) /obj/structure/proc/examine_status(mob/user) //An overridable proc, mostly for falsewalls. var/healthpercent = (obj_integrity/max_integrity) * 100 switch(healthpercent) if(50 to 99) return "It looks slightly damaged." if(25 to 50) return "It appears heavily damaged." if(0 to 25) if(!broken) return "It's falling apart!"