diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 8af45a38ba4..6625e4479ea 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -322,14 +322,71 @@ return /* - Alt-click to ventcrawl - Monkeys, aliens, and slimes - This is a little buggy but somehow that just seems to plague ventcrawl. - I am sorry, I don't know why. + Alt-click to ventcrawl */ -/obj/machinery/atmospherics/unary/vent_pump/AltClick(var/mob/living/carbon/ML) - if(istype(ML)) - var/list/ventcrawl_verbs = list(/mob/living/carbon/monkey/verb/ventcrawl, /mob/living/carbon/alien/verb/ventcrawl, /mob/living/carbon/slime/verb/ventcrawl) - if(length(ML.verbs & ventcrawl_verbs)) // alien queens have this removed, an istype would be complicated - ML.handle_ventcrawl(src) - return - ..() +/obj/machinery/atmospherics/unary/vent_pump/AltClick(var/mob/living/L) + if(!L.ventcrawler || !isliving(L) || !Adjacent(L)) + return + if(L.stat) + L << "You must be conscious to do this!" + return + if(L.lying) + L << "You can't vent crawl while you're stunned!" + return + if(welded) + L << "That vent is welded shut." + return + + if(!network || !network.normal_members.len) + L << "This vent is not connected to anything." + return + + var/list/vents = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in network.normal_members) + if(temp_vent.welded) + continue + if(temp_vent in loc) + continue + var/turf/T = get_turf(temp_vent) + + if(!T || T.z != loc.z) + continue + + var/i = 1 + var/index = "[T.loc.name]\[[i]\]" + while(index in vents) + i++ + index = "[T.loc.name]\[[i]\]" + vents[index] = temp_vent + if(!vents.len) + L << " There are no available vents to travel to, they could be welded. " + return + + var/obj/selection = input(L,"Select a destination.", "Duct System") as null|anything in sortAssoc(vents) + if(!selection) return + + if(!Adjacent(L)) + return + if(iscarbon(L) && L.ventcrawler < 2) // lesser ventcrawlers can't bring items + for(var/obj/item/carried_item in L.contents) + if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant + L << " You can't be carrying items or have items equipped when vent crawling!" + return + + var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection] + if(!target_vent) + return + + for(var/mob/O in viewers(L, null)) + O.show_message(text("[L] scrambles into the ventillation ducts!"), 1) + + for(var/mob/O in hearers(target_vent,null)) + O.show_message("You hear something squeezing through the ventilation ducts.",2) + + if(target_vent.welded) //the vent can be welded while they scrolled through the list. + target_vent = src + L << " The vent you were heading to appears to be welded." + L.loc = target_vent.loc + var/area/new_area = get_area(loc) + if(new_area) + new_area.Entered(L) diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm index 34498dc58cf..3a67701487f 100644 --- a/code/LINDA/LINDA_system.dm +++ b/code/LINDA/LINDA_system.dm @@ -110,19 +110,12 @@ datum/controller/air_system /datum/controller/air_system/proc/process_excited_groups() for(var/datum/excited_group/EG in excited_groups) - if(EG.breakdown) - EG.breakdown_cooldown ++ - else - EG.breakdown_cooldown = 0 - - if(EG.breakdown_cooldown > 10) - if(EG.self_compare()) - EG.dismantle() + EG.breakdown_cooldown ++ if(EG.breakdown_cooldown == 10) - if(!EG.self_compare()) - EG.reset_cooldowns() EG.self_breakdown() - EG.breakdown = 1 + return + if(EG.breakdown_cooldown > 20) + EG.dismantle() /turf/proc/CanAtmosPass(var/turf/T) if(!istype(T)) return 0 diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm index c5a57c9e577..ac1956fe21c 100644 --- a/code/LINDA/LINDA_turf_tile.dm +++ b/code/LINDA/LINDA_turf_tile.dm @@ -261,7 +261,7 @@ turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduc /turf/simulated/proc/last_share_check() if(air.last_share > MINIMUM_AIR_TO_SUSPEND) - excited_group.breakdown = 0 + excited_group.reset_cooldowns() /turf/proc/high_pressure_movements() for(var/atom/movable/M in src) @@ -317,36 +317,46 @@ atom/movable/proc/experience_pressure_difference(pressure_difference, direction) /datum/excited_group/proc/reset_cooldowns() breakdown_cooldown = 0 -/datum/excited_group/proc/self_compare() - var/restore = 1 - var/turf/simulated/sample = pick(turf_list) - for(var/turf/simulated/T in turf_list) - if(!T.air.compare(sample.air)) - restore = 0 - break - if(restore) - return 1 - /datum/excited_group/proc/self_breakdown() var/datum/gas_mixture/A = new + var/datum/gas/sleeping_agent/S = new + A.trace_gases += S for(var/turf/simulated/T in turf_list) A.oxygen += T.air.oxygen A.carbon_dioxide+= T.air.carbon_dioxide A.nitrogen += T.air.nitrogen A.toxins += T.air.toxins + + if(T.air.trace_gases.len) + for(var/datum/gas/N in T.air.trace_gases) + S.moles += N.moles + for(var/turf/simulated/T in turf_list) T.air.oxygen = A.oxygen/turf_list.len T.air.carbon_dioxide= A.carbon_dioxide/turf_list.len T.air.nitrogen = A.nitrogen/turf_list.len T.air.toxins = A.toxins/turf_list.len + if(S.moles > 0) + if(T.air.trace_gases.len) + for(var/datum/gas/G in T.air.trace_gases) + G.moles = S.moles/turf_list.len + else + var/datum/gas/sleeping_agent/G = new + G.moles = S.moles/turf_list.len + T.air.trace_gases += G + + if(T.air.check_tile_graphic()) + T.update_visuals(T.air) + /datum/excited_group/proc/dismantle() for(var/turf/simulated/T in turf_list) T.excited = 0 T.recently_active = 0 + T.excited_group = null air_master.active_turfs -= T - air_master.excited_groups -= src + garbage_collect() /datum/excited_group/proc/garbage_collect() for(var/turf/simulated/T in turf_list) diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm index 0a10a7bd066..14a01866ff4 100644 --- a/code/datums/diseases/advance/symptoms/dizzy.dm +++ b/code/datums/diseases/advance/symptoms/dizzy.dm @@ -33,5 +33,5 @@ Bonus M << "[pick("You feel dizzy.", "Your head starts spinning.")]" else M << "You are unable to look straight!" - M.make_dizzy(5) + M.Dizzy(5) return \ No newline at end of file diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 7fd5bbf583d..edff141b2d0 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1039,3 +1039,34 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/vending_refill/autodrobe) cost = 15 containername = "autodrobe supply crate" + +/datum/supply_packs/misc/formalwear //This is a very classy crate. + name = "Formal-wear crate" + contains = list(/obj/item/clothing/under/blacktango, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/lawyer/bluesuit, + /obj/item/clothing/suit/lawyer/bluejacket, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/suit/lawyer/purpjacket, + /obj/item/clothing/under/lawyer/blacksuit, + /obj/item/clothing/suit/lawyer/blackjacket, + /obj/item/clothing/tie/waistcoat, + /obj/item/clothing/tie/blue, + /obj/item/clothing/tie/red, + /obj/item/clothing/tie/black, + /obj/item/clothing/head/bowler, + /obj/item/clothing/head/fedora, + /obj/item/clothing/head/flatcap, + /obj/item/clothing/head/beret, + /obj/item/clothing/head/that, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/under/suit_jacket/charcoal, + /obj/item/clothing/under/suit_jacket/navy, + /obj/item/clothing/under/suit_jacket/burgundy, + /obj/item/clothing/under/suit_jacket/checkered, + /obj/item/clothing/under/suit_jacket/tan) + cost = 30 //Lots of very expensive items. You gotta pay up to look good! + containername = "formal-wear crate" diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 0b3592004c9..96c93a625d4 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -343,7 +343,7 @@ if(!M.mind || !M.mind.changeling) M.ear_deaf += 30 M.confused += 20 - M.make_jittery(50) + M.Jitter(50) else M << sound('sound/effects/screech.ogg') @@ -535,6 +535,20 @@ var/list/datum/dna/hivemind_bank = list() if(src && src.mind && src.mind.changeling) src.mind.changeling.mimicing = "" +/mob/living/carbon/proc/changeling_emp_shriek() + set category = "Changeling" + set name = "Dissonant Shriek (20)" + + var/datum/changeling/changeling = changeling_power(20) + if(!changeling) return + + for(var/obj/machinery/light/L in range(5, usr)) + L.on = 1 + L.broken() + + empulse(get_turf(src), 2, 5, 1) + + changeling.chem_charges -= 20 /mob/living/carbon/proc/changeling_arm_blade() set category = "Changeling" diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index 6c23082de16..862b156501a 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -161,6 +161,13 @@ var/list/powerinstances allowduringlesserform = 1 verbpath = /mob/living/carbon/proc/changeling_mute_sting +/datum/power/changeling/emp_shriek + name = "Dissonant Shriek" + desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." + genomecost = 1 + allowduringlesserform = 1 + verbpath = /mob/living/carbon/proc/changeling_emp_shriek + /datum/power/changeling/arm_blade name = "Arm Blade" desc = "We reform one of our arms into a deadly blade." diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 63690a30078..903732b6d17 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -26,7 +26,7 @@ /obj/item/weapon/melee/cultblade/pickup(mob/living/user as mob) if(!iscultist(user)) user << "\red An overwhelming feeling of dread comes over you as you pick up the cultist's sword. It would be wise to be rid of this blade quickly." - user.make_dizzy(120) + user.Dizzy(120) /obj/item/clothing/head/culthood diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index f73cca4fb64..3584ea4cb8f 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -84,29 +84,6 @@ /obj/var/list/req_one_access = null /obj/var/req_one_access_txt = "0" -/obj/New() - ..() - //NOTE: If a room requires more than one access (IE: Morgue + medbay) set the req_acesss_txt to "5;6" if it requires 5 and 6 - if(src.req_access_txt) - var/list/req_access_str = text2list(req_access_txt,";") - if(!req_access) - req_access = list() - for(var/x in req_access_str) - var/n = text2num(x) - if(n) - req_access += n - - if(src.req_one_access_txt) - var/list/req_one_access_str = text2list(req_one_access_txt,";") - if(!req_one_access) - req_one_access = list() - for(var/x in req_one_access_str) - var/n = text2num(x) - if(n) - req_one_access += n - - - //returns 1 if this mob has sufficient access to use this object /obj/proc/allowed(mob/M) //check if it doesn't require any access at all @@ -134,9 +111,25 @@ return null /obj/proc/check_access(obj/item/I) + //These generations have been moved out of /obj/New() because they were slowing down the creation of objects that never even used the access system. + if(!src.req_access) + src.req_access = list() + if(src.req_access_txt) + var/list/req_access_str = text2list(req_access_txt,";") + for(var/x in req_access_str) + var/n = text2num(x) + if(n) + req_access += n + + if(!src.req_one_access) + src.req_one_access = list() + if(src.req_one_access_txt) + var/list/req_one_access_str = text2list(req_one_access_txt,";") + for(var/x in req_one_access_str) + var/n = text2num(x) + if(n) + req_one_access += n - if(!src.req_access && !src.req_one_access) //no requirements - return 1 if(!istype(src.req_access, /list)) //something's very wrong return 1 diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 644196c1c61..8f90db9ba41 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -327,7 +327,7 @@ var/global/lawyer = 0//Checks for another lawyer H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/purpsuit(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/lawyer/purpjacket(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) @@ -336,6 +336,4 @@ var/global/lawyer = 0//Checks for another lawyer else H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - return 1 - - + return 1 diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 65552c19747..3cc81b68c26 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -31,7 +31,7 @@ /obj/item/weapon/circuitboard/turbine_computer name = "circuit board (Turbine Computer)" build_path = /obj/machinery/computer/turbine_computer - origin_tech = "programming=4;engineering=4;power=4" + origin_tech = "programming=4;engineering=4;powerstorage=4" /obj/item/weapon/circuitboard/telesci_console name = "circuit board (Telescience Console)" build_path = /obj/machinery/computer/telescience diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 94430c382ce..b3672caa522 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -116,6 +116,7 @@ item_quants[n]++ else item_quants[n] = 1 + item_quants = sortAssoc(item_quants) /obj/machinery/smartfridge/attack_paw(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index a1b3e83847a..7da5a499992 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -767,13 +767,12 @@ /obj/item/clothing/suit/wizrobe/marisa/fake = 1,/obj/item/clothing/under/sundress = 1,/obj/item/clothing/head/witchwig = 1,/obj/item/weapon/staff/broom = 1, /obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1, /obj/item/clothing/under/sexyclown = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,/obj/item/clothing/suit/apron/overalls = 1, - /obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero, /obj/item/clothing/head/sombrero/green =1, /obj/item/clothing/suit/poncho = 1, - /obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1,) //Pretty much everything that had a chance to spawn. - contraband = list(/obj/item/clothing/suit/cardborg = 1,/obj/item/clothing/head/cardborg = 1,/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1) + /obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/head/sombrero/green = 1, /obj/item/clothing/suit/poncho = 1, + /obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1) //Pretty much everything that had a chance to spawn. + contraband = list(/obj/item/clothing/suit/cardborg = 1,/obj/item/clothing/head/cardborg = 1, /obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1) premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1) refill_canister = /obj/item/weapon/vending_refill/autodrobe - /obj/machinery/vending/autodrobe/New() ..() component_parts = list() diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 8bc32a61042..97e7ed3f775 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -114,7 +114,7 @@ if(!istype(target, /obj) && !istype(target, /mob)) return if(istype(target, /mob)) var/mob/M = target - M.make_dizzy(3) + M.Dizzy(3) M.adjustBruteLoss(1) M.updatehealth() for (var/mob/V in viewers(src)) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 71ce4e29b80..257d4d133c2 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -134,7 +134,7 @@ M.Stun(10) M.Paralyse(4) else - M.make_jittery(500) + M.Jitter(500) /* //else the mousetraps are useless if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 1dd8b09b71a..a0d807b634c 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -13,6 +13,8 @@ var/times_used = 0 //Number of times it's been used. var/broken = 0 //Is the flash burnt out? var/last_used = 0 //last world.time it was used. + var/burnt = "flashburnt" + var/flashanim = "flash2" /obj/item/device/flash/proc/clown_check(mob/user) if(user && (CLUMSY in user.mutations) && prob(50)) @@ -33,7 +35,7 @@ /obj/item/device/flash/proc/burn_out(mob/user = null) //Made so you can override it if you want to have an invincible flash from R&D or something. broken = 1 - icon_state = "flashburnt" + icon_state = burnt if(user) user << "The bulb has burnt out!" @@ -112,7 +114,7 @@ del(animation) if(!flashfail) - flick("flash2", src) + flick(flashanim, src) if(!issilicon(M)) user.visible_message("[user] blinds [M] with the flash!") @@ -201,4 +203,12 @@ /obj/item/device/flash/synthetic/attack_self(mob/living/carbon/user, flag = 0, emp = 0) ..() if(!broken) - burn_out(user) \ No newline at end of file + burn_out(user) + +/obj/item/device/flash/memorizer + name = "memorizer" + desc = "If you see this, you're not likely to remember it any time soon." + icon_state = "memorizer" + item_state = "nullrod" + burnt = "memorizerburnt" + flashanim = "memorizer2" diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index d0452e9d244..52e2ee146e8 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -7,95 +7,73 @@ /obj/item/weapon/grenade/flashbang/prime() update_mob() - for(var/obj/structure/closet/L in view(get_turf(src), null)) - if(locate(/mob/living/carbon/, L)) - for(var/mob/living/carbon/M in L) - bang(get_turf(src), M) + var/flashbang_turf = get_turf(src) + for(var/obj/structure/closet/L in view(7, flashbang_turf)) + for(var/mob/living/M in L) + bang(get_turf(M), M) + for(var/mob/living/M in view(7, flashbang_turf)) + bang(get_turf(M), M) - for(var/mob/living/carbon/M in viewers(get_turf(src), null)) - bang(get_turf(src), M) - - for(var/obj/effect/blob/B in view(8,get_turf(src))) //Blob damage here + for(var/obj/effect/blob/B in view(8,flashbang_turf)) //Blob damage here var/damage = round(30/(get_dist(B,get_turf(src))+1)) B.health -= damage B.update_icon() del(src) -/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/carbon/M) - // Added a new proc called 'bang' that takes a location and a person to be banged. - // Called during the loop that bangs people in lockers/containers and when banging - // people in normal view. Could theroetically be called during other explosions. - // -- Polymorph - M << "\red BANG" +/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M) + M << "BANG" playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) //Checking for protections var/eye_safety = 0 - var/ear_safety = 0 + var/ear_safety = 2 + var/distance = max(1, get_dist(src, T)) + var/takes_eye_damage = 0 if(iscarbon(M)) - eye_safety = M.eyecheck() - if(ishuman(M)) - if(istype(M:ears, /obj/item/clothing/ears/earmuffs)) - ear_safety += 2 - if(HULK in M.mutations) - ear_safety += 1 - if(istype(M:head, /obj/item/clothing/head/helmet)) - ear_safety += 1 + var/mob/living/carbon/C = M + eye_safety = C.eyecheck() + if(ishuman(C)) + takes_eye_damage = 1 + var/mob/living/carbon/human/H = C + ear_safety = 0 + if(istype(H.ears, /obj/item/clothing/ears/earmuffs) || istype(H.head, /obj/item/clothing/head/helmet)) + ear_safety++ + if(ismonkey(C)) + ear_safety = 0 + takes_eye_damage = 1 -//Flashing everyone +//Flash if(eye_safety < 1) flick("e_flash", M.flash) M.eye_stat += rand(1, 3) - M.Stun(2) - M.Weaken(5) - - - -//Now applying sound - if((get_dist(M, T) <= 2 || src.loc == M.loc || src.loc == M)) - if(ear_safety > 0) - M.Stun(2) - M.Weaken(1) + M.Stun(max(10/distance, 3)) + M.Weaken(max(10/distance, 3)) + if (M.eye_stat >= 20 && takes_eye_damage) + M << "Your eyes start to burn badly!" + M.disabilities |= NEARSIGHTED + if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang))) + if (prob(M.eye_stat - 20 + 1)) + M << "You can't see anything!" + M.sdisabilities |= BLIND +//Bang + if((src.loc == M) || src.loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection + M.Stun(10) + M.Weaken(10) + if(!ear_safety) + M.Stun(max(10/distance, 3)) + M.Weaken(max(10/distance, 3)) + M.ear_damage += rand(0, 5) + M.ear_deaf = max(M.ear_deaf,15) + if (M.ear_damage >= 15) + M << "Your ears start to ring badly!" + if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang))) + if (prob(M.ear_damage - 10 + 5)) + M << "You can't hear anything!" + M.sdisabilities |= DEAF else - M.Stun(5) - M.Weaken(3) - if ((prob(14) || (M == src.loc && prob(70)))) - M.ear_damage += rand(1, 10) - else - M.ear_damage += rand(0, 5) - M.ear_deaf = max(M.ear_deaf,15) - - else if(get_dist(M, T) <= 5) - if(!ear_safety) - M.Stun(8) - M.ear_damage += rand(0, 3) - M.ear_deaf = max(M.ear_deaf,10) - - else if(!ear_safety) - M.Stun(4) - M.ear_damage += rand(0, 1) - M.ear_deaf = max(M.ear_deaf,5) - -//This really should be in mob not every check - if (M.eye_stat >= 20) - M << "\red Your eyes start to burn badly!" - M.disabilities |= NEARSIGHTED - if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang))) - if (prob(M.eye_stat - 20 + 1)) - M << "\red You can't see anything!" - M.sdisabilities |= BLIND - if (M.ear_damage >= 15) - M << "\red Your ears start to ring badly!" - if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang))) - if (prob(M.ear_damage - 10 + 5)) - M << "\red You can't hear anything!" - M.sdisabilities |= DEAF - else - if (M.ear_damage >= 5) - M << "\red Your ears start to ring!" - M.update_icons() - + if (M.ear_damage >= 5) + M << "Your ears start to ring!" /obj/item/weapon/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve desc = "Use of this weapon may constiute a war crime in your area, consult your local captain." diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index bc317891e04..d7cab0a8be1 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -40,7 +40,7 @@ var/turf/user_loc = user.loc var/turf/C_loc = C.loc - if(do_after(user, 40)) + if(do_after(user, 30)) if(!C || C.handcuffed) return if(user_loc == user.loc && C_loc == C.loc) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 2224652f68b..14b152cdca5 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -99,5 +99,7 @@ new /obj/item/clothing/suit/lawyer/bluejacket(src) new /obj/item/clothing/under/lawyer/purpsuit(src) new /obj/item/clothing/suit/lawyer/purpjacket(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/black(src) \ No newline at end of file + new /obj/item/clothing/under/lawyer/blacksuit(src) + new /obj/item/clothing/suit/lawyer/blackjacket(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/shoes/laceup(src) \ 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 ba8d90e318c..b4823cc5181 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -25,6 +25,8 @@ new /obj/item/device/radio/headset/heads/captain(src) new /obj/item/clothing/gloves/captain(src) new /obj/item/weapon/gun/energy/gun(src) + new /obj/item/clothing/under/captainformal(src) + new /obj/item/clothing/head/helmet/HoS/dermal(src) return @@ -91,6 +93,8 @@ new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/gun(src) new /obj/item/weapon/storage/belt/security(src) + new /obj/item/clothing/under/hosformalfem(src) + new /obj/item/clothing/under/hosformalmale(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 8b26ac4ced2..b355ad88802 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -301,6 +301,10 @@ new /obj/item/clothing/head/soft/grey(src) new /obj/item/clothing/head/soft/grey(src) new /obj/item/clothing/head/soft/grey(src) + if(prob(40)) + new /obj/item/clothing/under/assistantformal(src) + if(prob(40)) + new /obj/item/clothing/under/assistantformal(src) return diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 398539f6b4a..33eff71e825 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -19,7 +19,7 @@ /* 21st Sept 2010 Updated by Skie -- Still not perfect but better! Stuff you can't do: -Call proc /mob/proc/make_dizzy() for some player +Call proc /mob/proc/Dizzy() for some player Because if you select a player mob as owner it tries to do the proc for /mob/living/carbon/human/ instead. And that gives a run-time error. But you can call procs that are of type /mob/living/carbon/human/proc/ for that player. diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index ae36e72a041..7c14bd2ffc1 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -96,4 +96,12 @@ src.chained = 1 src.slowdown = 15 src.icon_state = "orange1" - return \ No newline at end of file + return + +/obj/item/clothing/shoes/orange/attack_hand(mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/C = user + if(C.shoes == src && src.chained == 1) + user << "You need help taking these off!" + return + ..() \ No newline at end of file diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 924c0e21997..bb12a94f227 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -100,6 +100,14 @@ blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS +/obj/item/clothing/suit/lawyer/blackjacket + name = "black suit jacket" + desc = "A professional suit jacket." + icon_state = "suitjacket_black" + item_state = "ro_suit" + blood_overlay_type = "coat" + body_parts_covered = CHEST|ARMS + //Mime /obj/item/clothing/suit/suspenders name = "suspenders" diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 6eef367f8cb..e7c7aeb259a 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -2,7 +2,9 @@ name = "wizard hat" desc = "Strange-looking hat-wear that most certainly belongs to a real magic user." icon_state = "wizard" - //Not given any special protective value since the magic robes are full-body protection --NEO + gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE + permeability_coefficient = 0.01 + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20) /obj/item/clothing/head/wizard/red name = "red wizard hat" @@ -13,6 +15,9 @@ name = "wizard hat" desc = "It has WIZZARD written across it in sequins. Comes with a cool beard." icon_state = "wizard-fake" + gas_transfer_coefficient = 1 + permeability_coefficient = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/head/wizard/marisa name = "witch hat" @@ -31,10 +36,10 @@ desc = "A magnificant, gem-lined robe that seems to radiate power." icon_state = "wizard" item_state = "wizrobe" - gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE + gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - body_parts_covered = CHEST|GROIN|ARMS|LEGS //It's magic, I ain't gotta explain shit. --NEO //fuck you neo, no way it covers his head -Pete - armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20) + body_parts_covered = CHEST|GROIN|ARMS|LEGS + armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20) allowed = list(/obj/item/weapon/teleportation_scroll) flags_inv = HIDEJUMPSUIT @@ -70,18 +75,23 @@ desc = "A rather dull, blue robe meant to mimick real wizard robes." icon_state = "wizard-fake" item_state = "wizrobe" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + gas_transfer_coefficient = 1 + permeability_coefficient = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/head/wizard/marisa/fake name = "witch hat" desc = "Strange-looking hat-wear, makes you want to cast fireballs." icon_state = "marisa" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + gas_transfer_coefficient = 1 + permeability_coefficient = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/suit/wizrobe/marisa/fake name = "witch robe" desc = "Magic is all about the spell power, ZE!" icon_state = "marisa" item_state = "marisarobe" - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - + gas_transfer_coefficient = 1 + permeability_coefficient = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 1b150e281ff..897fa1f2604 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -111,7 +111,7 @@ /obj/item/clothing/under/lawyer/bluesuit - name = "Blue Suit" + name = "blue suit" desc = "A classy suit and tie" icon_state = "bluesuit" item_state = "bluesuit" @@ -119,12 +119,19 @@ /obj/item/clothing/under/lawyer/purpsuit - name = "Purple Suit" + name = "purple suit" icon_state = "lawyer_purp" item_state = "lawyer_purp" item_color = "lawyer_purp" fitted = 0 +/obj/item/clothing/under/lawyer/blacksuit + name = "black suit" + desc = "A professional black suit. Nanotrasen Investigation Bureau approved!" + icon_state = "blacksuit" + item_state = "ba_suit" + item_color = "blacksuit" + /obj/item/clothing/under/librarian name = "sensible suit" desc = "It's very... sensible." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 642d7585a75..badfb26b91b 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -174,6 +174,41 @@ item_state = "r_suit" item_color = "red_suit" +/obj/item/clothing/under/suit_jacket/charcoal + name = "charcoal suit" + desc = "A charcoal suit and red tie. Very professional." + icon_state = "charcoal_suit" + item_state = "charcoal_suit" + item_color = "charcoal_suit" + +/obj/item/clothing/under/suit_jacket/navy + name = "navy suit" + desc = "A navy suit and red tie, intended for the station's finest." + icon_state = "navy_suit" + item_state = "navy_suit" + item_color = "navy_suit" + +/obj/item/clothing/under/suit_jacket/burgundy + name = "burgundy suit" + desc = "A burgundy suit and black tie. Somewhat formal." + icon_state = "burgundy_suit" + item_state = "burgundy_suit" + item_color = "burgundy_suit" + +/obj/item/clothing/under/suit_jacket/checkered + name = "checkered suit" + desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?" + icon_state = "checkered_suit" + item_state = "checkered_suit" + item_color = "checkered_suit" + +/obj/item/clothing/under/suit_jacket/tan + name = "tan suit" + desc = "A tan suit with a yellow tie. Smart, but casual." + icon_state = "tan_suit" + item_state = "tan_suit" + item_color = "tan_suit" + /obj/item/clothing/under/blackskirt name = "black skirt" desc = "A black skirt, very fancy!" @@ -253,4 +288,41 @@ item_state = "sundress" item_color = "sundress" body_parts_covered = CHEST|GROIN + fitted = 0 + +/obj/item/clothing/under/captainformal + name = "captain's formal uniform" + desc = "A captain's formal-wear, for special occasions." + icon_state = "captain_formal" + item_state = "by_suit" + item_color = "captain_formal" + +/obj/item/clothing/under/hosformalmale + name = "head of security's formal uniform" + desc = "A male head of security's formal-wear, for special occasions." + icon_state = "hos_formal_male" + item_state = "r_suit" + item_color = "hos_formal_male" + +/obj/item/clothing/under/hosformalfem + name = "head of security's formal uniform" + desc = "A female head of security's formal-wear, for special occasions." + icon_state = "hos_formal_fem" + item_state = "r_suit" + item_color = "hos_formal_fem" + fitted = 0 + +/obj/item/clothing/under/assistantformal + name = "assistant's formal uniform" + desc = "An assistant's formal-wear. Why an assistant needs formal-wear is still unknown." + icon_state = "assistant_formal" + item_state = "gy_suit" + item_color = "assistant_formal" + +/obj/item/clothing/under/blacktango + name = "black tango dress" + desc = "Filled with latin fire." + icon_state = "black_tango" + item_state = "wcoat" + item_color = "black_tango" fitted = 0 \ No newline at end of file diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 326f09c0c47..b1f1c924178 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -18,6 +18,11 @@ icon_state = "redtie" item_color = "redtie" +/obj/item/clothing/tie/black + name = "black tie" + icon_state = "blacktie" + item_color = "blacktie" + /obj/item/clothing/tie/horrible name = "horrible tie" desc = "A neosilk clip-on tie. This one is disgusting." diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index d583e8db2e1..c67f22314d4 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -50,14 +50,136 @@ icon_state = "sextractor" density = 1 anchored = 1 + var/piles = list() obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob) if(isrobot(user)) return + + if (istype(O,/obj/item/weapon/storage/bag/plants)) + var/obj/item/weapon/storage/P = O + var/loaded = 0 + for(var/obj/item/seeds/G in P.contents) + if(contents.len >= 999) + break + ++loaded + add(G) + if (loaded) + user << "You put the seeds from \the [O.name] into [src]." + else + user << "There are no seeds in \the [O.name]." + return + user.drop_item() if(O && O.loc) O.loc = src.loc + if(seedify(O,-1)) user << "You extract some seeds." + return + else if (istype(O,/obj/item/seeds)) + add(O) + user << "You add [O] to [src.name]." + updateUsrDialog() + return else - user << "You can't extract any seeds from \the [O.name]." \ No newline at end of file + user << "You can't extract any seeds from \the [O.name]." + +datum/seed_pile + var/name = "" + var/lifespan = 0 //Saved stats + var/endurance = 0 + var/maturation = 0 + var/production = 0 + var/yield = 0 + var/potency = 0 + var/amount = 0 + +datum/seed_pile/New(var/name, var/life, var/endur, var/matur, var/prod, var/yie, var/poten, var/am = 1) + src.name = name + src.lifespan = life + src.endurance = endur + src.maturation = matur + src.production = prod + src.yield = yie + src.potency = poten + src.amount = am + +/obj/machinery/seed_extractor/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +obj/machinery/seed_extractor/interact(mob/user as mob) + if (stat) + return 0 + + var/dat = "Stored seeds:
" + + if (contents.len == 0) + dat += "No seeds" + else + dat += "" + for (var/datum/seed_pile/O in piles) + dat += "" + dat += "" + dat += "
NameLifespanEnduranceMaturationProductionYieldPotencyStock
[O.name][O.lifespan][O.endurance][O.maturation][O.production][O.yield][O.potency]" + dat += "Vend ([O.amount] left)
" + var/datum/browser/popup = new(user, "seed_ext", name, 700, 400) + popup.set_content(dat) + popup.open() + return + +obj/machinery/seed_extractor/Topic(var/href, var/list/href_list) + if(..()) + return + usr.set_machine(src) + + href_list["li"] = text2num(href_list["li"]) + href_list["en"] = text2num(href_list["en"]) + href_list["ma"] = text2num(href_list["ma"]) + href_list["pr"] = text2num(href_list["pr"]) + href_list["yi"] = text2num(href_list["yi"]) + href_list["pot"] = text2num(href_list["pot"]) + + for (var/datum/seed_pile/N in piles)//Find the pile we need to reduce... + if (href_list["name"] == N.name && href_list["li"] == N.lifespan && href_list["en"] == N.endurance && href_list["ma"] == N.maturation && href_list["pr"] == N.production && href_list["yi"] == N.yield && href_list["pot"] == N.potency) + if(N.amount <= 0) + return + N.amount = max(N.amount - 1, 0) + if (N.amount <= 0) + piles -= N + del(N) + break + + for (var/obj/T in contents)//Now we find the seed we need to vend + var/obj/item/seeds/O = T + if (O.plantname == href_list["name"] && O.lifespan == href_list["li"] && O.endurance == href_list["en"] && O.maturation == href_list["ma"] && O.production == href_list["pr"] && O.yield == href_list["yi"] && O.potency == href_list["pot"]) + O.loc = src.loc + break + + src.updateUsrDialog() + return + +obj/machinery/seed_extractor/proc/add(var/obj/item/seeds/O as obj) + if(contents.len >= 999) + usr << "\The [src] is full." + return 0 + + if(istype(O.loc,/mob)) + var/mob/M = O.loc + if(!M.unEquip(O)) + usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]" + return + else if(istype(O.loc,/obj/item/weapon/storage)) + var/obj/item/weapon/storage/S = O.loc + S.remove_from_storage(O,src) + + O.loc = src + + for (var/datum/seed_pile/N in piles) + if (O.plantname == N.name && O.lifespan == N.lifespan && O.endurance == N.endurance && O.maturation == N.maturation && O.production == N.production && O.yield == N.yield && O.potency == N.potency) + ++N.amount + return + + piles += new /datum/seed_pile(O.plantname, O.lifespan, O.endurance, O.maturation, O.production, O.yield, O.potency) + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 2de3f3ef8d4..ddbaeafd8b7 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -11,6 +11,7 @@ gender = NEUTER dna = null faction = "alien" + ventcrawler = 2 var/storedPlasma = 250 var/max_plasma = 500 diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 524405ec1d5..bdbb5bbcad5 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -7,6 +7,7 @@ status_flags = CANPARALYSE heal_rate = 5 plasma_rate = 20 + ventcrawler = 0 //pull over that ass too fat /mob/living/carbon/alien/humanoid/queen/New() @@ -22,7 +23,6 @@ real_name = src.name verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin) - verbs -= /mob/living/carbon/alien/verb/ventcrawl ..() /mob/living/carbon/alien/humanoid/queen/handle_regular_hud_updates() @@ -85,4 +85,4 @@ else icon_state = "queen_s" for(var/image/I in overlays_standing) - overlays += I + overlays += I diff --git a/code/modules/mob/living/carbon/alien/powers.dm b/code/modules/mob/living/carbon/alien/powers.dm deleted file mode 100644 index d9452a8d799..00000000000 --- a/code/modules/mob/living/carbon/alien/powers.dm +++ /dev/null @@ -1,5 +0,0 @@ -/mob/living/carbon/alien/verb/ventcrawl() // -- TLE - set name = "Crawl through vent" - set desc = "Enter an air vent and crawl through the pipe system." - set category = "Alien" - handle_ventcrawl() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 12fc3b4a5f5..aed4c267123 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -228,99 +228,6 @@ // ++++ROCKDTBEN++++ MOB PROCS //END -/mob/living/carbon/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null) // -- TLE -- Merged by Carn - if(stat) - src << "You must be conscious to do this!" - return - if(lying) - src << "You can't vent crawl while you're stunned!" - return - - if(vent_found) // one was passed in, probably from vent/AltClick() - if(vent_found.welded) - src << "That vent is welded shut." - return - if(!vent_found.Adjacent(src)) - return // don't even acknowledge that - else - for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src)) - if(!v.welded) - if(v.Adjacent(src)) - vent_found = v - if(!vent_found) - src << "You'll need a non-welded vent to crawl into!" - return - - if(!vent_found.network || !vent_found.network.normal_members.len) - src << "This vent is not connected to anything." - return - - var/list/vents = list() - for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members) - if(temp_vent.welded) - continue - if(temp_vent in loc) - continue - var/turf/T = get_turf(temp_vent) - - if(!T || T.z != loc.z) - continue - - var/i = 1 - var/index = "[T.loc.name]\[[i]\]" - while(index in vents) - i++ - index = "[T.loc.name]\[[i]\]" - vents[index] = temp_vent - if(!vents.len) - src << "\red There are no available vents to travel to, they could be welded." - return - - var/obj/selection = input("Select a destination.", "Duct System") as null|anything in sortAssoc(vents) - if(!selection) return - - if(!vent_found.Adjacent(src)) - src << "Never mind, you left." - return - - for(var/obj/item/carried_item in contents)//If the monkey got on objects. - if( !istype(carried_item, /obj/item/weapon/implant) && !istype(carried_item, /obj/item/clothing/mask/facehugger) )//If it's not an implant or a facehugger - src << "\red You can't be carrying items or have items equipped when vent crawling!" - return - if(isslime(src)) - var/mob/living/carbon/slime/S = src - if(S.Victim) - src << "\red You'll have to let [S.Victim] go or finish eating \him first." - return - - var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection] - if(!target_vent) - return - - for(var/mob/O in viewers(src, null)) - O.show_message(text("[src] scrambles into the ventillation ducts!"), 1) - loc = target_vent - - var/travel_time = round(get_dist(loc, target_vent.loc) / 2) - - spawn(travel_time) - - if(!target_vent) return - for(var/mob/O in hearers(target_vent,null)) - O.show_message("You hear something squeezing through the ventilation ducts.",2) - - sleep(travel_time) - - if(!target_vent) return - if(target_vent.welded) //the vent can be welded while alien scrolled through the list or travelled. - target_vent = vent_found //travel back. No additional time required. - src << "\red The vent you were heading to appears to be welded." - loc = target_vent.loc - var/area/new_area = get_area(loc) - if(new_area) - new_area.Entered(src) - - /mob/living/carbon/clean_blood() if(ishuman(src)) var/mob/living/carbon/human/H = src diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 430ba3f23a5..0f7690a1a4d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -182,12 +182,12 @@ msg += "[t_He] [t_is] wearing \icon[wear_id] \a [wear_id].\n" //Jitters - if(is_jittery) - if(jitteriness >= 300) + switch(jitteriness) + if(300 to INFINITY) msg += "[t_He] [t_is] convulsing violently!\n" - else if(jitteriness >= 200) + if(200 to 300) msg += "[t_He] [t_is] extremely jittery.\n" - else if(jitteriness >= 100) + if(100 to 200) msg += "[t_He] [t_is] twitching ever so slightly.\n" if(suiciding) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d03a2c1e8a0..d5847142b99 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -119,6 +119,7 @@ else return ONE_ATMOSPHERE - pressure_difference + /mob/living/carbon/human proc/handle_disabilities() @@ -130,30 +131,23 @@ continue O.show_message(text("\red [src] starts having a seizure!"), 1) Paralyse(10) - make_jittery(1000) + Jitter(1000) if (disabilities & COUGHING) if ((prob(5) && paralysis <= 1)) drop_item() - spawn( 0 ) - emote("cough") - return + emote("cough") if (disabilities & TOURETTES) if ((prob(10) && paralysis <= 1)) Stun(10) - spawn( 0 ) - switch(rand(1, 3)) - if(1) - emote("twitch") - if(2 to 3) - say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") - var/old_x = pixel_x - var/old_y = pixel_y - pixel_x += rand(-2,2) - pixel_y += rand(-1,1) - sleep(2) - pixel_x = old_x - pixel_y = old_y - return + switch(rand(1, 3)) + if(1) + emote("twitch") + if(2 to 3) + say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") + var/x_offset = pixel_x + rand(-2,2) //Should probably be moved into the twitch emote at some point. + var/y_offset = pixel_y + rand(-1,1) + animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) + animate(pixel_x = pixel_x - x_offset, pixel_y = pixel_y - y_offset, time = 1) if (disabilities & NERVOUS) if (prob(10)) stuttering = max(10, stuttering) @@ -912,6 +906,50 @@ else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs ear_damage = max(ear_damage-0.05, 0) + //Dizziness + if(dizziness) + var/client/C = client + var/pixel_x_diff = 0 + var/pixel_y_diff = 0 + var/temp + var/saved_dizz = dizziness + dizziness = max(dizziness-1, 0) + if(C) + var/oldsrc = src + var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 // This shit is annoying at high strength + src = null + spawn(0) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) + if(C) + C.pixel_x -= pixel_x_diff + C.pixel_y -= pixel_y_diff + src = oldsrc + + //Jitteryness + if(jitteriness) + var/amplitude = min(4, (jitteriness/100) + 1) + var/pixel_x_diff = rand(-amplitude, amplitude) + var/pixel_y_diff = rand(-amplitude/3, amplitude/3) + + animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 2, loop = -1) + animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 2) + jitteriness = max(jitteriness-1, 0) + //Other if(stunned) AdjustStunned(-1) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 3fb28610f17..52233ec7b4f 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -5,6 +5,7 @@ pass_flags = PASSTABLE voice_message = "skree!" say_message = "hums" + ventcrawler = 2 var/is_adult = 0 layer = 5 diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index 6f186f0087c..ed7149cdd83 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -225,13 +225,4 @@ else src << "I am not ready to reproduce yet..." else - src << "I am not old enough to reproduce yet..." - - - -/mob/living/carbon/slime/verb/ventcrawl() - set name = "Crawl through Vent" - set desc = "Enter an air vent and crawl through the pipe system." - set category = "Slime" - if(Victim) return - handle_ventcrawl() \ No newline at end of file + src << "I am not old enough to reproduce yet..." \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 3a84a20eeb4..bdb2c232142 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -8,6 +8,7 @@ gender = NEUTER pass_flags = PASSTABLE update_icon = 0 ///no need to call regenerate_icon + ventcrawler = 1 /mob/living/carbon/monkey/New() create_reagents(1000) diff --git a/code/modules/mob/living/carbon/monkey/powers.dm b/code/modules/mob/living/carbon/monkey/powers.dm deleted file mode 100644 index e7c6937cda2..00000000000 --- a/code/modules/mob/living/carbon/monkey/powers.dm +++ /dev/null @@ -1,5 +0,0 @@ -/mob/living/carbon/monkey/verb/ventcrawl() - set name = "Crawl through Vent" - set desc = "Enter an air vent and crawl through the pipe system." - set category = "Monkey" - handle_ventcrawl() diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 9af8ddf1526..8168e11778a 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -35,3 +35,5 @@ var/on_fire = 0 //The "Are we on fire?" var var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20 + + var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index a033f81ac63..0df85076f4f 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -16,6 +16,7 @@ response_harm = "stomps" stop_automated_movement = 1 friendly = "pinches" + ventcrawler = 2 var/obj/item/inventory_head var/obj/item/inventory_mask diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index e997036477f..e56df2e9648 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -166,6 +166,7 @@ response_harm = "kicks" attacktext = "kicks" health = 1 + ventcrawler = 2 var/amount_grown = 0 pass_flags = PASSTABLE | PASSGRILLE @@ -206,6 +207,7 @@ var/global/chicken_count = 0 response_harm = "kicks" attacktext = "kicks" health = 10 + ventcrawler = 2 var/eggsleft = 0 var/body_color pass_flags = PASSTABLE diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index 48b5685e6dc..5cfb67fa0e3 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -13,4 +13,5 @@ melee_damage_upper = 2 response_help = "pets" response_disarm = "shoos" - response_harm = "stomps on" \ No newline at end of file + response_harm = "stomps on" + ventcrawler = 2 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index e1b266d7edf..6fd06c6a3cb 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -18,6 +18,7 @@ response_disarm = "gently pushes aside" response_harm = "splats" density = 0 + ventcrawler = 2 var/body_color //brown, gray and white, leave blank for random /mob/living/simple_animal/mouse/New() diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index b49c3e9eabc..de3b5e5a313 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -12,6 +12,7 @@ response_disarm = "shoos" response_harm = "stomps on" emote_see = list("jiggles", "bounces in place") + ventcrawler = 2 var/colour = "grey" /mob/living/simple_animal/slime/Bump(atom/movable/AM as mob|obj, yes) diff --git a/code/modules/mob/living/simple_animal/friendly/tomato.dm b/code/modules/mob/living/simple_animal/friendly/tomato.dm index 57c0f4c939b..30e675e5a8e 100644 --- a/code/modules/mob/living/simple_animal/friendly/tomato.dm +++ b/code/modules/mob/living/simple_animal/friendly/tomato.dm @@ -12,4 +12,5 @@ response_help = "prods" response_disarm = "pushes aside" response_harm = "smacks" - harm_intent_damage = 5 \ No newline at end of file + harm_intent_damage = 5 + ventcrawler = 2 diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index c4e1c38c32d..e0a39a8aa8d 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -34,6 +34,7 @@ var/busy = 0 pass_flags = PASSTABLE move_to_delay = 6 + ventcrawler = 2 //nursemaids - these create webs and eggs /mob/living/simple_animal/hostile/giant_spider/nurse diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 88770679633..42ee3d600f4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -22,6 +22,7 @@ stat_attack = 2 mouse_opacity = 1 speed = 1 + ventcrawler = 2 var/powerlevel = 0 //Tracks our general strength level gained from eating other shrooms var/bruised = 0 //If someone tries to cheat the system by attacking a shroom to lower its health, punish them so that it wont award levels to shrooms that eat it var/recovery_cooldown = 0 //So you can't repeatedly revive it during a fight diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index 5c575649e83..8e32e320b36 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -23,6 +23,7 @@ faction = "carp" attack_sound = 'sound/weapons/bite.ogg' environment_smash = 0 + ventcrawler = 2 //Space bats need no air to fly in. diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5c0584eeefc..590305bc8af 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -569,79 +569,6 @@ var/list/slot_equipment_priority = list( \ for(var/mob/M in viewers()) M.see(message) -/* -adds a dizziness amount to a mob -use this rather than directly changing var/dizziness -since this ensures that the dizzy_process proc is started -currently only humans get dizzy - -value of dizziness ranges from 0 to 1000 -below 100 is not dizzy -*/ -/mob/proc/make_dizzy(var/amount) - if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy - return - - dizziness = min(1000, dizziness + amount) // store what will be new value - // clamped to max 1000 - if(dizziness > 100 && !is_dizzy) - spawn(0) - dizzy_process() - - -/* -dizzy process - wiggles the client's pixel offset over time -spawned from make_dizzy(), will terminate automatically when dizziness gets <100 -note dizziness decrements automatically in the mob's Life() proc. -*/ -/mob/proc/dizzy_process() - is_dizzy = 1 - while(dizziness > 100) - if(client) - var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 - client.pixel_x = amplitude * sin(0.008 * dizziness * world.time) - client.pixel_y = amplitude * cos(0.008 * dizziness * world.time) - - sleep(1) - //endwhile - reset the pixel offsets to zero - is_dizzy = 0 - if(client) - client.pixel_x = 0 - client.pixel_y = 0 - -// jitteriness - copy+paste of dizziness - -/mob/proc/make_jittery(var/amount) - if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy - return - - jitteriness = min(1000, jitteriness + amount) // store what will be new value - // clamped to max 1000 - if(jitteriness > 100 && !is_jittery) - spawn(0) - jittery_process() - - -// Typo from the oriignal coder here, below lies the jitteriness process. So make of his code what you will, the previous comment here was just a copypaste of the above. -/mob/proc/jittery_process() - var/old_x = pixel_x - var/old_y = pixel_y - is_jittery = 1 - while(jitteriness > 100) -// var/amplitude = jitteriness*(sin(jitteriness * 0.044 * world.time) + 1) / 70 -// pixel_x = amplitude * sin(0.008 * jitteriness * world.time) -// pixel_y = amplitude * cos(0.008 * jitteriness * world.time) - - var/amplitude = min(4, jitteriness / 100) - pixel_x = rand(-amplitude, amplitude) - pixel_y = rand(-amplitude/3, amplitude/3) - - sleep(1) - //endwhile - reset the pixel offsets to zero - is_jittery = 0 - pixel_x = old_x - pixel_y = old_y - /mob/Stat() ..() @@ -768,6 +695,11 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check return 0 +/mob/proc/Jitter(amount) + jitteriness = max(jitteriness,amount,0) + +/mob/proc/Dizzy(amount) + dizziness = max(dizziness,amount,0) /mob/proc/Stun(amount) if(status_flags & CANSTUN) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index eb2c904c047..1a6896915c9 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -74,8 +74,6 @@ var/bodytemperature = 310.055 //98.7 F var/drowsyness = 0//Carbon var/dizziness = 0//Carbon - var/is_dizzy = 0 - var/is_jittery = 0 var/jitteriness = 0//Carbon var/nutrition = 400//Carbon @@ -167,4 +165,4 @@ var/robot_talk_understand = 0 var/alien_talk_understand = 0 - var/turf/listed_turf = null //the current turf being examined in the stat panel + var/turf/listed_turf = null //the current turf being examined in the stat panel diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 4e18c895f15..154474e3c85 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -266,7 +266,7 @@ datum if(data >= 30) if (!M.stuttering) M.stuttering = 1 M.stuttering += 4 - M.make_dizzy(5) + M.Dizzy(5) if(data >= 30*2.5 && prob(33)) if (!M.confused) M.confused = 1 M.confused += 3 @@ -825,7 +825,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M.make_dizzy(1) + M.Dizzy(1) if(!M.confused) M.confused = 1 M.confused = max(M.confused, 20) holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) @@ -1151,8 +1151,8 @@ datum M.status_flags &= ~DISFIGURED if(35 to INFINITY) M.adjustToxLoss(1) - M.make_dizzy(5) - M.make_jittery(5) + M.Dizzy(5) + M.Jitter(5) ..() return @@ -1995,18 +1995,18 @@ datum switch(data) if(1 to 5) if (!M.stuttering) M.stuttering = 1 - M.make_dizzy(5) + M.Dizzy(5) if(prob(10)) M.emote(pick("twitch","giggle")) if(5 to 10) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(10) - M.make_dizzy(10) + M.Jitter(10) + M.Dizzy(10) M.druggy = max(M.druggy, 35) if(prob(20)) M.emote(pick("twitch","giggle")) if (10 to INFINITY) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(20) - M.make_dizzy(20) + M.Jitter(20) + M.Dizzy(20) M.druggy = max(M.druggy, 40) if(prob(30)) M.emote(pick("twitch","giggle")) holder.remove_reagent(src.id, 0.2) @@ -2394,7 +2394,7 @@ datum M.sleeping = max(0,M.sleeping - 2) if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) if(holder.has_reagent("frostoil")) holder.remove_reagent("frostoil", 5) ..() @@ -2434,7 +2434,7 @@ datum M.sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) ..() return @@ -2479,7 +2479,7 @@ datum color = "#100800" // rgb: 16, 8, 0 on_mob_life(var/mob/living/M as mob) - M.make_jittery(20) + M.Jitter(20) M.druggy = max(M.druggy, 30) M.dizziness +=5 M.drowsyness = 0 @@ -2502,7 +2502,7 @@ datum M.sleeping = max(0,M.sleeping-1) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) M.nutrition += 1 ..() return @@ -2608,7 +2608,7 @@ datum M.sleeping = 0 if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) M.nutrition++ ..() @@ -2628,7 +2628,7 @@ datum M.sleeping = 0 if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) M.nutrition++ ..() @@ -2664,7 +2664,7 @@ datum on_mob_life(var/mob/living/M as mob) M.druggy = max(M.druggy, 50) M.confused = max(M.confused+2,0) - M.make_dizzy(10) + M.Dizzy(10) if (!M.stuttering) M.stuttering = 1 M.stuttering += 3 if(!data) data = 1 @@ -2741,24 +2741,24 @@ datum switch(data) if(1 to 5) if (!M.stuttering) M.stuttering = 1 - M.make_dizzy(10) + M.Dizzy(10) if(prob(10)) M.emote(pick("twitch","giggle")) if(5 to 10) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(20) - M.make_dizzy(20) + M.Jitter(20) + M.Dizzy(20) M.druggy = max(M.druggy, 45) if(prob(20)) M.emote(pick("twitch","giggle")) if (10 to 200) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(40) - M.make_dizzy(40) + M.Jitter(40) + M.Dizzy(40) M.druggy = max(M.druggy, 60) if(prob(30)) M.emote(pick("twitch","giggle")) if(200 to INFINITY) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(60) - M.make_dizzy(60) + M.Jitter(60) + M.Dizzy(60) M.druggy = max(M.druggy, 75) if(prob(40)) M.emote(pick("twitch","giggle")) if(prob(30)) M.adjustToxLoss(2) @@ -2789,7 +2789,7 @@ datum if(data >= boozepwr) if (!M.stuttering) M.stuttering = 1 M.stuttering += 4 - M.make_dizzy(5) + M.Dizzy(5) if(data >= boozepwr*2.5 && prob(33)) if (!M.confused) M.confused = 1 M.confused += 3 @@ -2841,7 +2841,7 @@ datum M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.sleeping = max(0,M.sleeping-2) - M.make_jittery(5) + M.Jitter(5) ..() return @@ -2864,7 +2864,7 @@ datum M.sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) M.nutrition += 1 ..() return diff --git a/html/changelog.html b/html/changelog.html index 094a498c348..2bbfb2731c2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,25 +52,115 @@ should be listed in the changelog upon commit tho. Thanks. --> - - -
-

