diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 9f555235c64..0b153c75809 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -8,11 +8,13 @@ mob/proc/airflow_stun() if(stat == 2) return 0 if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0 + if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN)) - src << "\blue You stay upright as the air rushes past you." + src << "You stay upright as the air rushes past you." return 0 - if(weakened <= 0) src << "\red The sudden rush of air knocks you over!" - weakened = max(weakened,5) + if(!lying) + src << "The sudden rush of air knocks you over!" + Weaken(5) last_airflow_stun = world.time mob/living/silicon/airflow_stun() @@ -22,16 +24,9 @@ mob/living/carbon/metroid/airflow_stun() return mob/living/carbon/human/airflow_stun() - if(last_airflow_stun > world.time - vsc.airflow_stun_cooldown) return 0 - if(buckled) return 0 if(shoes) if(shoes.flags & NOSLIP) return 0 - if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN)) - src << "\blue You stay upright as the air rushes past you." - return 0 - if(weakened <= 0) src << "\red The sudden rush of air knocks you over!" - weakened = max(weakened,rand(1,5)) - last_airflow_stun = world.time + ..() atom/movable/proc/check_airflow_movable(n) @@ -84,10 +79,8 @@ obj/item/check_airflow_movable(n) if(istype(src, /mob/living/carbon/human)) if(src:buckled) return - if(src:shoes) - if(istype(src:shoes, /obj/item/clothing/shoes/magboots)) - if(src:shoes.flags & NOSLIP) - return + if(src:shoes && src:shoes.flags & NOSLIP) + return src << "\red You are sucked away by airflow!" var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful. if(airflow_falloff < 1) @@ -148,10 +141,8 @@ obj/item/check_airflow_movable(n) if(istype(src, /mob/living/carbon/human)) if(src:buckled) return - if(src:shoes) - if(istype(src:shoes, /obj/item/clothing/shoes/magboots)) - if(src:shoes.flags & NOSLIP) - return + if(src:shoes && src:shoes.flags & NOSLIP) + return src << "\red You are pushed away by airflow!" last_airflow = world.time var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful. @@ -207,9 +198,8 @@ mob/airflow_hit(atom/A) for(var/mob/M in hearers(src)) M.show_message("\red \The [src] slams into \a [A]!",1,"\red You hear a loud slam!",2) playsound(src.loc, "smash.ogg", 25, 1, -1) - if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN)) - return 0 - weakened = max(weakened, (istype(A,/obj/item) ? A:w_class : rand(1,5))) //Heheheh + var/weak_amt = istype(A,/obj/item) ? A:w_class : rand(1,5) //Heheheh + Weaken(weak_amt) . = ..() obj/airflow_hit(atom/A) @@ -240,14 +230,11 @@ mob/living/carbon/human/airflow_hit(atom/A) blocked = run_armor_check("groin","melee") apply_damage(b_loss/3, BRUTE, "groin", blocked, 0, "Airflow") - if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN)) - return 0 - if(airflow_speed > 10) - paralysis += round(airflow_speed * vsc.airflow_stun) - stunned = max(stunned,paralysis + 3) + Paralyse(round(airflow_speed * vsc.airflow_stun)) + Stun(paralysis + 3) else - stunned += round(airflow_speed * vsc.airflow_stun/2) + Stun(round(airflow_speed * vsc.airflow_stun/2)) . = ..() zone/proc/movables() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index ebf00444022..30122e4d4b7 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -20,6 +20,7 @@ var/heat_proof = 0 // For glass airlocks/opacity firedoors var/emergency = 0 var/air_properties_vary_with_direction = 0 + var/block_air_zones = 1 //If set, air zones cannot merge across the door even when it is opened. //Multi-tile doors dir = EAST @@ -96,7 +97,7 @@ /obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return 0 + if(air_group) return !block_air_zones if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index e0c1cc4588a..968f5b8575e 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -60,6 +60,10 @@ opacity = 0 density = 0 + //These are frequenly used with windows, so make sure zones can pass. + //Generally if a firedoor is at a place where there should be a zone boundery then there will be a regular door underneath it. + block_air_zones = 0 + var/blocked = 0 var/lockdown = 0 // When the door has detected a problem, it locks. var/pdiff_alert = 0 @@ -106,7 +110,7 @@ /obj/machinery/door/firedoor/examine() set src in view() . = ..() - + if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF) usr << "WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!" @@ -287,7 +291,7 @@ /obj/machinery/door/firedoor/attack_ai(mob/user as mob) if(operating) - return //Already doing something. + return //Already doing something. if(blocked) user << "\red \The [src] is welded solid!" @@ -295,11 +299,11 @@ var/area/A = get_area_master(src) ASSERT(istype(A)) // This worries me. - var/alarmed = A.air_doors_activated || A.fire + var/alarmed = A.air_doors_activated || A.fire var/access_granted = 0 if(isAI(user) || isrobot(user)) - access_granted = 1 + access_granted = 1 if(access_granted == 1) user.visible_message("\blue \The [src] [density ? "open" : "close"]s for \the [user].",\ @@ -320,7 +324,7 @@ spawn(50) if(alarmed) nextstate = CLOSED - + // CHECK PRESSURE /obj/machinery/door/firedoor/process() ..() diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index e4924825b13..3d6ce2459ec 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -13,6 +13,16 @@ max_amount = 60 attack_verb = list("hit", "bludgeoned", "whacked") +/obj/item/stack/rods/New(var/loc, var/amount=null) + update_icon() + return ..() + +/obj/item/stack/rods/update_icon() + if(get_amount() <= 5) + icon_state = "rods-[get_amount()]" + else + icon_state = "rods" + /obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob, params) ..() if (istype(W, /obj/item/weapon/weldingtool)) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 45b483d602d..15aa4938875 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -169,6 +169,7 @@ if(usr) usr.unEquip(src, 1) qdel(src) + update_icon() return 1 /obj/item/stack/proc/add_to_stacks(mob/usr as mob) @@ -185,6 +186,7 @@ usr << "You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s." if(!oldsrc) break + update_icon() /obj/item/stack/proc/get_amount() return amount @@ -201,6 +203,7 @@ spawn(0) src.interact(usr) else ..() + update_icon() return /obj/item/stack/attackby(obj/item/W as obj, mob/user as mob, params) @@ -220,6 +223,7 @@ src.use(to_transfer) if (src && usr.machine==src) spawn(0) src.interact(usr) + S.update_icon() else return ..() /obj/item/stack/proc/copy_evidences(obj/item/stack/from as obj) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 303d0bc73a6..c2f37d4a455 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -30,7 +30,7 @@ RCD New() - desc = "A RCD. It currently holds [matter]/100 matter-units." + desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." src.spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) @@ -44,9 +44,9 @@ RCD if((matter + R.ammoamt) > max_matter) user << "The RCD cant hold any more matter-units." return + matter += R.ammoamt user.drop_item() del(W) - matter += R.ammoamt playsound(src.loc, 'sound/machines/click.ogg', 50, 1) user << "The RCD now holds [matter]/[max_matter] matter-units." desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." @@ -168,7 +168,7 @@ RCD if(matter < amount) return 0 matter -= amount - desc = "A RCD. It currently holds [matter]/100 matter-units." + desc = "A RCD. It currently holds [matter]/[max_matter] matter-units." return 1 /obj/item/weapon/rcd/proc/checkResource(var/amount, var/mob/user) diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 931d6e09f84..760e0633f56 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -6,30 +6,29 @@ desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder." icon = 'icons/obj/weapons.dmi' icon_state = "riot" - flags = CONDUCT slot_flags = SLOT_BACK - force = 5.0 - throwforce = 5.0 - throw_speed = 1 - throw_range = 4 - w_class = 4.0 + force = 8 + throwforce = 5 + throw_speed = 2 + throw_range = 3 + w_class = 4 g_amt = 7500 m_amt = 1000 origin_tech = "materials=2" attack_verb = list("shoved", "bashed") var/cooldown = 0 //shield bash cooldown. based on world.time - IsShield() - return 1 +/obj/item/weapon/shield/riot/IsShield() + return 1 - attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/weapon/melee/baton)) - if(cooldown < world.time - 25) - user.visible_message("[user] bashes [src] with [W]!") - playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1) - cooldown = world.time - else - ..() +/obj/item/weapon/shield/riot/attackby(obj/item/weapon/W as obj, mob/user as mob, params) + if(istype(W, /obj/item/weapon/melee/baton)) + if(cooldown < world.time - 25) + user.visible_message("[user] bashes [src] with [W]!") + playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1) + cooldown = world.time + else + ..() /obj/item/weapon/shield/riot/roman name = "roman shield" @@ -42,16 +41,93 @@ desc = "A shield capable of stopping most melee attacks. Protects user from almost all energy projectiles. It can be retracted, expanded, and stored anywhere." icon = 'icons/obj/weapons.dmi' icon_state = "eshield0" // eshield1 for expanded - flags = CONDUCT - force = 3.0 - throwforce = 5.0 - throw_speed = 1 - throw_range = 4 + force = 3 + throwforce = 3 + throw_speed = 3 + throw_range = 5 w_class = 1 origin_tech = "materials=4;magnets=3;syndicate=4" attack_verb = list("shoved", "bashed") var/active = 0 +/obj/item/weapon/shield/energy/IsShield() + return (active) + +/obj/item/weapon/shield/energy/IsReflect() + return (active) + +/obj/item/weapon/shield/energy/attack_self(mob/living/carbon/human/user) + if(user.disabilities & CLUMSY && prob(50)) + user << "You beat yourself in the head with [src]." + user.take_organ_damage(5) + active = !active + icon_state = "eshield[active]" + + if(active) + force = 10 + throwforce = 8 + throw_speed = 2 + w_class = 4 + playsound(user, 'sound/weapons/saberon.ogg', 35, 1) + user << "[src] is now active." + else + force = 3 + throwforce = 3 + throw_speed = 3 + w_class = 1 + playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) + user << "[src] can now be concealed." + if(istype(user,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + H.update_inv_l_hand() + H.update_inv_r_hand() + add_fingerprint(user) + return + +/obj/item/weapon/shield/riot/tele + name = "telescopic shield" + desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." + icon = 'icons/obj/weapons.dmi' + icon_state = "teleriot0" + icon_override = 'icons/mob/in-hand/tools.dmi' + slot_flags = null + force = 3 + throwforce = 3 + throw_speed = 3 + throw_range = 4 + w_class = 3 + var/active = 0 + +/obj/item/weapon/shield/riot/tele/IsShield() + return (active) + +/obj/item/weapon/shield/riot/tele/attack_self(mob/living/user) + active = !active + icon_state = "teleriot[active]" + playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1) + + if(active) + force = 8 + throwforce = 5 + throw_speed = 2 + w_class = 4 + slot_flags = SLOT_BACK + user << "You extend \the [src]." + else + force = 3 + throwforce = 3 + throw_speed = 3 + w_class = 3 + slot_flags = null + user << "[src] can now be concealed." + if(istype(user,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + H.update_inv_l_hand() + H.update_inv_r_hand() + add_fingerprint(user) + return + + /obj/item/weapon/cloaking_device name = "cloaking device" desc = "Use this to become invisible to the human eyesocket." diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index c0228d3c725..41902f61084 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -282,40 +282,4 @@ src.w_class = 5 hitsound = "swing_hit" src.add_fingerprint(user) - return - - -/* - * Energy Shield - */ -/obj/item/weapon/shield/energy/IsShield() - if(active) - return 1 - else - return 0 - -/obj/item/weapon/shield/energy/attack_self(mob/living/user as mob) - if ((CLUMSY in user.mutations) && prob(50)) - user << "\red You beat yourself in the head with [src]." - user.take_organ_damage(5) - active = !active - if (active) - force = 10 - reflect_chance = 100 - icon_state = "eshield[active]" - w_class = 4 - playsound(user, 'sound/weapons/saberon.ogg', 50, 1) - user << "\blue [src] is now active." - else - force = 3 - icon_state = "eshield[active]" - w_class = 1 - reflect_chance = 0 - playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) - user << "\blue [src] can now be concealed." - if(istype(user,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - H.update_inv_l_hand() - H.update_inv_r_hand() - add_fingerprint(user) - return + return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index e76f9a778b1..f7971852067 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -113,7 +113,7 @@ new /obj/item/weapon/storage/lockbox/loyalty(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/clothing/mask/gas/sechailer/hos(src) - new /obj/item/weapon/shield/riot(src) + new /obj/item/weapon/shield/riot/tele(src) new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/storage/belt/security(src) new /obj/item/taperoll/police(src) diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index a1195a22868..4b1bba60671 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -50,9 +50,9 @@ pr_int_temp_processor = new /datum/global_iterator/pod_preserve_temp(list(src)) pr_give_air = new /datum/global_iterator/pod_tank_give_air(list(src)) equipment_system = new(src) - spacepods_list += src - -/obj/spacepod/Destroy() + spacepods_list += src + +/obj/spacepod/Destroy() spacepods_list -= src ..() @@ -61,9 +61,9 @@ pod_overlays = new/list(2) pod_overlays[DAMAGE] = image(icon, icon_state="pod_damage") pod_overlays[FIRE] = image(icon, icon_state="pod_fire") - + overlays.Cut() - + if(health <= round(initial(health)/2)) overlays += pod_overlays[DAMAGE] if(health <= round(initial(health)/4)) @@ -72,11 +72,11 @@ /obj/spacepod/bullet_act(var/obj/item/projectile/P) if(P.damage && !P.nodamage) deal_damage(P.damage) - + /obj/spacepod/blob_act() deal_damage(30) return - + /obj/spacepod/attack_animal(mob/living/simple_animal/user as mob) if(user.melee_damage_upper == 0) user.emote("[user.friendly] [src]") @@ -86,7 +86,7 @@ visible_message("\red [user] [user.attacktext] [src]!") user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") return - + /obj/spacepod/attack_alien(mob/user as mob) deal_damage(15) playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1) @@ -211,8 +211,8 @@ user << "\blue \The [src] is fully repaired!" /obj/spacepod/attack_paw(mob/user as mob) - return src.attack_hand(user) - + return src.attack_hand(user) + /obj/spacepod/attack_hand(mob/user as mob) if(!hatch_open) return ..() @@ -371,7 +371,11 @@ return if(H && H.client && H in range(1)) - if(src.occupant) + if(src.occupant && src.occupant2) + H << "[src.name] is full." + return + + if(src.occupant && !src.occupant2) if(src.occupant.ckey == H.ckey) H.visible_message("You climb over the console and drop down into the secondary seat.") H.reset_view(src) @@ -404,30 +408,36 @@ return 1 else - H.reset_view(src) - /* - H.client.perspective = EYE_PERSPECTIVE - H.client.eye = src - */ - H.stop_pulling() - H.forceMove(src) - src.occupant = H - src.add_fingerprint(H) - src.forceMove(src.loc) - //dir = dir_in - playsound(src, 'sound/machines/windowdoor.ogg', 50, 1) - return 1 + if(!src.occupant) + H.reset_view(src) + /* + H.client.perspective = EYE_PERSPECTIVE + H.client.eye = src + */ + H.stop_pulling() + H.forceMove(src) + src.occupant = H + src.add_fingerprint(H) + src.forceMove(src.loc) + //dir = dir_in + playsound(src, 'sound/machines/windowdoor.ogg', 50, 1) + return 1 + else + return else return 0 /obj/spacepod/proc/moved_other_inside(var/mob/living/carbon/human/H as mob) - H.reset_view(src) - H.stop_pulling() - H.forceMove(src) - src.occupant2 = H - src.forceMove(src.loc) - playsound(src, 'sound/machines/windowdoor.ogg', 50, 1) - return 1 + if(!src.occupant2) + H.reset_view(src) + H.stop_pulling() + H.forceMove(src) + src.occupant2 = H + src.forceMove(src.loc) + playsound(src, 'sound/machines/windowdoor.ogg', 50, 1) + return 1 + else + return @@ -436,7 +446,15 @@ if(M != user) if(M.stat != 0) if(allow2enter) - moved_other_inside(M) + if(!src.occupant2) + visible_message("\red [user.name] starts loading [M.name] into the pod!") + sleep(10) + moved_other_inside(M) + else if(src.occupant2 && !src.occupant) + usr << "\red You can't put a corpse into the driver's seat!" + return + else + return else return else @@ -445,6 +463,68 @@ move_inside(M, user) +/obj/spacepod/verb/move_inside() + set category = "Object" + set name = "Enter Pod" + set src in oview(1) + var/fukkendisk = usr.GetTypeInAllContents(/obj/item/weapon/disk/nuclear) + + if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other + return + + if (usr.stat || !ishuman(usr)) + return + + if(fukkendisk) + usr << "\red The nuke-disk is locking the door every time you try to open it. You get the feeling that it doesn't want to go into the spacepod." + return + + for(var/mob/living/carbon/slime/M in range(1,usr)) + if(M.Victim == usr) + usr << "You're too busy getting your life sucked out of you." + return + + if(src.occupant) + if(allow2enter) + if(!src.occupant2) + usr << "\blue You start climbing into the secondary seat." + visible_message("\blue [usr] starts to climb into [src.name].") + if(enter_after(40,usr)) + moved_inside(usr) + else + usr << "You stop entering the spacepod." + return + else + usr << "\red You can't fit!" + else + usr << "\red The door is locked!" + + else if(!src.occupant && src.occupant2) + if(allow2enter) + usr << "\blue You start climbing into the primary seat." + visible_message("\blue [usr] starts to climb into [src.name].") + if(enter_after(40,usr)) + moved_inside(usr) + else + usr << "You stop entering the spacepod." + return + else + usr << "\red The door is locked!" + + else if(!src.occupant && !src.occupant2) + visible_message("\blue [usr] starts to climb into [src.name].") + if(enter_after(40,usr)) + if(!src.occupant) + moved_inside(usr) + else if(src.occupant!=usr) + usr << "[src.occupant] was faster. Try better next time, loser." + else + usr << "You stop entering the spacepod." + return + + +/* !!OLD BROKEN SYSTEM!! - tiger + /obj/spacepod/verb/move_inside() set category = "Object" set name = "Enter Pod" @@ -459,8 +539,12 @@ return if (usr.stat || !ishuman(usr)) return + if (src.occupant) if(allow2enter) + if(src.occupant2) + usr << "\blue You can't fit!You starts climbing into the secondary seat." visible_message("\blue [usr] starts to climb into [src.name]") if(enter_after(40,usr)) @@ -515,46 +599,55 @@ usr << "You stop entering the exosuit." return +*/ + /obj/spacepod/verb/exit_pod() set name = "Exit pod" set category = "Spacepod" set src = usr.loc + if(usr != src.occupant) if(src.occupant2) if(usr != src.occupant2) return else + if(src.occupant) + src.occupant.visible_message("[src.occupant2.name] climbs out of the pod!") //Inform the remaining occupant that someone ejected. inertia_dir = 0 // engage reverse thruster and power down pod src.occupant2.loc = src.loc src.occupant2 = null - usr << "You climb out of the pod" + usr << "You climb out of the pod." + else return else + if(src.occupant2) + src.occupant2.visible_message("[src.occupant2.name] climbs out of the pod!") //Inform the remaining occupant that someone ejected. inertia_dir = 0 // engage reverse thruster and power down pod src.occupant.loc = src.loc src.occupant = null - usr << "You climb out of the pod" + usr << "You climb out of the pod." return /obj/spacepod/verb/exit_pod2() if(!src.occupant2) set hidden = 1 return + else set name = "Eject Secondary Seat" set category = "Spacepod" set src = usr.loc set hidden = 0 - if(usr.ckey == src.occupant2.ckey) + if(usr == src.occupant2) usr << "Use 'Exit Pod'" return else usr << "You eject [src.occupant2.name]." - src.occupant2.visible_message("You were ejected from the pod!") + src.occupant2.visible_message("You were ejected from the pod!") inertia_dir = 0 // engage reverse thruster and power down pod src.occupant2.loc = src.loc src.occupant2 = null @@ -565,7 +658,7 @@ set category = "Spacepod" set src = usr.loc - if(occupant2 == src) + if(occupant2 == usr) if(!allow2enter) usr << "You can't unlock the doors from your seat." return diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 035b2d23096..ecc2a812bf0 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -119,6 +119,10 @@ var/savefile/Banlist Banlist["temp"] << temp if (temp) Banlist["minutes"] << bantimestamp + if(!temp) + notes_add(ckey, "Permanently banned - [reason]") + else + notes_add(ckey, "Banned for [minutes] minutes - [reason]") return 1 /proc/RemoveBan(foldername) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index c8a94029e1a..e0741ed1ac7 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -343,4 +343,10 @@ icon_state = "griffinhat" item_state = "griffinhat" flags = BLOCKHAIR|NODROP - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE \ No newline at end of file + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + +/obj/item/clothing/head/lordadmiralhat + name = "Lord Admiral's Hat" + desc = "A hat suitable for any man of high and exalted rank." + icon_state = "lordadmiralhat" + item_state = "lordadmiralhat" \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 3b85dd5299b..d367671e34f 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -256,54 +256,3 @@ "Vox" = 'icons/mob/species/vox/head.dmi', "Vox Armalis" = 'icons/mob/species/armalis/head.dmi', ) - -/obj/item/clothing/suit/space/plasmaman - w_class = 3 - allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box/magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) - slowdown = 2 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 0) - heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE - species_restricted = list("Plasmaman") - flags = STOPSPRESSUREDMAGE | PLASMAGUARD - - icon_state = "plasmaman_suit" - item_state = "plasmaman_suit" - -/obj/item/clothing/head/helmet/space/plasmaman - flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE | PLASMAGUARD - species_restricted = list("Plasmaman") - - icon_state = "plasmaman_helmet0" - item_state = "plasmaman_helmet0" - var/brightness_on = 4 //luminosity when on - var/on = 0 - var/no_light=0 // Disable the light on the atmos suit - action_button_name = "Toggle Helmet Light" - - attack_self(mob/user) - if(!isturf(user.loc)) - user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities. - return - if(no_light) - return - on = !on - icon_state = "plasmaman_helmet[on]" -// item_state = "rig[on]-[_color]" - - if(on) user.SetLuminosity(user.luminosity + brightness_on) - else user.SetLuminosity(user.luminosity - brightness_on) - - pickup(mob/user) - if(on) - user.SetLuminosity(user.luminosity + brightness_on) -// user.UpdateLuminosity() - SetLuminosity(0) - - dropped(mob/user) - if(on) - user.SetLuminosity(user.luminosity - brightness_on) -// user.UpdateLuminosity() - SetLuminosity(brightness_on) \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm new file mode 100644 index 00000000000..6c20fbae7ee --- /dev/null +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -0,0 +1,170 @@ +// PLASMEN SHIT +// CAN'T WEAR UNLESS YOU'RE A PINK SKELLINGTON +/obj/item/clothing/suit/space/eva/plasmaman + w_class = 3 + allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) + slowdown = 2 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 0) + heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE + species_restricted = list("Plasmaman") + flags = STOPSPRESSUREDMAGE | PLASMAGUARD + + icon_state = "plasmaman_suit" + item_state = "plasmaman_suit" + + var/next_extinguish=0 + var/extinguish_cooldown=10 SECONDS + var/extinguishes_left=10 // Yeah yeah, reagents, blah blah blah. This should be simple. + +/obj/item/clothing/suit/space/eva/plasmaman/examine() + set src in view() + ..() + usr << "There are [extinguishes_left] extinguisher canisters left in this suit." +/obj/item/clothing/suit/space/eva/plasmaman/proc/Extinguish(var/mob/user) + var/mob/living/carbon/human/H=user + if(extinguishes_left) + if(next_extinguish > world.time) + return + + next_extinguish = world.time + extinguish_cooldown + extinguishes_left-- + H << "Your suit automatically extinguishes the fire." + H.ExtinguishMob() + +/obj/item/clothing/head/helmet/space/eva/plasmaman + flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE | PLASMAGUARD + species_restricted = list("Plasmaman") + + icon_state = "plasmaman_helmet0" + item_state = "plasmaman_helmet0" + var/base_state = "plasmaman_helmet" + var/brightness_on = 4 //luminosity when on + var/on = 0 + var/no_light=0 // Disable the light on the atmos suit + action_button_name = "Toggle Helmet Light" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/attack_self(mob/user) + if(!isturf(user.loc)) + user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities. + return + if(no_light) + return + on = !on + icon_state = "[base_state][on]" +// item_state = "rig[on]-[_color]" + if(on) user.SetLuminosity(user.luminosity + brightness_on) + else user.SetLuminosity(user.luminosity - brightness_on) + +/obj/item/clothing/head/helmet/space/eva/plasmaman/pickup(mob/user) + if(on) + user.SetLuminosity(user.luminosity + brightness_on) +// user.UpdateLuminosity() + SetLuminosity(0) + +/obj/item/clothing/head/helmet/space/eva/plasmaman/dropped(mob/user) + if(on) + user.SetLuminosity(user.luminosity - brightness_on) +// user.UpdateLuminosity() + SetLuminosity(brightness_on) + + + +// ENGINEERING +/obj/item/clothing/suit/space/eva/plasmaman/assistant + icon_state = "plasmamanAssistant_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/assistant + icon_state = "plasmamanAssistant_helmet0" + base_state = "plasmamanAssistant_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/atmostech + icon_state = "plasmamanAtmos_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/atmostech + icon_state = "plasmamanAtmos_helmet0" + base_state = "plasmamanAtmos_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/engineer + icon_state = "plasmamanEngineer_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/engineer + icon_state = "plasmamanEngineer_helmet0" + base_state = "plasmamanEngineer_helmet" + + +//SERVICE + +/obj/item/clothing/suit/space/eva/plasmaman/botanist + icon_state = "plasmamanBotanist_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/botanist + icon_state = "plasmamanBotanist_helmet0" + base_state = "plasmamanBotanist_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/chaplain + icon_state = "plasmamanChaplain_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/chaplain + icon_state = "plasmamanChaplain_helmet0" + base_state = "plasmamanChaplain_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/service + icon_state = "plasmamanService_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/service + icon_state = "plasmamanService_helmet0" + base_state = "plasmamanService_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/janitor + icon_state = "plasmamanJanitor_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/janitor + icon_state = "plasmamanJanitor_helmet0" + base_state = "plasmamanJanitor_helmet" + + +//CARGO + +/obj/item/clothing/suit/space/eva/plasmaman/cargo + icon_state = "plasmamanCargo_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/cargo + icon_state = "plasmamanCargo_helmet0" + base_state = "plasmamanCargo_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/miner + icon_state = "plasmamanMiner_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/miner + icon_state = "plasmamanMiner_helmet0" + base_state = "plasmamanMiner_helmet" + + +// MEDSCI + +/obj/item/clothing/suit/space/eva/plasmaman/medical + icon_state = "plasmamanMedical_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/medical + icon_state = "plasmamanMedical_helmet0" + base_state = "plasmamanMedical_helmet" + +/obj/item/clothing/suit/space/eva/plasmaman/science + icon_state = "plasmamanScience_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/science + icon_state = "plasmamanScience_helmet0" + base_state = "plasmamanScience_helmet" + + +//SECURITY + +/obj/item/clothing/suit/space/eva/plasmaman/security + icon_state = "plasmamanSecurity_suit" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/security + icon_state = "plasmamanSecurity_helmet0" + base_state = "plasmamanSecurity_helmet" \ No newline at end of file diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 0c9ac105043..1655618eb8f 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -470,4 +470,11 @@ else icon_state = initial(icon_state) item_state = initial(item_state) - usr.update_inv_wear_suit() \ No newline at end of file + usr.update_inv_wear_suit() + +/obj/item/clothing/suit/lordadmiral + name = "Lord Admiral's Coat" + desc = "You'll be the Ruler of the King's Navy in no time." + icon_state = "lordadmiral" + item_state = "lordadmiral" + allowed = list (/obj/item/weapon/gun) \ No newline at end of file diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index 052eb50dd6f..0a1d3c49aba 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -78,4 +78,11 @@ name = "camo pants" desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station." icon_state = "camopants" - _color = "camopants" \ No newline at end of file + _color = "camopants" + +/obj/item/clothing/under/pants/chaps + name = "black leather assless chaps" + desc = "For those brave enough to weather the breeze." + icon_state = "chaps" + _color = "chaps" + flags = ONESIZEFITSALL \ No newline at end of file diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index 1dd1956c7ab..0a2203eedcd 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -46,8 +46,8 @@ var/global/list/possibleEvents = list() // Code/WorkInProgress/Cael_Aislinn/Economy/Economy_Events_Mundane.dm possibleEvents[/datum/event/economic_event] = 300 - possibleEvents[/datum/event/trivial_news] = 400 - possibleEvents[/datum/event/mundane_news] = 300 + //possibleEvents[/datum/event/trivial_news] = 400 + //possibleEvents[/datum/event/mundane_news] = 300 possibleEvents[/datum/event/cargo_bonus] = 150 diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 604a4007ab9..08614d68c9c 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -293,12 +293,12 @@ /client/proc/event_manager_panel() set name = "Event Manager Panel" - set category = "Admin" + set category = "Event" if(event_manager) event_manager.Interact(usr) feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! return - + /datum/event/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! var/area/candidate = null @@ -343,7 +343,7 @@ break return candidate - + /datum/event/proc/num_players() var/players = 0 for(var/mob/living/carbon/human/P in player_list) diff --git a/code/modules/media/mediamanager.dm b/code/modules/media/mediamanager.dm index 46103722c68..aa52f5c80a2 100644 --- a/code/modules/media/mediamanager.dm +++ b/code/modules/media/mediamanager.dm @@ -6,8 +6,36 @@ * Rewritten (except for player HTML) by N3X15 ***********************/ -// Open up WMP and play musique. -// TODO: Convert to VLC for cross-platform and ogg support. - N3X +// Open up VLC and play musique. +// Converted to VLC for cross-platform and ogg support. - N3X +var/const/PLAYER_HTML={" + + + +"} + +/* OLD, DO NOT USE. CONTROLS.CURRENTPOSITION IS BROKEN. var/const/PLAYER_HTML={" "} +*/ // Hook into the events we desire. /hook_handler/soundmanager diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 0adc5d9d775..7a607c72e77 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -1,8 +1,8 @@ /mob/living/carbon/alien/humanoid/hunter name = "alien hunter" caste = "h" - maxHealth = 150 - health = 150 + maxHealth = 125 + health = 125 storedPlasma = 100 max_plasma = 150 icon_state = "alienh_s" diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index a06482242c2..5870ca062d8 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -1,8 +1,8 @@ /mob/living/carbon/alien/humanoid/sentinel name = "alien sentinel" caste = "s" - maxHealth = 125 - health = 125 + maxHealth = 150 + health = 150 storedPlasma = 100 max_plasma = 250 icon_state = "aliens_s" diff --git a/code/modules/mob/living/carbon/give.dm b/code/modules/mob/living/carbon/give.dm index 12673d50549..63dbfac240c 100644 --- a/code/modules/mob/living/carbon/give.dm +++ b/code/modules/mob/living/carbon/give.dm @@ -1,18 +1,15 @@ -/mob/living/carbon/verb/give() +/mob/living/carbon/verb/give(var/mob/living/carbon/target in oview(1)) set category = "IC" set name = "Give" - set src in view(1) - if(src.stat == 2 || usr.stat == 2 || src.client == null) - return - if(src == usr) - usr << "\red I feel stupider, suddenly." + + if(target.stat == 2 || usr.stat == 2|| target.client == null) return var/obj/item/I if(!usr.hand && usr.r_hand == null) - usr << "\red You don't have anything in your right hand to give to [src.name]" + usr << " You don't have anything in your right hand to give to [target.name]" return if(usr.hand && usr.l_hand == null) - usr << "\red You don't have anything in your left hand to give to [src.name]" + usr << " You don't have anything in your left hand to give to [target.name]" return if(usr.hand) I = usr.l_hand @@ -23,38 +20,38 @@ if((I.flags & NODROP) || (I.flags & ABSTRACT)) usr << "That's not exactly something you can give." return - if(src.r_hand == null || src.l_hand == null) - switch(alert(src,"[usr] wants to give you \a [I]?",,"Yes","No")) + if(target.r_hand == null || target.l_hand == null) + switch(alert(target,"[usr] wants to give you \a [I]?",,"Yes","No")) if("Yes") if(!I) return if(!Adjacent(usr)) - usr << "\red You need to stay in reaching distance while giving an object." - src << "\red [usr.name] moved too far away." + usr << " You need to stay in reaching distance while giving an object." + target << " [usr.name] moved too far away." return if((usr.hand && usr.l_hand != I) || (!usr.hand && usr.r_hand != I)) - usr << "\red You need to keep the item in your active hand." - src << "\red [usr.name] seem to have given up on giving \the [I.name] to you." + usr << " You need to keep the item in your active hand." + target << " [usr.name] seem to have given up on giving \the [I.name] to you." return - if(src.r_hand != null && src.l_hand != null) - src << "\red Your hands are full." - usr << "\red Their hands are full." + if(target.r_hand != null && target.l_hand != null) + target << " Your hands are full." + usr << " Their hands are full." return else usr.drop_item() - if(src.r_hand == null) - src.r_hand = I + if(target.r_hand == null) + target.r_hand = I else - src.l_hand = I - I.loc = src + target.l_hand = I + I.loc = target I.layer = 20 - I.add_fingerprint(src) + I.add_fingerprint(target) src.update_inv_l_hand() src.update_inv_r_hand() usr.update_inv_l_hand() usr.update_inv_r_hand() - src.visible_message("\blue [usr.name] handed \the [I.name] to [src.name].") + target.visible_message(" [usr.name] handed \the [I.name] to [target.name].") if("No") - src.visible_message("\red [usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.") + target.visible_message(" [usr.name] tried to hand [I.name] to [target.name] but [target.name] didn't want it.") else - usr << "\red [src.name]'s hands are full." \ No newline at end of file + usr << " [target.name]'s hands are full." \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 5808034d020..f56ee3a3cc7 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -11,8 +11,10 @@ return if(istype(I, /obj/item/clothing/head/helmet/space/rig)) // If the item to be equipped is a rigid suit helmet - src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping. - return 0 + var/obj/item/clothing/head/helmet/space/rig/C = I + if(C.rig_restrict_helmet) + src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping. + return 0 if(H.equip_to_appropriate_slot(I)) if(hand) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fead221fbf0..3877fa52634 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -466,7 +466,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(species.name=="Plasmaman") // Check if we're wearing our biosuit and mask. - if (!istype(wear_suit,/obj/item/clothing/suit/space/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/plasmaman)) + if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman)) //testing("Plasmaman [src] leakin'. coverflags=[cover_flags]") // OH FUCK HE LEAKIN'. // This was OP. diff --git a/code/modules/mob/living/carbon/human/plasmaman/species.dm b/code/modules/mob/living/carbon/human/plasmaman/species.dm index edb0a7c8539..29e54e8ab8f 100644 --- a/code/modules/mob/living/carbon/human/plasmaman/species.dm +++ b/code/modules/mob/living/carbon/human/plasmaman/species.dm @@ -30,26 +30,48 @@ H.unEquip(H.wear_mask) H.equip_or_collect(new /obj/item/clothing/mask/breath(H), slot_wear_mask) - var/suit=/obj/item/clothing/suit/space/plasmaman - var/helm=/obj/item/clothing/head/helmet/space/plasmaman + var/suit=/obj/item/clothing/suit/space/eva/plasmaman + var/helm=/obj/item/clothing/head/helmet/space/eva/plasmaman var/tank_slot = slot_s_store var/tank_slot_name = "suit storage" switch(H.mind.assigned_role) - /* if("Research Director","Scientist","Geneticist","Roboticist") - suit=/obj/item/clothing/suit/space/vox/casual/science - helm=/obj/item/clothing/head/helmet/space/vox/casual/science - if("Chief Engineer","Station Engineer","Atmospheric Technician") - suit=/obj/item/clothing/suit/space/vox/casual/engineer - helm=/obj/item/clothing/head/helmet/space/vox/casual/engineer + suit=/obj/item/clothing/suit/space/eva/plasmaman/science + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/science + if("Chief Engineer","Station Engineer") + suit=/obj/item/clothing/suit/space/eva/plasmaman/engineer + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/engineer + if("Atmospheric Technician") + suit=/obj/item/clothing/suit/space/eva/plasmaman/atmostech + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/atmostech if("Head of Security","Warden","Detective","Security Officer") - suit=/obj/item/clothing/suit/space/vox/casual/security - helm=/obj/item/clothing/head/helmet/space/vox/casual/security + suit=/obj/item/clothing/suit/space/eva/plasmaman/security + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security if("Chief Medical Officer","Medical Doctor","Paramedic","Chemist") - suit=/obj/item/clothing/suit/space/vox/casual/medical - helm=/obj/item/clothing/head/helmet/space/vox/casual/medical - */ // For now. + suit=/obj/item/clothing/suit/space/eva/plasmaman/medical + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical + if("Bartender", "Chef") + suit=/obj/item/clothing/suit/space/eva/plasmaman/service + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/service + if("Cargo Technician", "Quartermaster") + suit=/obj/item/clothing/suit/space/eva/plasmaman/cargo + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/cargo + if("Shaft Miner") + suit=/obj/item/clothing/suit/space/eva/plasmaman/miner + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/miner + if("Botanist") + suit=/obj/item/clothing/suit/space/eva/plasmaman/botanist + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/botanist + if("Chaplain") + suit=/obj/item/clothing/suit/space/eva/plasmaman/chaplain + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/chaplain + if("Janitor") + suit=/obj/item/clothing/suit/space/eva/plasmaman/janitor + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/janitor + if("Assistant") + suit=/obj/item/clothing/suit/space/eva/plasmaman/assistant + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/assistant if("Clown","Mime") tank_slot=slot_r_hand tank_slot_name = "hand" diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 12ef687c696..2c5e2b417c6 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -598,6 +598,32 @@ icon_state = "vox_shortquills" species_allowed = list("Vox") + vox_crestedquills + name = "Crested Vox Quills" + icon_state = "vox_crestedquills" + species_allowed = list("Vox") + + vox_tielquills + name = "Vox Tiel Quills" + icon_state = "vox_tielquills" + species_allowed = list("Vox") + + vox_emperorquills + name = "Vox Emperor Quills" + icon_state = "vox_emperorquills" + species_allowed = list("Vox") + + vox_keelquills + name = "Vox Keel Quills" + icon_state = "vox_keelquills" + species_allowed = list("Vox") + + vox_keetquills + name = "Vox Keet Quills" + icon_state = "vox_keetquills" + species_allowed = list("Vox") + + /datum/sprite_accessory/facial_hair taj_sideburns diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index a6a2e459116..60c4fdd6c37 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -68,6 +68,17 @@ build_path = /obj/item/weapon/grenade/chem_grenade/large category = list("Weapons") +/datum/design/tele_shield + name = "Telescopic Riot Shield" + desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." + id = "tele_shield" + req_tech = list("combat" = 4, "materials" = 3, "engineering" = 3) + build_type = PROTOLATHE + materials = list("$metal" = 4000, "$glass" = 5000, "$silver" = 300) + build_path = /obj/item/weapon/shield/riot/tele + locked = 1 + category = list("Weapons") + /datum/design/lasercannon name = "Laser Cannon" desc = "A heavy duty laser cannon." diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm index 2e7e39d9fea..4350591c548 100644 --- a/code/modules/shuttles/shuttle_emergency.dm +++ b/code/modules/shuttles/shuttle_emergency.dm @@ -6,7 +6,7 @@ if (istype(in_use, /obj/machinery/computer/shuttle_control/emergency)) var/obj/machinery/computer/shuttle_control/emergency/C = in_use C.reset_authorization() - + emergency_shuttle.shuttle_arrived() /datum/shuttle/ferry/emergency/long_jump(var/area/departing, var/area/destination, var/area/interim, var/travel_time, var/direction) @@ -37,7 +37,7 @@ var/obj/machinery/computer/shuttle_control/emergency/C = user if (!C.has_authorization()) return 0 - + if(moving_status == SHUTTLE_STRANDED && C.has_authorization()) return 1 return ..() @@ -45,12 +45,12 @@ /datum/shuttle/ferry/emergency/can_force(var/mob/user) if (istype(user, /obj/machinery/computer/shuttle_control/emergency)) var/obj/machinery/computer/shuttle_control/emergency/C = user - + //initiating or cancelling a launch ALWAYS requires authorization, but if we are already set to launch anyways than forcing does not. //this is so that people can force launch if the docking controller cannot safely undock without needing X heads to swipe. if (process_state != WAIT_LAUNCH && !C.has_authorization()) return 0 - + return ..() /datum/shuttle/ferry/emergency/can_cancel(var/mob/user) @@ -62,7 +62,7 @@ /datum/shuttle/ferry/emergency/launch(var/user) if (!can_launch(user)) return - + if(emergency_shuttle.no_escape) user << "The emergency shuttle has been disabled by Centcom." return @@ -155,7 +155,7 @@ /obj/machinery/computer/shuttle_control/emergency/attackby(obj/item/weapon/W as obj, mob/user as mob, params) read_authorization(W) ..() - + /obj/machinery/computer/shuttle_control/emergency/emag_act(user as mob) if (!emagged) user << "\blue You short out the [src]'s authorization protocols." @@ -214,7 +214,7 @@ "docking_status" = shuttle.docking_controller? shuttle.docking_controller.get_docking_status() : null, "docking_override" = shuttle.docking_controller? shuttle.docking_controller.override_enabled : null, "can_launch" = shuttle.can_launch(src), - "can_cancel" = shuttle.can_cancel(src), + //"can_cancel" = shuttle.can_cancel(src), "can_force" = shuttle.can_force(src), "auth_list" = auth_list, "has_auth" = has_auth, @@ -236,7 +236,7 @@ if(href_list["removeid"]) var/dna_hash = href_list["removeid"] authorized -= dna_hash - + if(!emagged && href_list["scanid"]) //They selected an empty entry. Try to scan their id. if (ishuman(usr)) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index a38739a0624..812efd72939 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 7ed0f6e3f79..7b7992d4ce7 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/in-hand/tools.dmi b/icons/mob/in-hand/tools.dmi index 86bdbd965e5..90ff792ef6e 100644 Binary files a/icons/mob/in-hand/tools.dmi and b/icons/mob/in-hand/tools.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 56e17b1d424..a3d8a405b32 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 6156fab8b26..3d93fb8aef7 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/uniform_fat.dmi b/icons/mob/uniform_fat.dmi index 7e93cf3901b..21824ea5389 100644 Binary files a/icons/mob/uniform_fat.dmi and b/icons/mob/uniform_fat.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 1fdf5bbc625..fa5a45504c7 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index cc689573fd2..ffc1bcef480 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 6bed53895d6..880b5346d1e 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 3aa0cded108..7cee746fc5d 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index b85721bcc27..3b53aeb7927 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 3dc1bcadfe8..d576f993bef 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index f441c3d5ac4..5a2601f5283 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/interface/interface.dm b/interface/interface.dm index 4362cad34d2..267dfdfaca8 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -13,7 +13,7 @@ src << "The wiki URL is not set in the server configuration." return -#define CHANGELOG "https://github.com/ParadiseSS13/Paradise/commits/master" +#define CHANGELOG "https://github.com/ParadiseSS13/Paradise/issues?q=is%3Apr+is%3Aclosed" /client/verb/changes() set name = "Changelog" set desc = "Visit Github to check out the commits." diff --git a/nano/templates/escape_shuttle_control_console.tmpl b/nano/templates/escape_shuttle_control_console.tmpl index f3331313ad0..61627f558a9 100644 --- a/nano/templates/escape_shuttle_control_console.tmpl +++ b/nano/templates/escape_shuttle_control_console.tmpl @@ -77,7 +77,7 @@