/obj/structure icon = 'icons/obj/structures.dmi' pressure_resistance = 8 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50) obj_integrity = 300 max_integrity = 300 var/climb_time = 20 var/climb_stun = 2 var/climbable = FALSE var/mob/structureclimber var/broken = 0 //similar to machinery's stat BROKEN /obj/structure/New() ..() if(smooth) queue_smooth(src) queue_smooth_neighbors(src) icon_state = "" if(ticker) cameranet.updateVisibility(src) /obj/structure/Destroy() if(ticker) cameranet.updateVisibility(src) if(opacity) UpdateAffectingLights() 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.Weaken(2) structureclimber.visible_message("[structureclimber.name] has been knocked off the [src]", "You're knocked off the [src]!", "You see [structureclimber.name] get knocked off the [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(ismob(O) && user == O && iscarbon(user)) if(user.canmove) climb_structure(user) return if ((!( istype(O, /obj/item/weapon) ) || user.get_active_held_item() != O)) return if(iscyborg(user)) return if(!user.drop_item()) return if (O.loc != src.loc) step(O, get_dir(O, src)) return /obj/structure/proc/climb_structure(mob/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 structureclimber = user if(do_mob(user, user, adjusted_climb_time)) if(src.loc) //Checking if structure has been destroyed density = 0 if(step(user,get_dir(user,src.loc))) user.visible_message("[user] climbs onto [src].", \ "You climb onto [src].") add_logs(user, src, "climbed onto") user.Stun(climb_stun) . = 1 else user << "You fail to climb onto [src]." density = 1 structureclimber = null /obj/structure/examine(mob/user) ..() if(!(resistance_flags & INDESTRUCTIBLE)) if(resistance_flags & ON_FIRE) user << "It's on fire!" var/healthpercent = (obj_integrity/max_integrity) * 100 if(broken) user << "It looks broken." switch(healthpercent) if(100 to INFINITY) user << "It seems pristine and undamaged." if(50 to 100) user << "It looks slightly damaged." if(25 to 50) user << "It appears heavily damaged." if(0 to 25) user << "It's falling apart!"