17 February 2014

-

Ergovisavi updated:

- -
- + + +
+

3 maart 2014

+

Miauw updated:

+ +
+ +
+

3 March 2014

+

Incoming5643 updated:

+ +

Miauw updated:

+ +

Drovidi Corv updated:

+ +

TZK13 updated:

+ +

ChuckTheSheep updated:

+ +
+ +
+

26 February 2014

+

Incoming5643 updated:

+ +
+ +
+

25 February 2014

+

Incoming5643 updated:

+ +
+ +
+

24 February 2014

+

Miauw updated:

+ +

Incoming5643 updated:

+ +

Ergovisavi updated:

+ +

HornyGranny updated:

+ +

Giacom updated:

+ +

Razharas updated:

+ +
+ +
+

19 February 2014

+

Perakp updated:

+ +

Aranclanos updated:

+ +
+

17 February 2014

+

Ergovisavi updated:

+

Fleure updated:

-
-

9 February 2014

-

Demas updated:

- -
+
+

9 February 2014

+

Demas updated:

+ +
- -
-

8 February 2014

-

Razharas updated:

- -
- -
-

8 February 2014

-

MrPerson updated:

- -
+ +
+

8 February 2014

+

Razharas updated:

+ +
+ +
+

8 February 2014

+

MrPerson updated:

