Conflict fix
@@ -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 << "<span class='warning'> There are no available vents to travel to, they could be welded. </span>"
|
||||
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 << "<span class='warning'> You can't be carrying items or have items equipped when vent crawling!</span>"
|
||||
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("<B>[L] scrambles into the ventillation ducts!</B>"), 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 << "<span class='warning'> The vent you were heading to appears to be welded.</span>"
|
||||
L.loc = target_vent.loc
|
||||
var/area/new_area = get_area(loc)
|
||||
if(new_area)
|
||||
new_area.Entered(L)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -33,5 +33,5 @@ Bonus
|
||||
M << "<span class='notice'>[pick("You feel dizzy.", "Your head starts spinning.")]</span>"
|
||||
else
|
||||
M << "<span class='notice'>You are unable to look straight!</span>"
|
||||
M.make_dizzy(5)
|
||||
M.Dizzy(5)
|
||||
return
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 << "<span class='warning'>The bulb has burnt out!</span>"
|
||||
|
||||
@@ -112,7 +114,7 @@
|
||||
del(animation)
|
||||
|
||||
if(!flashfail)
|
||||
flick("flash2", src)
|
||||
flick(flashanim, src)
|
||||
if(!issilicon(M))
|
||||
|
||||
user.visible_message("<span class='disarm'>[user] blinds [M] with the flash!</span>")
|
||||
@@ -201,4 +203,12 @@
|
||||
/obj/item/device/flash/synthetic/attack_self(mob/living/carbon/user, flag = 0, emp = 0)
|
||||
..()
|
||||
if(!broken)
|
||||
burn_out(user)
|
||||
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"
|
||||
|
||||
@@ -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 <B>BANG</B>"
|
||||
/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
|
||||
M << "<span class='warning'>BANG</span>"
|
||||
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 << "<span class='warning'>Your eyes start to burn badly!</span>"
|
||||
M.disabilities |= NEARSIGHTED
|
||||
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
||||
if (prob(M.eye_stat - 20 + 1))
|
||||
M << "<span class='warning'>You can't see anything!</span>"
|
||||
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 << "<span class='warning'>Your ears start to ring badly!</span>"
|
||||
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
|
||||
if (prob(M.ear_damage - 10 + 5))
|
||||
M << "<span class='warning'>You can't hear anything!</span>"
|
||||
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 << "<span class='warning'>Your ears start to ring!</span>"
|
||||
|
||||
/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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
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)
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -96,4 +96,12 @@
|
||||
src.chained = 1
|
||||
src.slowdown = 15
|
||||
src.icon_state = "orange1"
|
||||
return
|
||||
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 << "<span class='notice'>You need help taking these off!</span>"
|
||||
return
|
||||
..()
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
@@ -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."
|
||||
|
||||
@@ -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 << "<span class='notice'>You put the seeds from \the [O.name] into [src].</span>"
|
||||
else
|
||||
user << "<span class='notice'>There are no seeds in \the [O.name].</span>"
|
||||
return
|
||||
|
||||
user.drop_item()
|
||||
if(O && O.loc)
|
||||
O.loc = src.loc
|
||||
|
||||
if(seedify(O,-1))
|
||||
user << "<span class='notice'>You extract some seeds.</span>"
|
||||
return
|
||||
else if (istype(O,/obj/item/seeds))
|
||||
add(O)
|
||||
user << "<span class='notice'>You add [O] to [src.name].</span>"
|
||||
updateUsrDialog()
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You can't extract any seeds from \the [O.name].</span>"
|
||||
user << "<span class='notice'>You can't extract any seeds from \the [O.name].</span>"
|
||||
|
||||
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 = "<b>Stored seeds:</b><br>"
|
||||
|
||||
if (contents.len == 0)
|
||||
dat += "<font color='red'>No seeds</font>"
|
||||
else
|
||||
dat += "<table cellpadding='3' style='text-align:center;'><tr><td>Name</td><td>Lifespan</td><td>Endurance</td><td>Maturation</td><td>Production</td><td>Yield</td><td>Potency</td><td>Stock</td></tr>"
|
||||
for (var/datum/seed_pile/O in piles)
|
||||
dat += "<tr><td>[O.name]</td><td>[O.lifespan]</td><td>[O.endurance]</td><td>[O.maturation]</td>"
|
||||
dat += "<td>[O.production]</td><td>[O.yield]</td><td>[O.potency]</td><td>"
|
||||
dat += "<a href='byond://?src=\ref[src];name=[O.name];li=[O.lifespan];en=[O.endurance];ma=[O.maturation];pr=[O.production];yi=[O.yield];pot=[O.potency]'>Vend</a> ([O.amount] left)</td></tr>"
|
||||
dat += "</table>"
|
||||
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 << "<span class='notice'>\The [src] is full.</span>"
|
||||
return 0
|
||||
|
||||
if(istype(O.loc,/mob))
|
||||
var/mob/M = O.loc
|
||||
if(!M.unEquip(O))
|
||||
usr << "<span class='notice'>\the [O] is stuck to your hand, you cannot put it in \the [src]</span>"
|
||||
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
|
||||
@@ -11,6 +11,7 @@
|
||||
gender = NEUTER
|
||||
dna = null
|
||||
faction = "alien"
|
||||
ventcrawler = 2
|
||||
|
||||
var/storedPlasma = 250
|
||||
var/max_plasma = 500
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
@@ -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("<B>[src] scrambles into the ventillation ducts!</B>"), 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
|
||||
|
||||
@@ -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 += "<span class='warning'><B>[t_He] [t_is] convulsing violently!</B></span>\n"
|
||||
else if(jitteriness >= 200)
|
||||
if(200 to 300)
|
||||
msg += "<span class='warning'>[t_He] [t_is] extremely jittery.</span>\n"
|
||||
else if(jitteriness >= 100)
|
||||
if(100 to 200)
|
||||
msg += "<span class='warning'>[t_He] [t_is] twitching ever so slightly.</span>\n"
|
||||
|
||||
if(suiciding)
|
||||
|
||||
@@ -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 <B>[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)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
pass_flags = PASSTABLE
|
||||
voice_message = "skree!"
|
||||
say_message = "hums"
|
||||
ventcrawler = 2
|
||||
var/is_adult = 0
|
||||
|
||||
layer = 5
|
||||
|
||||
@@ -225,13 +225,4 @@
|
||||
else
|
||||
src << "<i>I am not ready to reproduce yet...</i>"
|
||||
else
|
||||
src << "<i>I am not old enough to reproduce yet...</i>"
|
||||
|
||||
|
||||
|
||||
/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()
|
||||
src << "<i>I am not old enough to reproduce yet...</i>"
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -13,4 +13,5 @@
|
||||
melee_damage_upper = 2
|
||||
response_help = "pets"
|
||||
response_disarm = "shoos"
|
||||
response_harm = "stomps on"
|
||||
response_harm = "stomps on"
|
||||
ventcrawler = 2
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -12,4 +12,5 @@
|
||||
response_help = "prods"
|
||||
response_disarm = "pushes aside"
|
||||
response_harm = "smacks"
|
||||
harm_intent_damage = 5
|
||||
harm_intent_damage = 5
|
||||
ventcrawler = 2
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -52,25 +52,115 @@ should be listed in the changelog upon commit tho. Thanks. -->
|
||||
|
||||
<!-- You can simply add changelogs using AddToChangelog.exe -->
|
||||
|
||||
<!-- DO NOT REMOVE OR MOVE THIS COMMENT! THIS MUST BE THE LAST NON-EMPTY LINE BEFORE THE LOGS #ADDTOCHANGELOGMARKER# -->
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>17 February 2014</h2>
|
||||
<h3 class='author'>Ergovisavi updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Mining has been significantly overhauled. Hostile alien life has infested the western asteroid! Miners are given an equipment voucher to obtain equipment to protect themselves. There is a spare voucher in the HoP's office, should someone want to switch to mining mid-shift.</li>
|
||||
<li class='rscadd'>The Ore Redemption Machine has been added just outside of the Science wing. Ore goes in, Sheets go out, and points are tallied on the machine. Insert your ID to claim points, then spend them on goods at Mining Equipment Lockers. You require specific accesses to tell the Ore Redemption Machine to unload its sheets.</li>
|
||||
<li class='rscadd'>Should you not care for being eaten alive by horrible alien life, it is suggested you stick to the eastern asteroid, where there is no hostile alien life... though the yield on ore is not as good.</li>
|
||||
<li class='rscadd'>Most ore is no longer visible to the naked eye. You must ping it with a Mining Scanner (Available in all mining lockers) to locate nearby ore. Make sure to equip your mesons first, or it won't be visible.</li>
|
||||
<li class='tweak'>Mesons no longer remove the darkness overlay, you must properly light your environment. Hull breaches to space can still be clearly seen, and it will still protect you from the singulo.</li>
|
||||
<li class='tweak'>Mineral spawn rates have been significantly tweaked to cut down on unnecessary inflation of mineral economy.</li>
|
||||
<li class='tweak'>The asteroid no longer has ambient power on the entire asteroid. AI's who go onto asteroid turf will slowly die of power loss. Mining outposts are unaffected.</li>
|
||||
<li class ='bugfix'>Fixed an issue where projectiles shot by simple mobs or thrown would hit multiple times.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- DO NOT REMOVE OR MOVE THIS COMMENT! THIS MUST BE THE LAST NON-EMPTY LINE BEFORE THE LOGS #ADDTOCHANGELOGMARKER# -->
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>3 maart 2014</h2>
|
||||
<h3 class='author'>Miauw updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Changelings have a new power, Dissonant Shriek. This power causes an EMP in the surrounding area.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>3 March 2014</h2>
|
||||
<h3 class='author'>Incoming5643 updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='tweak'>Improved blob spores to zombify people adjacent to their tile. </li>
|
||||
<li class='bugfix'>If a hand-teleporter is activated while you're stuck inside a wall, you'll automatically go through it. </li>
|
||||
</ul>
|
||||
<h3 class='author'>Miauw updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='tweak'>Decreased the lethality of Mutagen in small doses. </li>
|
||||
</ul>
|
||||
<h3 class='author'>Drovidi Corv updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='bugfix'>Facehuggers no longer die to zero-force weapons or projectiles like lasertag beams. </li>
|
||||
</ul>
|
||||
<h3 class='author'>TZK13 updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Added Incendiary Shotgun Shells made at a hacked autolathe; Xenos be wary. </li>
|
||||
</ul>
|
||||
<h3 class='author'>ChuckTheSheep updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Round-end report now shows what items were bought with a traitor's or nuke-op's uplink and how many TCs they used.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>26 February 2014</h2>
|
||||
<h3 class='author'>Incoming5643 updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Color blending Kitty Ears have returned. </li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>25 February 2014</h2>
|
||||
<h3 class='author'>Incoming5643 updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Colored burgers! Include a crayon in your microwave when cooking a burger and it'll come out just like a Pretty Pattie. </li>
|
||||
<li class='bugfix'>Fixed AI's being able to interact with syndicate bombs. </li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>24 February 2014</h2>
|
||||
<h3 class='author'>Miauw updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='bugfix'>No more removing cursed horseheads. </li>
|
||||
</ul>
|
||||
<h3 class='author'>Incoming5643 updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='tweak'>Improved the Syndicate Implant bundle to contain freedom, uplink, EMP, adrenalin and explosive implanters. </li>
|
||||
<li class='tweak'>Added Mineral Storeroom to R&D containing the Ore Redemption Machine; no more assistants stealing your ore in the open hallway. </li>
|
||||
</ul>
|
||||
<h3 class='author'>Ergovisavi updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Added Advanced Mesons and Night Vision Goggles to the protolathe. </li>
|
||||
</ul>
|
||||
<h3 class='author'>HornyGranny updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='sounddel'>Reduced the range of Violin notes. </li>
|
||||
<li class='soundadd'>Low quality violin midi-notes replaced with better .ogg-notes. </li>
|
||||
</ul>
|
||||
<h3 class='author'>Giacom updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='bugfix'>Silicons no longer stop statues from moving when in sight. </li>
|
||||
<li class='wip'>Increased the health of statues. </li>
|
||||
<li class='wip'>Increased the range of statues's blinding spell. </li>
|
||||
</ul>
|
||||
<h3 class='author'>Razharas updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='bugfix'>Fixed infinite telecrystal exploit. </li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>19 February 2014</h2>
|
||||
<h3 class='author'>Perakp updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='imageadd'>Added Iatot's cyborg module selection transformation animations. </li>
|
||||
</ul>
|
||||
<h3 class='author'>Aranclanos updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='bugfix'>Removed the chance of your hat falling off when slipping. </li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>17 February 2014</h2>
|
||||
<h3 class='author'>Ergovisavi updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Mining has been significantly overhauled. Hostile alien life has infested the western asteroid! Miners are given an equipment voucher to obtain equipment to protect themselves. There is a spare voucher in the HoP's office, should someone want to switch to mining mid-shift.</li>
|
||||
<li class='rscadd'>The Ore Redemption Machine has been added just outside of the Science wing. Ore goes in, Sheets go out, and points are tallied on the machine. Insert your ID to claim points, then spend them on goods at Mining Equipment Lockers. You require specific accesses to tell the Ore Redemption Machine to unload its sheets.</li>
|
||||
<li class='rscadd'>Should you not care for being eaten alive by horrible alien life, it is suggested you stick to the eastern asteroid, where there is no hostile alien life... though the yield on ore is not as good.</li>
|
||||
<li class='rscadd'>Most ore is no longer visible to the naked eye. You must ping it with a Mining Scanner (Available in all mining lockers) to locate nearby ore. Make sure to equip your mesons first, or it won't be visible.</li>
|
||||
<li class='tweak'>Mesons no longer remove the darkness overlay, you must properly light your environment. Hull breaches to space can still be clearly seen, and it will still protect you from the singulo.</li>
|
||||
<li class='tweak'>Mineral spawn rates have been significantly tweaked to cut down on unnecessary inflation of mineral economy.</li>
|
||||
<li class='tweak'>The asteroid no longer has ambient power on the entire asteroid. AI's who go onto asteroid turf will slowly die of power loss. Mining outposts are unaffected.</li>
|
||||
<li class ='bugfix'>Fixed an issue where projectiles shot by simple mobs or thrown would hit multiple times.</li>
|
||||
</ul>
|
||||
<h3 class='author'>Fleure updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='tweak'>Reduced chicken crates to contain 1-3 chicks, down from 3-6</li>
|
||||
@@ -113,57 +203,57 @@ should be listed in the changelog upon commit tho. Thanks. -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>9 February 2014</h2>
|
||||
<h3 class='author'>Demas updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Banana peel size is based on banana size. </li>
|
||||
<li class='rscadd'>Bigger peels slip for longer than smaller ones. Remember that produce size is based on potency.</li>
|
||||
<li class='tweak'>The clown now spawns with a decent sized banana.</li>
|
||||
<li class='tweak'>The banana mortar now shoots 65 potency peels.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>9 February 2014</h2>
|
||||
<h3 class='author'>Demas updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Banana peel size is based on banana size. </li>
|
||||
<li class='rscadd'>Bigger peels slip for longer than smaller ones. Remember that produce size is based on potency.</li>
|
||||
<li class='tweak'>The clown now spawns with a decent sized banana.</li>
|
||||
<li class='tweak'>The banana mortar now shoots 65 potency peels.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>8 February 2014</h2>
|
||||
<h3 class='author'>Razharas updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Adds more constructible and deconstructable machines!</li>
|
||||
<li class='rscadd'>Added constructible miniature chemical dispensers, upgradable</li>
|
||||
<li class='rscadd'>Sleepers are now constructible and upgradable, open and close like DNA scanners, and don't require a console</li>
|
||||
<li class='rscadd'>Cryogenic tubes are now constructible and upgradable, open and close like DNA scanners, and you can set the cryogenic tube's pipe's direction by opening its panel and wrenching it to connect it to piping</li>
|
||||
<li class='rscadd'>Telescience pads are now constructible and upgradable</li>
|
||||
<li class='rscadd'>Telescience consoles are now constructible</li>
|
||||
<li class='rscadd'>Telescience tweaked (you can save data on GPS units now)</li>
|
||||
<li class='rscadd'>Teleporters are now constructible and upgradable, the console has a new interface and you can lock onto places saved to GPS units in telescience</li>
|
||||
<li class='tweak'>Teleporters start unconnected. You need to manually reconnect the console, station and hub by opening the panel of the station and applying wire cutters to it.</li>
|
||||
<li class='rscadd'>Biogenerators are now constructible and upgradable</li>
|
||||
<li class='rscadd'>Atmospherics heaters and freezers are now constructible and upgradable and can be rotated with a wrench when their panel is open to connect them to pipes. Screw the board to switch between heater and freezer.</li>
|
||||
<li class='rscadd'>Mech chargers are now constructible and upgradable</li>
|
||||
<li class='rscadd'>Microwaves are now constructible and upgradable</li>
|
||||
<li class='rscadd'>All kitchen machinery can now be wrenched free</li>
|
||||
<li class='rscadd'>SMES are now constructible</li>
|
||||
<li class='rscadd'>Dragging a human's sprite to a cryogenic tube or sleeper will put them inside and activate it if it's cryo</li>
|
||||
<li class='rscadd'>Constructible newscasters, their frames are made with autolathes</li>
|
||||
<li class='rscadd'>Constructible pandemics</li>
|
||||
<li class='rscadd'>Constructible power turbines and their computers</li>
|
||||
<li class='rscadd'>Constructible power compressors</li>
|
||||
<li class='rscadd'>Constructible vending machines. Screw the board to switch vendor type.</li>
|
||||
<li class='rscadd'>Constructible hydroponics trays</li>
|
||||
<li class='imageadd'>Sprites for all this</li>
|
||||
<li class='wip'>This update will have unforeseen bugs, please report those you find at https://github.com/tgstation/-tg-station/issues/new if you want them fixed.</li>
|
||||
<li class='rscadd'>As usual, machines are deconstructed by screwing open their panels and crowbarring them. While constructing machines, examining them will tell you what parts you're missing.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>8 February 2014</h2>
|
||||
<h3 class='author'>MrPerson updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Added a NanoUI for the SMES</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>8 February 2014</h2>
|
||||
<h3 class='author'>Razharas updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Adds more constructible and deconstructable machines!</li>
|
||||
<li class='rscadd'>Added constructible miniature chemical dispensers, upgradable</li>
|
||||
<li class='rscadd'>Sleepers are now constructible and upgradable, open and close like DNA scanners, and don't require a console</li>
|
||||
<li class='rscadd'>Cryogenic tubes are now constructible and upgradable, open and close like DNA scanners, and you can set the cryogenic tube's pipe's direction by opening its panel and wrenching it to connect it to piping</li>
|
||||
<li class='rscadd'>Telescience pads are now constructible and upgradable</li>
|
||||
<li class='rscadd'>Telescience consoles are now constructible</li>
|
||||
<li class='rscadd'>Telescience tweaked (you can save data on GPS units now)</li>
|
||||
<li class='rscadd'>Teleporters are now constructible and upgradable, the console has a new interface and you can lock onto places saved to GPS units in telescience</li>
|
||||
<li class='tweak'>Teleporters start unconnected. You need to manually reconnect the console, station and hub by opening the panel of the station and applying wire cutters to it.</li>
|
||||
<li class='rscadd'>Biogenerators are now constructible and upgradable</li>
|
||||
<li class='rscadd'>Atmospherics heaters and freezers are now constructible and upgradable and can be rotated with a wrench when their panel is open to connect them to pipes. Screw the board to switch between heater and freezer.</li>
|
||||
<li class='rscadd'>Mech chargers are now constructible and upgradable</li>
|
||||
<li class='rscadd'>Microwaves are now constructible and upgradable</li>
|
||||
<li class='rscadd'>All kitchen machinery can now be wrenched free</li>
|
||||
<li class='rscadd'>SMES are now constructible</li>
|
||||
<li class='rscadd'>Dragging a human's sprite to a cryogenic tube or sleeper will put them inside and activate it if it's cryo</li>
|
||||
<li class='rscadd'>Constructible newscasters, their frames are made with autolathes</li>
|
||||
<li class='rscadd'>Constructible pandemics</li>
|
||||
<li class='rscadd'>Constructible power turbines and their computers</li>
|
||||
<li class='rscadd'>Constructible power compressors</li>
|
||||
<li class='rscadd'>Constructible vending machines. Screw the board to switch vendor type.</li>
|
||||
<li class='rscadd'>Constructible hydroponics trays</li>
|
||||
<li class='imageadd'>Sprites for all this</li>
|
||||
<li class='wip'>This update will have unforeseen bugs, please report those you find at https://github.com/tgstation/-tg-station/issues/new if you want them fixed.</li>
|
||||
<li class='rscadd'>As usual, machines are deconstructed by screwing open their panels and crowbarring them. While constructing machines, examining them will tell you what parts you're missing.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>8 February 2014</h2>
|
||||
<h3 class='author'>MrPerson updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='rscadd'>Added a NanoUI for the SMES</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class='commit sansserif'>
|
||||
|
||||
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 23 KiB |
@@ -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"
|
||||
|
||||