mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge branch 'bleeding-edge-freeze' of https://github.com/Baystation12/Baystation12 into bs12_with_tgport
Conflicts: baystation12.dme code/defines/procs/global_lists.dm code/game/gamemodes/events.dm code/game/gamemodes/events/space_ninja.dm code/game/mecha/working/ripley.dm code/modules/mob/living/carbon/human/human_attackalien.dm code/modules/mob/living/carbon/human/life.dm code/modules/mob/new_player/preferences.dm icons/mob/items_lefthand.dmi icons/mob/items_righthand.dmi icons/mob/mask.dmi Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
var/be_alien = 0 //Check if that guy wants to be an alien
|
||||
var/be_pai = 1 //Consider client when searching for players to recruit as a pAI
|
||||
var/be_syndicate = 1 //Consider client for late-game autotraitor
|
||||
var/be_spaceninja = 0
|
||||
var/activeslot = 1 //Default active slot!
|
||||
var/STFU_ghosts //80+ people rounds are fun to admin when text flies faster than airport security
|
||||
var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "capspace"
|
||||
item_state = "capspacehelmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads."
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
flags_inv = HIDEFACE
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
@@ -18,11 +18,11 @@
|
||||
w_class = 4
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
flags = FPRINT | TABLEPASS
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
slowdown = 1.5
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
hi
|
||||
// Add custom items you give to people here, and put their icons in custom_items.dmi
|
||||
// Remember to change 'icon = 'custom_items.dmi'' for items not using /obj/item/fluff as a base
|
||||
// Clothing item_state doesn't use custom_items.dmi. Just add them to the normal clothing files.
|
||||
@@ -66,10 +67,20 @@
|
||||
desc = "A neatly folded handkerchief embroidered with a 'M'."
|
||||
icon_state = "maurice_bedford_1"
|
||||
|
||||
/obj/item/weapon/book/fluff/johnathan_falcian_1
|
||||
name = "sketchbook"
|
||||
desc = "A small, well-used sketchbook."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "johnathan_notebook"
|
||||
dat = "In the notebook there are numerous drawings of various crew-mates, locations, and scenes on the ship. They are of fairly good quality."
|
||||
author = "Johnathan Falcian"
|
||||
title = "Falcian's sketchbook"
|
||||
|
||||
//////////////////////////////////
|
||||
////////// Usable Items //////////
|
||||
//////////////////////////////////
|
||||
|
||||
|
||||
/obj/item/weapon/pen/fluff/multi //spaceman96: Trenna Seber
|
||||
name = "multicolor pen"
|
||||
desc = "It's a cool looking pen. Lots of colors!"
|
||||
@@ -330,10 +341,17 @@
|
||||
/obj/item/weapon/crowbar/fluff/zelda_creedy_1 //daaneesh: Zelda Creedy
|
||||
name = "Zelda's Crowbar"
|
||||
desc = "A pink crow bar that has an engraving that reads, 'To Zelda. Love always, Dawn'"
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "zeldacrowbar"
|
||||
item_state = "crowbar"
|
||||
|
||||
////// Ripley customisation kit - Butchery Royce - MayeDay
|
||||
|
||||
/obj/item/weapon/fluff/butcher_royce_1
|
||||
name = "Ripley customisation kit"
|
||||
desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into a Titan's Fist worker mech."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "royce_kit"
|
||||
|
||||
//////////////////////////////////
|
||||
//////////// Clothing ////////////
|
||||
@@ -384,6 +402,19 @@
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "ian_colm_1"
|
||||
|
||||
////// Medical eyepatch - Thysse Ezinwa - Jadepython
|
||||
/obj/item/clothing/glasses/eyepatch/fluff/thysse_1
|
||||
name = "medical eyepatch"
|
||||
desc = "On the strap, EZINWA is written in white block letters."
|
||||
|
||||
////// Safety Goggles - Arjun Chopra - MindPhyre - APPROVED
|
||||
/obj/item/clothing/glasses/fluff/arjun_chopra_1
|
||||
name = "safety goggles"
|
||||
desc = "A used pair of leather safety goggles."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "arjun_chopra"
|
||||
item_state = "arjun_chopra"
|
||||
|
||||
//////////// Hats ////////////
|
||||
|
||||
/obj/item/clothing/head/secsoft/fluff/swatcap //deusdactyl: James Girard
|
||||
@@ -500,6 +531,50 @@
|
||||
item_state = "ara_bar_uniform"
|
||||
color = "ara_bar_uniform"
|
||||
|
||||
/////// NT-SID Suit //Zuhayr: Jane Doe
|
||||
|
||||
/obj/item/clothing/under/fluff/jane_sidsuit
|
||||
name = "NT-SID jumpsuit"
|
||||
desc = "A NanoTrasen Synthetic Intelligence Division jumpsuit, issued to 'volunteers'. On other people it looks fine, but right here a scientist has noted: on you it looks stupid."
|
||||
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "jane_sid_suit"
|
||||
item_state = "jane_sid_suit"
|
||||
color = "jane_sid_suit"
|
||||
has_sensor = 2
|
||||
sensor_mode = 3
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
//Suit roll-down toggle.
|
||||
/obj/item/clothing/under/fluff/jane_sidsuit/verb/toggle_zipper()
|
||||
set name = "Toggle Jumpsuit Zipper"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
if(src.icon_state == "jane_sid_suit_down")
|
||||
src.color = "jane_sid_suit"
|
||||
usr << "You zip up the [src]."
|
||||
else
|
||||
src.color = "jane_sid_suit_down"
|
||||
usr << "You unzip and roll down the [src]."
|
||||
|
||||
src.icon_state = "[color]"
|
||||
src.item_state = "[color]"
|
||||
usr.update_inv_w_uniform()
|
||||
|
||||
////// Wyatt's Ex-Commander Jumpsuit - RawrTaicho
|
||||
/obj/item/clothing/under/fluff/wyatt_1
|
||||
|
||||
name = "ex-commander jumpsuit"
|
||||
desc = "A standard Central Command Engineering Commander jumpsuit tailored to fight the wearer tightly. It has a Medal of Service pinned onto the left side of it."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "wyatt_uniform"
|
||||
item_state = "wyatt_uniform"
|
||||
color = "wyatt_uniform"
|
||||
|
||||
//////////// Masks ////////////
|
||||
|
||||
/*
|
||||
@@ -522,6 +597,41 @@
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
|
||||
////// Small locket - Altair An-Nasaqan - Serithi
|
||||
|
||||
/obj/item/clothing/tie/fluff/altair_locket
|
||||
name = "small locket"
|
||||
desc = "A small golden locket attached to an Ii'rka-reed string. Inside the locket is a holo-picture of a female Tajaran, and an inscription writtin in Siik'mas."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "altair_locket"
|
||||
item_state = "altair_locket"
|
||||
color = "altair_locket"
|
||||
slot_flags = 0
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
////// Medallion - Nasir Khayyam - Jamini
|
||||
|
||||
/obj/item/clothing/tie/fluff/nasir_khayyam_1
|
||||
name = "medallion"
|
||||
desc = "This silvered medallion bears the symbol of the Hadii Clan of the Tajaran."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "nasir_khayyam_1"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
////// Emerald necklace - Ty Foster - Nega
|
||||
|
||||
/obj/item/clothing/mask/mara_kilpatrick_1
|
||||
name = "emerald necklace"
|
||||
desc = "A brass necklace with a green emerald placed at the end. It has a small inscription on the top of the chain, saying \'Foster\'"
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "ty_foster"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
|
||||
//////////// Shoes ////////////
|
||||
|
||||
/obj/item/clothing/shoes/magboots/fluff/susan_harris_1 //sniperyeti: Susan Harris
|
||||
@@ -529,22 +639,6 @@
|
||||
desc = "A colorful pair of magboots with the name Susan Harris clearly written on the back."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "atmosmagboots0"
|
||||
toggle()
|
||||
set name = "Toggle Magboots"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(src.magpulse)
|
||||
src.flags &= ~NOSLIP
|
||||
src.slowdown = SHOES_SLOWDOWN
|
||||
src.magpulse = 0
|
||||
icon_state = "atmosmagboots0"
|
||||
usr << "You disable the mag-pulse traction system."
|
||||
else
|
||||
src.flags |= NOSLIP
|
||||
src.slowdown = 2
|
||||
src.magpulse = 1
|
||||
icon_state = "atmosmagboots1"
|
||||
usr << "You enable the mag-pulse traction system."
|
||||
|
||||
//////////// Sets ////////////
|
||||
|
||||
@@ -593,3 +687,19 @@
|
||||
icon_state = "retpoluniform"
|
||||
color = "retpoluniform"
|
||||
|
||||
//////////// Weapons ////////////
|
||||
|
||||
///// Colt Peacemaker - Ana Ka'Rimah - SueTheCake
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver/fluff/ana_peacemaker
|
||||
|
||||
name = "Peacemaker"
|
||||
desc = "A nickel-plated revolver with pearl grips. It has a certain Old West flair!"
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "peacemaker"
|
||||
|
||||
///// Well-used baton - Oen'g Issek - Donofnyc3
|
||||
|
||||
/obj/item/weapon/melee/baton/fluff/oeng_baton
|
||||
name = "well-used stun baton"
|
||||
desc = "A stun baton used for incapacitating targets; there seems to be a bunch of tally marks set into the handle."
|
||||
|
||||
@@ -254,6 +254,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
client.be_pai = 1
|
||||
src << "You will now be considered a viable candidate when a pAI device requests a new personality, effective until the end of this round."
|
||||
|
||||
/mob/dead/observer/verb/toggle_spaceninja_candidate()
|
||||
set name = "Toggle Be Space Ninja Candidate"
|
||||
set category = "Ghost"
|
||||
set desc = "Determines whether you will be a candidate for when a new space ninja spawns. (toggle)"
|
||||
if(client.be_spaceninja)
|
||||
client.be_spaceninja = 0
|
||||
src << "You are now excluded from space ninja candidate lists until end of round."
|
||||
else
|
||||
client.be_spaceninja = 1
|
||||
src << "You are now included in space ninja candidate lists until end of round."
|
||||
|
||||
/mob/dead/observer/memory()
|
||||
set hidden = 1
|
||||
src << "\red You are dead! You have no mind to store memory!"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var/move_delay_add = 0 // movement delay to add
|
||||
|
||||
status_flags = CANPARALYSE
|
||||
var/heal_rate = 5
|
||||
var/heal_rate = 1
|
||||
var/plasma_rate = 5
|
||||
|
||||
var/oxygen_alert = 0
|
||||
|
||||
@@ -114,7 +114,7 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/neurotoxin(mob/target as mob in oview())
|
||||
set name = "Spit Neurotoxin (50)"
|
||||
set desc = "Spits neurotoxin at someone, paralyzing them for a short time."
|
||||
set desc = "Spits neurotoxin at someone, paralyzing them for a short time if they are not wearing protective gear."
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(50))
|
||||
@@ -137,12 +137,12 @@ Doesn't work on other aliens/AI.*/
|
||||
if(!istype(T, /turf))
|
||||
return
|
||||
if (U == T)
|
||||
usr.bullet_act(src, get_organ_target())
|
||||
usr.bullet_act(new /obj/item/projectile/neurotoxin(usr.loc), get_organ_target())
|
||||
return
|
||||
if(!istype(U, /turf))
|
||||
return
|
||||
|
||||
var/obj/item/projectile/energy/dart/A = new /obj/item/projectile/energy/dart(usr.loc)
|
||||
var/obj/item/projectile/neurotoxin/A = new /obj/item/projectile/neurotoxin(usr.loc)
|
||||
|
||||
A.current = U
|
||||
A.yo = U.y - T.y
|
||||
@@ -186,4 +186,4 @@ Doesn't work on other aliens/AI.*/
|
||||
M.loc = loc
|
||||
//Paralyse(10)
|
||||
src.visible_message("\green <B>[src] hurls out the contents of their stomach!</B>")
|
||||
return
|
||||
return
|
||||
|
||||
@@ -94,7 +94,8 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/facehugger/throw_impact(atom/hit_atom)
|
||||
Attach(hit_atom)
|
||||
if(prob(25))
|
||||
Attach(hit_atom)
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/facehugger/proc/Attach(M as mob)
|
||||
@@ -134,17 +135,21 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
for(var/mob/O in viewers(target, null))
|
||||
O.show_message("\red \b [src] tears [W] off of [target]'s face!", 1)
|
||||
|
||||
loc = target
|
||||
layer = 20
|
||||
target.wear_mask = src
|
||||
target.update_inv_wear_mask()
|
||||
if(prob(75))
|
||||
loc = target
|
||||
layer = 20
|
||||
target.wear_mask = src
|
||||
target.update_inv_wear_mask()
|
||||
|
||||
GoIdle() //so it doesn't jump the people that tear it off
|
||||
GoIdle() //so it doesn't jump the people that tear it off
|
||||
|
||||
if(!sterile) target.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings
|
||||
if(!sterile) target.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings
|
||||
|
||||
spawn(rand(MIN_IMPREGNATION_TIME,MAX_IMPREGNATION_TIME))
|
||||
Impregnate(target)
|
||||
spawn(rand(MIN_IMPREGNATION_TIME,MAX_IMPREGNATION_TIME))
|
||||
Impregnate(target)
|
||||
else
|
||||
for(var/mob/O in viewers(target, null))
|
||||
O.show_message("\red \b [src] misses [target]'s face!", 1)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
swap_hand()
|
||||
|
||||
/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M)
|
||||
if (src.health > 0)
|
||||
if (src.health > config.health_threshold_crit)
|
||||
if(src == M && istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
src.visible_message( \
|
||||
|
||||
@@ -11,6 +11,14 @@
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
|
||||
for(var/datum/organ/external/E in src.organs)
|
||||
if(istype(E, /datum/organ/external/chest))
|
||||
continue
|
||||
// Only make the limb drop if it's not too damaged
|
||||
if(prob(100 - E.get_damage()))
|
||||
// Override the current limb status and don't cause an explosion
|
||||
E.droplimb(1,1)
|
||||
|
||||
flick("gibbed-h", animation)
|
||||
hgibs(loc, viruses, dna)
|
||||
|
||||
@@ -100,4 +108,4 @@
|
||||
/mob/living/carbon/human/proc/Drain()
|
||||
ChangeToHusk()
|
||||
mutations |= NOCLONE
|
||||
return
|
||||
return
|
||||
|
||||
@@ -38,17 +38,19 @@
|
||||
apply_damage(damage, BRUTE, affecting, armor_block)
|
||||
if (damage >= 25)
|
||||
visible_message("\red <B>[M] has wounded [src]!</B>")
|
||||
apply_effect(4, WEAKEN, armor_block)
|
||||
apply_effect(rand(0.5,3), WEAKEN, armor_block)
|
||||
updatehealth()
|
||||
|
||||
if("disarm")
|
||||
var/randn = rand(1, 100)
|
||||
if (randn <= 80)
|
||||
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||
Weaken(10)
|
||||
visible_message(text("\red <B>[] has tackled down []!</B>", M, src))
|
||||
if (prob(80)) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||
Weaken(rand(0.5,3))
|
||||
for(var/mob/O in viewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O.show_message(text("\red <B>[] has tackled down []!</B>", M, src), 1)
|
||||
if (prob(25))
|
||||
M.Weaken(rand(2,4))
|
||||
else
|
||||
if (randn <= 99)
|
||||
if (prob(80))
|
||||
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
|
||||
drop_item()
|
||||
visible_message(text("\red <B>[] disarmed []!</B>", M, src))
|
||||
|
||||
@@ -113,7 +113,12 @@ emp_act
|
||||
/mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
|
||||
if(!I || !user) return 0
|
||||
|
||||
var/datum/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting))
|
||||
var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src)
|
||||
if(!target_zone)
|
||||
visible_message("\red <B>[user] misses [src] with \the [I]!")
|
||||
return
|
||||
|
||||
var/datum/organ/external/affecting = get_organ(target_zone)
|
||||
if (!affecting)
|
||||
return
|
||||
if(affecting.status & ORGAN_DESTROYED)
|
||||
@@ -148,21 +153,8 @@ emp_act
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(get_dist(H, src) > 1) //people with TK won't get smeared with blood
|
||||
if(H.wear_suit)
|
||||
H.wear_suit.add_blood(src)
|
||||
H.update_inv_wear_suit(0) //updates mob overlays to show the new blood (no refresh)
|
||||
else if(H.w_uniform)
|
||||
H.w_uniform.add_blood(src)
|
||||
H.update_inv_w_uniform(0) //updates mob overlays to show the new blood (no refresh)
|
||||
if (H.gloves)
|
||||
H.gloves.add_blood(H)
|
||||
H.gloves:transfer_blood = 2
|
||||
H.gloves:bloody_hands_mob = H
|
||||
else
|
||||
H.add_blood(H)
|
||||
H.bloody_hands = 2
|
||||
H.bloody_hands_mob = H
|
||||
H.update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves
|
||||
H.bloody_body(src)
|
||||
H.bloody_hands(src)
|
||||
|
||||
switch(hit_area)
|
||||
if("head")//Harder to score a stun but if you do it lasts a bit longer
|
||||
@@ -189,10 +181,23 @@ emp_act
|
||||
visible_message("\red <B>[src] has been knocked down!</B>")
|
||||
|
||||
if(bloody)
|
||||
bloody_body(src)
|
||||
|
||||
if(wear_suit)
|
||||
wear_suit.add_blood(src)
|
||||
update_inv_wear_suit(0)
|
||||
if(w_uniform)
|
||||
w_uniform.add_blood(src)
|
||||
update_inv_w_uniform(0)
|
||||
/mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2)
|
||||
if (gloves)
|
||||
gloves.add_blood(source)
|
||||
gloves:transfer_blood = amount
|
||||
gloves:bloody_hands_mob = source
|
||||
else
|
||||
add_blood(source)
|
||||
bloody_hands = amount
|
||||
bloody_hands_mob = source
|
||||
update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_body(var/mob/living/source)
|
||||
if(wear_suit)
|
||||
wear_suit.add_blood(source)
|
||||
update_inv_wear_suit(0)
|
||||
if(w_uniform)
|
||||
w_uniform.add_blood(source)
|
||||
update_inv_w_uniform(0)
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
/obj/effect/equip_e/human/process()
|
||||
if (item)
|
||||
item.add_fingerprint(source)
|
||||
if (!item)
|
||||
else
|
||||
switch(place)
|
||||
if("mask")
|
||||
if (!( target.wear_mask ))
|
||||
@@ -533,7 +533,7 @@ It can still be worn/put on as normal.
|
||||
if (target.legcuffed)
|
||||
strip_item = target.legcuffed
|
||||
if("CPR")
|
||||
if ((target.health >= -99.0 && target.health <= 0))
|
||||
if ((target.health > config.health_threshold_dead && target.health < config.health_threshold_crit))
|
||||
var/suff = min(target.getOxyLoss(), 7)
|
||||
target.adjustOxyLoss(-suff)
|
||||
target.updatehealth()
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point
|
||||
#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point
|
||||
|
||||
var/const/BLOOD_VOLUME_SAFE = 501
|
||||
var/const/BLOOD_VOLUME_OKAY = 336
|
||||
var/const/BLOOD_VOLUME_BAD = 224
|
||||
var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
|
||||
/mob/living/carbon/human
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
@@ -153,11 +158,11 @@
|
||||
|
||||
|
||||
switch(blood_volume)
|
||||
if(501 to 10000)
|
||||
if(BLOOD_VOLUME_SAFE to 10000)
|
||||
if(pale)
|
||||
pale = 0
|
||||
update_body()
|
||||
if(336 to 500)
|
||||
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
@@ -169,7 +174,7 @@
|
||||
if(oxyloss < 20)
|
||||
// hint that they're getting close to suffocation
|
||||
oxyloss += 3
|
||||
if(224 to 335)
|
||||
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
@@ -181,19 +186,25 @@
|
||||
Paralyse(rand(1,3))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
src << "\red You feel extremely [word]"
|
||||
if(122 to 244)
|
||||
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
||||
oxyloss += 5
|
||||
toxloss += 5
|
||||
if(prob(15))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
src << "\red You feel extremely [word]"
|
||||
if(0 to 122)
|
||||
if(0 to BLOOD_VOLUME_SURVIVE)
|
||||
// There currently is a strange bug here. If the mob is not below -100 health
|
||||
// when death() is called, apparently they will be just fine, and this way it'll
|
||||
// spam deathgasp. Adjusting toxloss ensures the mob will stay dead.
|
||||
toxloss += 300 // just to be safe!
|
||||
death()
|
||||
|
||||
// Without enough blood you slowly go hungry.
|
||||
if(blood_volume < BLOOD_VOLUME_SAFE)
|
||||
if(nutrition >= 300)
|
||||
nutrition -= 10
|
||||
else if(nutrition >= 200)
|
||||
nutrition -= 3
|
||||
|
||||
var/blood_max = 0
|
||||
for(var/datum/organ/external/temp in organs)
|
||||
@@ -814,6 +825,10 @@
|
||||
else
|
||||
pressure_alert = -1
|
||||
|
||||
else if(pressure <= 50)
|
||||
var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob.
|
||||
if(adjusted_pressure < 50)
|
||||
adjustBruteLoss( (50 - adjusted_pressure) / 50 )
|
||||
return
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
#define SAY_MINIMUM_PRESSURE 10
|
||||
var/list/department_radio_keys = list(
|
||||
":r" = "right hand",
|
||||
":l" = "left hand",
|
||||
@@ -295,6 +295,13 @@ var/list/department_radio_keys = list(
|
||||
italics = 1
|
||||
/////SPECIAL HEADSETS END
|
||||
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
if(environment)
|
||||
var/pressure = environment.return_pressure()
|
||||
if (pressure < SAY_MINIMUM_PRESSURE) //in space no one can hear you scream
|
||||
italics = 1
|
||||
message_range = 1
|
||||
|
||||
var/list/listening
|
||||
|
||||
listening = get_mobs_in_view(message_range, src)
|
||||
|
||||
@@ -128,20 +128,15 @@ var/list/ai_list = list()
|
||||
|
||||
//if(icon_state == initial(icon_state))
|
||||
var/icontype = ""
|
||||
var/list/icons = list("Monochrome", "Blue", "Inverted", "Firewall", "Green", "Red", "Static")
|
||||
if (src.name == "B.A.N.N.E.D." && src.ckey == "spaceman96")
|
||||
icons += "B.A.N.N.E.D."
|
||||
var/list/icons = list("Monochrome", "Blue", "Inverted", "Text", "Smiley", "Angry", "Dorf", "Matrix", "Bliss", "Firewall", "Green", "Red", "Static", "Triumvirate", "Triumvirate Static")
|
||||
if (src.name == "M00X-BC" && src.ckey == "searif")
|
||||
icons += "M00X-BC"
|
||||
if (src.name == "TRIBUNAL" && src.ckey == "serithi")
|
||||
icons += "Tribunal"
|
||||
icons += "Tribunal Malfunctioning"
|
||||
if (src.name == "Skuld" && src.ckey == "ravensdale")
|
||||
icons += "Skuld"
|
||||
/* if(icontype == "Clown")
|
||||
icon_state = "ai-clown2"*/
|
||||
icontype = input("Please, select a display!", "AI", null/*, null*/) in icons
|
||||
if(icontype == "Monochrome")
|
||||
if(icontype == "Clown")
|
||||
icon_state = "ai-clown2"
|
||||
else if(icontype == "Monochrome")
|
||||
icon_state = "ai-mono"
|
||||
else if(icontype == "Blue")
|
||||
icon_state = "ai"
|
||||
@@ -155,12 +150,24 @@ var/list/ai_list = list()
|
||||
icon_state = "ai-malf"
|
||||
else if(icontype == "Static")
|
||||
icon_state = "ai-static"
|
||||
else if(icontype == "Text")
|
||||
icon_state = "ai-text"
|
||||
else if(icontype == "Smiley")
|
||||
icon_state = "ai-smiley"
|
||||
else if(icontype == "Matrix")
|
||||
icon_state = "ai-matrix"
|
||||
else if(icontype == "Angry")
|
||||
icon_state = "ai-angryface"
|
||||
else if(icontype == "Dorf")
|
||||
icon_state = "ai-dorf"
|
||||
else if(icontype == "Bliss")
|
||||
icon_state = "ai-bliss"
|
||||
else if(icontype == "M00X-BC")
|
||||
icon_state = "ai-searif"
|
||||
else if(icontype == "Tribunal")
|
||||
icon_state = "ai-tribunal"
|
||||
else if(icontype == "Tribunal Malfunctioning")
|
||||
icon_state = "ai-tribunal-malf"
|
||||
else if(icontype == "Triumvirate")
|
||||
icon_state = "ai-triumvirate"
|
||||
else if(icontype == "Triumvirate Static")
|
||||
icon_state = "ai-triumvirate-malf"
|
||||
else if(icontype == "Skuld")
|
||||
icon_state = "ai-ravensdale"
|
||||
//else
|
||||
|
||||
@@ -163,6 +163,53 @@ proc/hasorgans(A)
|
||||
if(prob(probability * 0.75)) return zone
|
||||
return "chest"
|
||||
|
||||
// Emulates targetting a specific body part, and miss chances
|
||||
// May return null if missed
|
||||
// miss_chance_mod may be negative.
|
||||
/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0)
|
||||
zone = check_zone(zone)
|
||||
|
||||
// you can only miss if your target is standing and not restrained
|
||||
if(!target.buckled && !target.lying)
|
||||
var/miss_chance = max(10 + miss_chance_mod, 0)
|
||||
switch(zone)
|
||||
if("head")
|
||||
miss_chance = 40
|
||||
if("l_leg")
|
||||
miss_chance = 20
|
||||
if("r_leg")
|
||||
miss_chance = 20
|
||||
if("l_arm")
|
||||
miss_chance = 20
|
||||
if("r_arm")
|
||||
miss_chance = 20
|
||||
if("l_hand")
|
||||
miss_chance = 50
|
||||
if("r_hand")
|
||||
miss_chance = 50
|
||||
if("l_foot")
|
||||
miss_chance = 50
|
||||
if("r_foot")
|
||||
miss_chance = 50
|
||||
if(prob(miss_chance))
|
||||
if(prob(70))
|
||||
return null
|
||||
else
|
||||
var/t = rand(1, 10)
|
||||
switch(t)
|
||||
if(1) return "head"
|
||||
if(2) return "l_arm"
|
||||
if(3) return "r_arm"
|
||||
if(4) return "chest"
|
||||
if(5) return "l_foot"
|
||||
if(6) return "r_foot"
|
||||
if(7) return "l_hand"
|
||||
if(8) return "r_hand"
|
||||
if(9) return "l_leg"
|
||||
if(10) return "r_leg"
|
||||
|
||||
return zone
|
||||
|
||||
|
||||
/proc/stars(n, pr)
|
||||
if (pr == null)
|
||||
|
||||
@@ -374,7 +374,11 @@
|
||||
dat += "Choose from the following open positions:<br>"
|
||||
for(var/datum/job/job in job_master.occupations)
|
||||
if(job && IsJobAvailable(job.title))
|
||||
dat += "<a href='byond://?src=\ref[src];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a><br>"
|
||||
var/active = 0
|
||||
// Only players with the job assigned and AFK for less than 10 minutes count as active
|
||||
for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_job == job && M.client.inactivity <= 10 * 60 * 10)
|
||||
active++
|
||||
dat += "<a href='byond://?src=\ref[src];SelectedJob=[job.title]'>[job.title] ([job.current_positions]) (Active: [active])</a><br>"
|
||||
|
||||
dat += "</center>"
|
||||
src << browse(dat, "window=latechoices;size=300x640;can_close=1")
|
||||
|
||||
@@ -12,6 +12,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
|
||||
"pAI candidate" = 1, // -- TLE // 7
|
||||
"cultist" = IS_MODE_COMPILED("cult"), // 8
|
||||
"infested monkey" = IS_MODE_COMPILED("monkey"), // 9
|
||||
"space ninja" = "true", // 10
|
||||
)
|
||||
|
||||
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "Love-Hearts", "Black2", "Grey2", "Stripey", "Kinky", "None") //Curse whoever made male/female underwear diffrent colours
|
||||
@@ -28,6 +29,7 @@ var/const/BE_ALIEN =(1<<6)
|
||||
var/const/BE_PAI =(1<<7)
|
||||
var/const/BE_CULTIST =(1<<8)
|
||||
var/const/BE_MONKEY =(1<<9)
|
||||
var/const/BE_SPACENINJA=(1<<10)
|
||||
|
||||
|
||||
var/const/MAX_SAVE_SLOTS = 10
|
||||
@@ -236,8 +238,8 @@ datum/preferences
|
||||
dat += "<a href=\"byond://?src=\ref[user];preference=slotname;task=input\">Rename slot</a> - "
|
||||
dat += "<a href=\"byond://?src=\ref[user];preference=reload\">Reload slot</a>"
|
||||
|
||||
//column 1
|
||||
dat += "</center><hr><table><tr><td width='310px'>"
|
||||
//COLUMN 1
|
||||
dat += "</center><hr><table><tr><td width='285px'>"
|
||||
|
||||
dat += "<b>Name:</b> "
|
||||
dat += "<a href=\"byond://?src=\ref[user];preference=name;task=input\"><b>[real_name]</b></a> "
|
||||
@@ -263,41 +265,68 @@ datum/preferences
|
||||
dat += "[(sound_adminhelp)?"On":"Off"] <a href='byond://?src=\ref[user];preference=hear_adminhelps'>toggle</a><br>"
|
||||
|
||||
if(config.allow_admin_ooccolor && check_rights(R_FUN,0))
|
||||
dat += "<br><b>OOC</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=ooccolor;task=input'>Change color</a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
|
||||
dat += "<br><a href='byond://?src=\ref[user];preference=ooccolor;task=input'><b>OOC color</b></a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
|
||||
|
||||
dat += "<br><b>Occupation Choices</b><br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=job;task=menu\"><b>Set Preferences</b></a><br><br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=job;task=menu\"><b>Occupation Preferences</b></a><br>"
|
||||
|
||||
if(jobban_isbanned(user, "Records"))
|
||||
dat += "<b>You are banned from using character records.</b><br>"
|
||||
else
|
||||
dat += "<b><a href=\"byond://?src=\ref[user];preference=records;record=1\">Character Records</a></b><br><br>"
|
||||
dat += "<b><a href=\"byond://?src=\ref[user];preference=records;record=1\">Character Records</a></b><br>"
|
||||
|
||||
dat += "<b>Flavor Text</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=flavor_text;task=input'>Change</a><br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b> (<i>[GetSkillClass(used_skillpoints)][used_skillpoints > 0 ? " [used_skillpoints]" : "0"])</i></a><br>"
|
||||
|
||||
dat += "<a href='byond://?src=\ref[user];preference=flavor_text;task=input'><b>Set Flavor Text</b></a><br>"
|
||||
if(lentext(flavor_text) <= 40)
|
||||
dat += "[flavor_text]"
|
||||
if(!lentext(flavor_text))
|
||||
dat += "\[...\]"
|
||||
else
|
||||
dat += "[flavor_text]"
|
||||
else
|
||||
dat += "[copytext(flavor_text, 1, 37)]...<br>"
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<b>Skill Choices</b><br>"
|
||||
dat += "\t<i>[GetSkillClass(used_skillpoints)]</i> ([used_skillpoints])<br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b></a><br><br>"
|
||||
|
||||
//column 2
|
||||
dat += "</td><td width='310px'>" //height='300px'
|
||||
|
||||
dat += "<table><tr><td width=100><b>Body</b> "
|
||||
dat += "(<a href=\"byond://?src=\ref[user];preference=all;task=random\">®</A>)"
|
||||
//antag
|
||||
dat += "<br>"
|
||||
if(jobban_isbanned(user, "Syndicate"))
|
||||
dat += "<b>You are banned from antagonist roles.</b>"
|
||||
src.be_special = 0
|
||||
else
|
||||
var/n = 0
|
||||
for (var/i in special_roles)
|
||||
if(special_roles[i]) //if mode is available on the server
|
||||
if(jobban_isbanned(user, i))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else if(i == "pai candidate")
|
||||
if(jobban_isbanned(user, "pAI"))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else
|
||||
dat += "<b>Be [i]:</b> <a href=\"byond://?src=\ref[user];preference=be_special;num=[n]\"><b>[src.be_special&(1<<n) ? "Yes" : "No"]</b></a><br>"
|
||||
n++
|
||||
dat += "</td>"
|
||||
|
||||
//COLUMN 2
|
||||
dat += "<td>"
|
||||
dat += "<table><tr>"
|
||||
|
||||
dat += "<td width='142px'>"
|
||||
dat += "<b>Body</b> (<a href=\"byond://?src=\ref[user];preference=all;task=random\">®</A>)<br>"
|
||||
dat += "Species: <a href='byond://?src=\ref[user];preference=species;task=input'>[species]</a><br>"
|
||||
dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>"
|
||||
dat += "Skin Tone: <a href='byond://?src=\ref[user];preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>"
|
||||
dat += "Skin Tone: <a href='byond://?src=\ref[user];preference=s_tone;task=input'>[-s_tone + 35]/220</a><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust Skin</a><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust Limbs</a><br>"
|
||||
dat += "</td>"
|
||||
|
||||
dat += "Limbs: <a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust Limbs</a><br>"
|
||||
dat += "<td><b>Preview</b></br>"
|
||||
dat += "<img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></br></td>"
|
||||
|
||||
dat += "</tr></table>"
|
||||
|
||||
//display limbs below
|
||||
var/ind = 0
|
||||
for(var/name in organ_data)
|
||||
//world << "[ind] \ [organ_data.len]"
|
||||
var/status = organ_data[name]
|
||||
var/organ_name = null
|
||||
switch(name)
|
||||
@@ -319,11 +348,18 @@ datum/preferences
|
||||
organ_name = "right hand"
|
||||
|
||||
if(status == "cyborg")
|
||||
dat += "\tRobotical [organ_name] prothesis<br>"
|
||||
if(status == "amputated")
|
||||
dat += "\tAmputated [organ_name]<br>"
|
||||
dat+="<br>"
|
||||
|
||||
++ind
|
||||
if(ind > 1)
|
||||
dat += ", "
|
||||
dat += "\tMechanical [organ_name] prothesis"
|
||||
else if(status == "amputated")
|
||||
++ind
|
||||
if(ind > 1)
|
||||
dat += ", "
|
||||
dat += "\tAmputated [organ_name]"
|
||||
if(ind)
|
||||
dat += "\[...\]"
|
||||
dat += "<br><br>"
|
||||
|
||||
if(gender == MALE)
|
||||
dat += "Underwear: <a href =\"byond://?src=\ref[user];preference=underwear;task=input\"><b>[underwear_m[underwear]]</b></a><br>"
|
||||
@@ -332,8 +368,6 @@ datum/preferences
|
||||
|
||||
dat += "Backpack Type:<br><a href =\"byond://?src=\ref[user];preference=bag;task=input\"><b>[backbaglist[backbag]]</b></a><br>"
|
||||
|
||||
dat += "</td><td><b>Preview</b><br><img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></td></tr></table>"
|
||||
|
||||
dat += "<br><b>Hair</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=hair;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair)]\"><tr><td>__</td></tr></table></font><br>"
|
||||
dat += "Style: <a href='byond://?src=\ref[user];preference=h_style;task=input'>[h_style]</a><br>"
|
||||
@@ -345,22 +379,7 @@ datum/preferences
|
||||
dat += "<br><b>Eyes</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=eyes;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes)]\"><tr><td>__</td></tr></table></font>"
|
||||
|
||||
dat += "<br><br>"
|
||||
if(jobban_isbanned(user, "Syndicate"))
|
||||
dat += "<b>You are banned from antagonist roles.</b>"
|
||||
src.be_special = 0
|
||||
else
|
||||
var/n = 0
|
||||
for (var/i in special_roles)
|
||||
if(special_roles[i]) //if mode is available on the server
|
||||
if(jobban_isbanned(user, i))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else if(i == "pai candidate")
|
||||
if(jobban_isbanned(user, "pAI"))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else
|
||||
dat += "<b>Be [i]:</b> <a href=\"byond://?src=\ref[user];preference=be_special;num=[n]\"><b>[src.be_special&(1<<n) ? "Yes" : "No"]</b></a><br>"
|
||||
n++
|
||||
dat += "<br>"
|
||||
dat += "</td></tr></table><center>"
|
||||
|
||||
dat += "<hr>"
|
||||
@@ -1021,6 +1040,10 @@ datum/preferences
|
||||
if(second_limb)
|
||||
organ_data[second_limb] = "cyborg"
|
||||
|
||||
if("skin_style")
|
||||
var/skin_style_name = input(user, "Select a new skin style") as null|anything in list("default1", "default2", "default3")
|
||||
if(!skin_style_name) return
|
||||
|
||||
|
||||
else
|
||||
switch(href_list["preference"])
|
||||
@@ -1231,6 +1254,7 @@ datum/preferences
|
||||
C.be_alien = be_special & BE_ALIEN
|
||||
C.be_pai = be_special & BE_PAI
|
||||
C.be_syndicate = be_special & BE_TRAITOR
|
||||
C.be_spaceninja = be_special & BE_SPACENINJA
|
||||
if(isnull(src.ghost_ears)) src.ghost_ears = 1 //There were problems where the default was null before someone saved their profile.
|
||||
C.ghost_ears = src.ghost_ears
|
||||
C.ghost_sight = src.ghost_sight
|
||||
|
||||
@@ -416,3 +416,29 @@
|
||||
name = "Tajaran Ears"
|
||||
icon_state = "tajears"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
//skin styles - WIP
|
||||
|
||||
/datum/sprite_accessory/skin
|
||||
human
|
||||
name = "Default human skin"
|
||||
icon = "human"
|
||||
|
||||
human_tatt01
|
||||
name = "Tatt01 human skin"
|
||||
icon = "human_tattoo1"
|
||||
|
||||
tajaran
|
||||
name = "Default tajaran skin"
|
||||
icon = "tajaran"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
soghun
|
||||
name = "Default soghun skin"
|
||||
icon = "soghun"
|
||||
species_allowed = list("Soghun")
|
||||
|
||||
skrell
|
||||
name = "Default skrell skin"
|
||||
icon = "skrell"
|
||||
species_allowed = list("Skrell")
|
||||
|
||||
@@ -518,6 +518,7 @@
|
||||
if ((!( L.stat ) && L.canmove && !( L.restrained() )))
|
||||
var/resisting = 0
|
||||
for(var/obj/O in L.requests)
|
||||
L.requests.Remove(O)
|
||||
del(O)
|
||||
resisting++
|
||||
for(var/obj/item/weapon/grab/G in usr.grabbed_by)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
var/damage = 10
|
||||
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
|
||||
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
|
||||
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
|
||||
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
|
||||
var/projectile_type = "/obj/item/projectile"
|
||||
var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile.
|
||||
//Effects
|
||||
@@ -80,7 +80,14 @@
|
||||
forcedodge = 1
|
||||
else
|
||||
var/distance = get_dist(original,loc)
|
||||
def_zone = ran_zone(def_zone, 100-(5*distance)) //Lower accurancy/longer range tradeoff.
|
||||
//Lower accurancy/longer range tradeoff. Distance matters a lot here, so at
|
||||
// close distance, actually RAISE the chance to hit.
|
||||
def_zone = get_zone_with_miss_chance(def_zone, M, -30 + 8*distance)
|
||||
|
||||
if(!def_zone)
|
||||
visible_message("\The [src] misses [M] narrowly.")
|
||||
del(src)
|
||||
return
|
||||
if(silenced)
|
||||
M << "\red You've been shot in the [parse_zone(def_zone)] by the [src.name]!"
|
||||
else
|
||||
|
||||
@@ -124,4 +124,12 @@
|
||||
else if (istype(target, /mob/living/carbon/))
|
||||
M.show_message("\blue The radiation beam dissipates harmlessly through your body.")
|
||||
else
|
||||
return 1
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/neurotoxin
|
||||
name = "neurotoxin"
|
||||
icon_state = "toxin"
|
||||
damage = 5
|
||||
damage_type = TOX
|
||||
weaken = 5
|
||||
flag = "bio"
|
||||
|
||||
@@ -83,9 +83,9 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(prob(10))
|
||||
M << "\red Your insides are burning!"
|
||||
M.adjustToxLoss(rand(20,60))
|
||||
M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER)
|
||||
else if(prob(40))
|
||||
M.heal_organ_damage(5,0)
|
||||
M.heal_organ_damage(5*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -305,29 +305,29 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.drowsyness = max(M.drowsyness-2, 0)
|
||||
M.drowsyness = max(M.drowsyness-2*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
if(holder.has_reagent("toxin"))
|
||||
holder.remove_reagent("toxin", 2)
|
||||
holder.remove_reagent("toxin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("stoxin"))
|
||||
holder.remove_reagent("stoxin", 2)
|
||||
holder.remove_reagent("stoxin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("plasma"))
|
||||
holder.remove_reagent("plasma", 1)
|
||||
holder.remove_reagent("plasma", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("sacid"))
|
||||
holder.remove_reagent("sacid", 1)
|
||||
holder.remove_reagent("sacid", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("cyanide"))
|
||||
holder.remove_reagent("cyanide", 1)
|
||||
holder.remove_reagent("cyanide", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("amatoxin"))
|
||||
holder.remove_reagent("amatoxin", 2)
|
||||
holder.remove_reagent("amatoxin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("chloralhydrate"))
|
||||
holder.remove_reagent("chloralhydrate", 5)
|
||||
holder.remove_reagent("chloralhydrate", 5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("carpotoxin"))
|
||||
holder.remove_reagent("carpotoxin", 1)
|
||||
holder.remove_reagent("carpotoxin", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("zombiepowder"))
|
||||
holder.remove_reagent("zombiepowder", 0.5)
|
||||
holder.remove_reagent("zombiepowder", 0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("mindbreaker"))
|
||||
holder.remove_reagent("mindbreaker", 2)
|
||||
M.hallucination = max(0, M.hallucination - 5)
|
||||
M.adjustToxLoss(-2)
|
||||
holder.remove_reagent("mindbreaker", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.hallucination = max(0, M.hallucination - 5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -340,7 +340,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1.5)
|
||||
M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -353,8 +353,8 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(3)
|
||||
M.adjustOxyLoss(3)
|
||||
M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.sleeping += 1
|
||||
..()
|
||||
return
|
||||
@@ -439,7 +439,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.losebreath >= 10)
|
||||
M.losebreath = max(10, M.losebreath-5)
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
space_drugs
|
||||
@@ -456,7 +456,7 @@ datum
|
||||
if(M.canmove)
|
||||
if(prob(10)) step(M, pick(cardinal))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
serotrotium
|
||||
@@ -469,7 +469,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(ishuman(M))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","gasp"))
|
||||
holder.remove_reagent(src.id, 0.1)
|
||||
holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
/* silicate
|
||||
@@ -585,7 +585,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.take_organ_damage(1, 0)
|
||||
M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -598,7 +598,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -639,7 +639,7 @@ datum
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M.nutrition += 1
|
||||
M.nutrition += 1*REAGENTS_EFFECT_MULTIPLIER
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -652,8 +652,8 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.take_organ_damage(0, 1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.take_organ_damage(0, 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
@@ -725,7 +725,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -907,7 +907,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(10,IRRADIATE,0)
|
||||
M.apply_effect(10*REAGENTS_EFFECT_MULTIPLIER,IRRADIATE,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -935,7 +935,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.nutrition += nutriment_factor
|
||||
M.nutrition += nutriment_factor*REAGENTS_EFFECT_MULTIPLIER
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1004,7 +1004,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(1,IRRADIATE,0)
|
||||
M.apply_effect(1*REAGENTS_EFFECT_MULTIPLIER,IRRADIATE,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1055,7 +1055,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1157,8 +1157,8 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(holder.has_reagent("inaprovaline"))
|
||||
holder.remove_reagent("inaprovaline", 2)
|
||||
M.adjustToxLoss(1)
|
||||
holder.remove_reagent("inaprovaline", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
@@ -1211,7 +1211,7 @@ datum
|
||||
M.make_dizzy(1)
|
||||
if(!M.confused) M.confused = 1
|
||||
M.confused = max(M.confused, 20)
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1227,7 +1227,7 @@ datum
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.take_organ_damage(1, 0)
|
||||
M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
M.adjustOxyLoss(3)
|
||||
if(prob(20)) M.emote("gasp")
|
||||
..()
|
||||
@@ -1244,7 +1244,7 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
M.heal_organ_damage(0,2)
|
||||
M.heal_organ_damage(0,2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1259,7 +1259,7 @@ datum
|
||||
if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
M.heal_organ_damage(0,3)
|
||||
M.heal_organ_damage(0,3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1274,9 +1274,9 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustOxyLoss(-2)
|
||||
M.adjustOxyLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("lexorin"))
|
||||
holder.remove_reagent("lexorin", 2)
|
||||
holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1293,7 +1293,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustOxyLoss(-M.getOxyLoss())
|
||||
if(holder.has_reagent("lexorin"))
|
||||
holder.remove_reagent("lexorin", 2)
|
||||
holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1308,10 +1308,10 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.getOxyLoss() && prob(40)) M.adjustOxyLoss(-1)
|
||||
if(M.getBruteLoss() && prob(40)) M.heal_organ_damage(1,0)
|
||||
if(M.getFireLoss() && prob(40)) M.heal_organ_damage(0,1)
|
||||
if(M.getToxLoss() && prob(40)) M.adjustToxLoss(-1)
|
||||
if(M.getOxyLoss() && prob(40)) M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(M.getBruteLoss() && prob(40)) M.heal_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
if(M.getFireLoss() && prob(40)) M.heal_organ_damage(0,1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(M.getToxLoss() && prob(40)) M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1394,7 +1394,7 @@ datum
|
||||
M.AdjustWeakened(-1)
|
||||
if(holder.has_reagent("mindbreaker"))
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
M.hallucination = max(0, M.hallucination - 10*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(prob(60)) M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
@@ -1410,7 +1410,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness = max(M.jitteriness-5,0)
|
||||
if(prob(80)) M.adjustBrainLoss(1)
|
||||
if(prob(80)) M.adjustBrainLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(prob(50)) M.drowsyness = max(M.drowsyness, 3)
|
||||
if(prob(10)) M.emote("drool")
|
||||
..()
|
||||
@@ -1425,7 +1425,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation = max(M.radiation-3,0)
|
||||
M.radiation = max(M.radiation-3*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1440,10 +1440,10 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation = max(M.radiation-7,0)
|
||||
M.adjustToxLoss(-1)
|
||||
M.radiation = max(M.radiation-7*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(prob(15))
|
||||
M.take_organ_damage(1, 0)
|
||||
M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1456,7 +1456,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustBrainLoss(-3)
|
||||
M.adjustBrainLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1488,7 +1488,7 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
M.heal_organ_damage(2,0)
|
||||
M.heal_organ_damage(2*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1502,7 +1502,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(5)) M.emote(pick("twitch","blink_r","shiver"))
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1549,7 +1549,6 @@ datum
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)//no more mr. panacea
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1562,7 +1561,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1575,8 +1574,8 @@ datum
|
||||
on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.status_flags |= FAKEDEATH
|
||||
M.adjustOxyLoss(0.5)
|
||||
M.adjustToxLoss(0.5)
|
||||
M.adjustOxyLoss(0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.Weaken(10)
|
||||
M.silent = max(M.silent, 10)
|
||||
M.tod = worldtime2text()
|
||||
@@ -1710,7 +1709,7 @@ datum
|
||||
M.sleeping += 1
|
||||
if(61 to INFINITY)
|
||||
M.sleeping += 1
|
||||
M.adjustToxLoss(data - 50)
|
||||
M.adjustToxLoss((data - 50) * REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2144,6 +2143,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
M.druggy = max(M.druggy, 30)
|
||||
if(!data) data = 1
|
||||
|
||||
switch(data)
|
||||
if(1 to 5)
|
||||
if (!M.stuttering) M.stuttering = 1
|
||||
|
||||
@@ -237,6 +237,14 @@
|
||||
..()
|
||||
reagents.add_reagent("wine", 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
|
||||
name = "Jailbreaker Verte"
|
||||
desc = "Twenty-fourth century Green Fairy, one sip of this and you just know you're gonna have a good time."
|
||||
icon_state = "absinthebottle"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("absinthe", 100)
|
||||
|
||||
//////////////////////////JUICES AND STUFF ///////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice
|
||||
|
||||
@@ -259,6 +259,16 @@
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/donor
|
||||
name = "Donor Candy"
|
||||
desc = "A little treat for blood donors."
|
||||
trash = /obj/item/trash/candy
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
|
||||
name = "candy corn"
|
||||
desc = "It's a handful of candy corn. Can be stored in a detective's hat."
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
name = "hypospray"
|
||||
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
|
||||
icon = 'icons/obj/syringe.dmi'
|
||||
item_state = "hypo"
|
||||
item_state = "hypo1"
|
||||
icon_state = "hypo"
|
||||
var/original_icon_state = "hypo"
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 30
|
||||
possible_transfer_amounts = null
|
||||
@@ -54,6 +55,7 @@
|
||||
name = "autoinjector"
|
||||
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel."
|
||||
icon_state = "autoinjector"
|
||||
original_icon_state = "autoinjector"
|
||||
item_state = "autoinjector"
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 5
|
||||
@@ -72,9 +74,9 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
|
||||
if(reagents.total_volume > 0)
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
icon_state = "[original_icon_state]1"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]0"
|
||||
icon_state = "[original_icon_state]0"
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine()
|
||||
..()
|
||||
|
||||
@@ -176,3 +176,22 @@
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("bicaridine", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/happy
|
||||
name = "Happy pill"
|
||||
desc = "Happy happy joy joy!"
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("space_drugs", 15)
|
||||
reagents.add_reagent("sugar", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/zoom
|
||||
name = "Zoom pill"
|
||||
desc = "Zoooom!"
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("impedrezene", 10)
|
||||
reagents.add_reagent("synaptizine", 5)
|
||||
reagents.add_reagent("hyperzine", 5)
|
||||
|
||||
Reference in New Issue
Block a user