+ +
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi index 247a9148863..6576436d5fa 100644 Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi index 9045a89b745..8abb1d5a214 100644 Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 9a805ab162f..c1e68ca3ec0 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi index acfb656c318..c0d073039bb 100644 Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 63241a21829..bb4c740aef6 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 6c14e3f929d..224ad0f413c 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi index c857e0d39d4..a424ea49f5e 100644 Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index e8aba5cf9e3..77eb778af60 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 50e8e5b0a6c..1e3090a1c63 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/tgstation.dme b/tgstation.dme index ac83c403228..59dc085ef39 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6,6 +6,48 @@ // BEGIN_FILE_DIR #define FILE_DIR . +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" +#define FILE_DIR "tools" +#define FILE_DIR "tools/AddToChangelog" +#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES @@ -893,7 +935,6 @@ #include "code\modules\mob\living\carbon\alien\death.dm" #include "code\modules\mob\living\carbon\alien\login.dm" #include "code\modules\mob\living\carbon\alien\logout.dm" -#include "code\modules\mob\living\carbon\alien\powers.dm" #include "code\modules\mob\living\carbon\alien\say.dm" #include "code\modules\mob\living\carbon\alien\screen.dm" #include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" @@ -960,7 +1001,6 @@ #include "code\modules\mob\living\carbon\monkey\life.dm" #include "code\modules\mob\living\carbon\monkey\login.dm" #include "code\modules\mob\living\carbon\monkey\monkey.dm" -#include "code\modules\mob\living\carbon\monkey\powers.dm" #include "code\modules\mob\living\carbon\monkey\say.dm" #include "code\modules\mob\living\carbon\monkey\update_icons.dm" #include "code\modules\mob\living\silicon\death.dm"