mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into item_state
Conflicts: code/modules/clothing/clothing.dm
This commit is contained in:
@@ -41,7 +41,7 @@
|
||||
/datum/uplink_item/item/ammo/a556/ap
|
||||
name = "10rnd Rifle Magazine (5.56mm AP)"
|
||||
path = /obj/item/ammo_magazine/a556/ap
|
||||
|
||||
/*
|
||||
/datum/uplink_item/item/ammo/a556m
|
||||
name = "20rnd Rifle Magazine (5.56mm)"
|
||||
path = /obj/item/ammo_magazine/a556m
|
||||
@@ -51,7 +51,7 @@
|
||||
name = "20rnd Rifle Magazine (5.56mm AP)"
|
||||
path = /obj/item/ammo_magazine/a556m/ap
|
||||
item_cost = 4
|
||||
|
||||
*/
|
||||
/datum/uplink_item/item/ammo/c762
|
||||
name = "20rnd Rifle Magazine (7.62mm)"
|
||||
path = /obj/item/ammo_magazine/c762
|
||||
|
||||
@@ -60,11 +60,11 @@
|
||||
item_cost = 7
|
||||
path = /obj/item/weapon/gun/projectile/automatic/sts35
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/bullpuprifle
|
||||
/*/datum/uplink_item/item/visible_weapons/bullpuprifle
|
||||
name = "Assault Rifle (5.56mm)"
|
||||
item_cost = 7
|
||||
path = /obj/item/weapon/gun/projectile/automatic/carbine
|
||||
|
||||
*/
|
||||
/datum/uplink_item/item/visible_weapons/combatshotgun
|
||||
name = "Combat Shotgun"
|
||||
item_cost = 7
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/power/changeling/absorb_dna
|
||||
name = "Absorb DNA"
|
||||
desc = "Permits us to syphon the DNA from a human. They become one with us, and we become stronger if they were of our kind."
|
||||
ability_icon_state = "ling_absorb_dna"
|
||||
genomecost = 0
|
||||
verbpath = /mob/proc/changeling_absorb_dna
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "We reform one of our arms into a deadly blade."
|
||||
helptext = "We may retract our armblade by dropping it. It can deflect projectiles."
|
||||
enhancedtext = "The blade will have armor peneratration."
|
||||
ability_icon_state = "ling_armblade"
|
||||
genomecost = 2
|
||||
verbpath = /mob/proc/changeling_arm_blade
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
name = "Organic Space Suit"
|
||||
desc = "We grow an organic suit to protect ourselves from space exposure."
|
||||
helptext = "To remove the suit, use the ability again."
|
||||
ability_icon_state = "ling_space_suit"
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_spacesuit
|
||||
|
||||
/mob/proc/changeling_spacesuit()
|
||||
set category = "Changeling"
|
||||
set name = "Organic Space Suit (20)"
|
||||
|
||||
if(changeling_generic_armor(/obj/item/clothing/suit/space/changeling,/obj/item/clothing/head/helmet/space/changeling))
|
||||
return 1
|
||||
return 0
|
||||
@@ -17,6 +17,7 @@
|
||||
name = "Chitinous Spacearmor"
|
||||
desc = "We turn our skin into tough chitin to protect us from damage and space exposure."
|
||||
helptext = "To remove the armor, use the ability again."
|
||||
ability_icon_state = "ling_armor"
|
||||
genomecost = 3
|
||||
verbpath = /mob/proc/changeling_spacearmor
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
name = "Augmented Eyesight"
|
||||
desc = "Creates heat receptors in our eyes and dramatically increases light sensing ability."
|
||||
helptext = "Grants us night vision and thermal vision. It may be toggled on or off. We will become more vulnerable to flash-based devices while active."
|
||||
ability_icon_state = "ling_augmented_eyesight"
|
||||
genomecost = 2
|
||||
var/active = 0 //Whether or not vision is enhanced
|
||||
verbpath = /mob/proc/changeling_augmented_eyesight
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
helptext = "We can shock someone by grabbing them and using this ability, or using the ability with an empty hand and touching them. \
|
||||
Shocking someone costs ten chemicals per use."
|
||||
enhancedtext = "Shocking biologicals without grabbing only requires five chemicals, and has more disabling power."
|
||||
ability_icon_state = "ling_bioelectrogenesis"
|
||||
genomecost = 2
|
||||
verbpath = /mob/living/carbon/human/proc/changeling_bioelectrogenesis
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Blind Sting"
|
||||
desc = "We silently sting a human, completely blinding them for a short time."
|
||||
enhancedtext = "Duration is extended."
|
||||
ability_icon_state = " ling_sting_blind"
|
||||
genomecost = 2
|
||||
allowduringlesserform = 1
|
||||
verbpath = /mob/proc/changeling_blind_sting
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "We evolve the ability to shoot our stingers at humans, with some preperation."
|
||||
helptext = "Allows us to prepare the next sting to have a range of two tiles."
|
||||
enhancedtext = "The range is extended to five tiles."
|
||||
ability_icon_state = "ling_sting_boost_range"
|
||||
genomecost = 1
|
||||
allowduringlesserform = 1
|
||||
verbpath = /mob/proc/changeling_boost_range
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing. Has \
|
||||
a three minute cooldown between uses."
|
||||
enhancedtext = "Increases the amount of chemicals injected."
|
||||
ability_icon_state = "ling_sting_cryo"
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_cryo_sting
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Deaf Sting"
|
||||
desc = "We silently sting a human, completely deafening them for a short time."
|
||||
enhancedtext = "Deafness duration is extended."
|
||||
ability_icon_state = "ling_sting_deafen"
|
||||
genomecost = 1
|
||||
allowduringlesserform = 1
|
||||
verbpath = /mob/proc/changeling_deaf_sting
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/power/changeling/DeathSting
|
||||
name = "Death Sting"
|
||||
desc = "We silently sting a human, filling him with potent chemicals. His rapid death is all but assured."
|
||||
ability_icon_state = "ling_sting_death"
|
||||
genomecost = 10
|
||||
verbpath = /mob/proc/changeling_DEATHsting
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
implicate ourselves."
|
||||
helptext = "The toxin takes effect in about two minutes. The sting has a three minute cooldown between uses."
|
||||
enhancedtext = "The toxic damage is doubled."
|
||||
ability_icon_state = "ling_sting_del_toxin"
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_delayed_toxic_sting
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Digital Camoflauge"
|
||||
desc = "We evolve the ability to distort our form and proprtions, defeating common altgorthms used to detect lifeforms on cameras."
|
||||
helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us.. uncanny. We must constantly expend chemicals to maintain our form like this."
|
||||
ability_icon_state = "ling_digital_camo"
|
||||
genomecost = 1
|
||||
allowduringlesserform = 1
|
||||
verbpath = /mob/proc/changeling_digitalcamo
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "We discreetly evolve a finger to be able to send a small electric charge. \
|
||||
We can open most electrical locks, but it will be obvious when we do so."
|
||||
helptext = "Use the ability, then touch something that utilizes an electrical locking system, to open it. Each use costs 10 chemicals."
|
||||
ability_icon_state = "ling_electric_lockpick"
|
||||
genomecost = 3
|
||||
verbpath = /mob/proc/changeling_electric_lockpick
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
helptext = "Lowers the maximum health of the victim for a few minutes. This sting will also warn them of this. Has a \
|
||||
five minute coodown between uses."
|
||||
enhancedtext = "Maximum health is lowered further."
|
||||
ability_icon_state = "ling_sting_enfeeble"
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_enfeebling_string
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "We evolve additional sacs of adrenaline throughout our body."
|
||||
helptext = "We can instantly recover from stuns and reduce the effect of future stuns, but we will suffer toxicity in the long term. Can be used while unconscious."
|
||||
enhancedtext = "Constant recovery from stuns for thirty seconds."
|
||||
ability_icon_state = "ling_epinepherine_overdose"
|
||||
genomecost = 2
|
||||
verbpath = /mob/proc/changeling_epinephrine_overdose
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Extract DNA"
|
||||
desc = "We stealthily sting a target and extract the DNA from them."
|
||||
helptext = "Will give you the DNA of your target, allowing you to transform into them. Does not count towards absorb objectives."
|
||||
ability_icon_state = "ling_sting_extract"
|
||||
genomecost = 0
|
||||
allowduringlesserform = 1
|
||||
verbpath = /mob/proc/changeling_extract_dna_sting
|
||||
|
||||
@@ -17,6 +17,7 @@ var/global/list/changeling_fabricated_clothing = list(
|
||||
We cannot be relieved of this clothing by others."
|
||||
helptext = "The disguise we create offers no defensive ability. Each equipment slot that is empty will be filled with fabricated equipment. \
|
||||
To remove our new fabricated clothing, use this ability again."
|
||||
ability_icon_state = "ling_fabricate_clothing"
|
||||
genomecost = 2
|
||||
verbpath = /mob/proc/changeling_fabricate_clothing
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Regenerative Stasis"
|
||||
desc = "We become weakened to a death-like state, where we will rise again from death."
|
||||
helptext = "Can be used before or after death. Duration varies greatly."
|
||||
ability_icon_state = "ling_regenerative_stasis"
|
||||
genomecost = 0
|
||||
allowduringlesserform = 1
|
||||
verbpath = /mob/proc/changeling_fakedeath
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "Begins a slow rengeration of our form. Does not effect stuns or chemicals."
|
||||
helptext = "Can be used while unconscious."
|
||||
enhancedtext = "Healing is twice as effective."
|
||||
ability_icon_state = "ling_fleshmend"
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_fleshmend
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Mimic Voice"
|
||||
desc = "We shape our vocal glands to sound like a desired voice."
|
||||
helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this"
|
||||
ability_icon_state = "ling_mimic_voice"
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_mimicvoice
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "Expels impurifications from our form; curing diseases, removing toxins, chemicals, radiation, and resetting our genetic code completely."
|
||||
helptext = "Can be used while unconscious. This will also purge any reagents inside ourselves, both harmful and beneficial."
|
||||
enhancedtext = "We heal more toxins."
|
||||
ability_icon_state = "ling_anatomic_panacea"
|
||||
genomecost = 1
|
||||
verbpath = /mob/proc/changeling_panacea
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
helptext = "This will heal a significant amount of brute, fire, oxy, clone, and brain damage, and heal broken bones, internal bleeding, low blood, \
|
||||
and organ damage. The process is fast, but anyone who sees us do this will likely realize we are not what we seem."
|
||||
enhancedtext = "Healing increased to heal up to maximum health."
|
||||
ability_icon_state = "ling_rapid_regeneration"
|
||||
genomecost = 2
|
||||
verbpath = /mob/proc/changeling_rapid_regen
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Recursive Enhancement"
|
||||
desc = "We cause our next ability use to have increased or additional effects."
|
||||
helptext = "To check the effects for each ability, check the blue text underneath the ability in the evolution menu."
|
||||
ability_icon_state = "ling_recursive_enhancement"
|
||||
genomecost = 3
|
||||
verbpath = /mob/proc/changeling_recursive_enhancement
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "Our lungs and vocal chords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded biologicals and synthetics."
|
||||
helptext = "Lights are blown, organics are disoriented, and synthetics act as if they were flashed."
|
||||
enhancedtext = "Range is doubled."
|
||||
ability_icon_state = "ling_resonant_shriek"
|
||||
genomecost = 2
|
||||
verbpath = /mob/proc/changeling_resonant_shriek
|
||||
|
||||
@@ -11,6 +12,7 @@
|
||||
desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics."
|
||||
helptext = "Creates a moderate sized EMP."
|
||||
enhancedtext = "Range is doubled."
|
||||
ability_icon_state = "ling_dissonant_shriek"
|
||||
genomecost = 2
|
||||
verbpath = /mob/proc/changeling_dissonant_shriek
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "We silently sting a human, completely silencing them for a short time."
|
||||
helptext = "Does not provide a warning to a victim that they have been stung, until they try to speak and cannot."
|
||||
enhancedtext = "Silence duration is extended."
|
||||
ability_icon_state = "ling_sting_mute"
|
||||
genomecost = 2
|
||||
allowduringlesserform = 1
|
||||
verbpath = /mob/proc/changeling_silence_sting
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/power/changeling/transform
|
||||
name = "Transform"
|
||||
desc = "We take on the apperance and voice of one we have absorbed."
|
||||
ability_icon_state = "ling_transform"
|
||||
genomecost = 0
|
||||
verbpath = /mob/proc/changeling_transform
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
name = "Transformation Sting"
|
||||
desc = "We silently sting a human, injecting a retrovirus that forces them to transform into another."
|
||||
helptext = "Does not provide a warning to others. The victim will transform much like a changeling would."
|
||||
ability_icon_state = "ling_sting_transform"
|
||||
genomecost = 3
|
||||
verbpath = /mob/proc/changeling_transformation_sting
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
We are undetectable, so long as we move slowly.(Toggle)"
|
||||
helptext = "Running, and performing most acts will reveal us. Our chemical regeneration is halted while we are hidden."
|
||||
enhancedtext = "True invisiblity while cloaked."
|
||||
ability_icon_state = "ling_camoflage"
|
||||
genomecost = 3
|
||||
verbpath = /mob/proc/changeling_visible_camouflage
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/regen_rate = 50 // 200 seconds to full
|
||||
var/energy_delta = 0 // How much we're gaining (or perhaps losing) every process().
|
||||
var/mob/living/wearer = null // Reference to the mob wearing the core.
|
||||
var/instability_modifer = 1.0 // Multiplier on how much instability is added.
|
||||
var/instability_modifer = 0.8 // Multiplier on how much instability is added.
|
||||
var/list/spells = list() // This contains the buttons used to make spells in the user's hand.
|
||||
var/list/appearances = list( // Assoc list containing possible icon_states that the wiz can change the core to.
|
||||
"default" = "technomancer_core",
|
||||
@@ -217,6 +217,7 @@
|
||||
energy = 13000
|
||||
max_energy = 13000
|
||||
regen_rate = 35 //~371 seconds to full, 118 seconds to full at 50 instability (rate of 110)
|
||||
instability_modifer = 1.2
|
||||
|
||||
/obj/item/weapon/technomancer_core/unstable/regenerate()
|
||||
var/instability_bonus = 0
|
||||
@@ -237,6 +238,7 @@
|
||||
max_energy = 7000
|
||||
regen_rate = 70 //100 seconds to full
|
||||
slowdown = -1
|
||||
instability_modifer = 0.9
|
||||
|
||||
//Big batteries but slow regen, buying energy spells is highly recommended.
|
||||
/obj/item/weapon/technomancer_core/bulky
|
||||
@@ -248,6 +250,7 @@
|
||||
max_energy = 20000
|
||||
regen_rate = 25 //800 seconds to full
|
||||
slowdown = 1
|
||||
instability_modifer = 1.0
|
||||
|
||||
// Using this can result in abilities costing less energy. If you're lucky.
|
||||
/obj/item/weapon/technomancer_core/recycling
|
||||
@@ -257,6 +260,7 @@
|
||||
energy = 12000
|
||||
max_energy = 12000
|
||||
regen_rate = 40 //300 seconds to full
|
||||
instability_modifer = 0.6
|
||||
|
||||
/obj/item/weapon/technomancer_core/recycling/pay_energy(amount)
|
||||
..()
|
||||
@@ -276,6 +280,7 @@
|
||||
max_energy = 8000
|
||||
regen_rate = 35 //228 seconds to full
|
||||
max_summons = 40
|
||||
instability_modifer = 1.0
|
||||
|
||||
/obj/item/weapon/technomancer_core/summoner/pay_dues()
|
||||
if(summoned_mobs.len)
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
name = "Manipulation Core"
|
||||
desc = "The default core that you most likely already have. This is here in-case you change your mind after buying \
|
||||
another core, don't forget to refund the old core. This has a capacity of 10,000 units of energy, and recharges at a \
|
||||
rate of 50 units."
|
||||
rate of 50 units. It also reduces incoming instability from functions by 20%."
|
||||
cost = 100
|
||||
obj_path = /obj/item/weapon/technomancer_core
|
||||
|
||||
/datum/technomancer/equipment/rapid_core
|
||||
name = "Rapid Core"
|
||||
desc = "A core optimized for passive regeneration, however at the cost of capacity. Has a capacity of 7,000 units of energy, and \
|
||||
recharges at a rate of 70 units."
|
||||
recharges at a rate of 70 units. Complex gravatics and force manipulation allows the wearer to also run slightly faster, and \
|
||||
reduces incoming instability from functions by 10%."
|
||||
cost = 150
|
||||
obj_path = /obj/item/weapon/technomancer_core/rapid
|
||||
|
||||
@@ -17,7 +18,8 @@
|
||||
name = "Bulky Core"
|
||||
desc = "This core has very large capacitors, however it also has a subpar fractal reactor. The user is recommended to \
|
||||
purchase one or more energy-generating Functions as well if using this core. Has a capacity of 20,000 units of energy, \
|
||||
and recharges at a rate of 25 units."
|
||||
and recharges at a rate of 25 units. The intense weight of the core unfortunately can cause the wear to move slightly slower, \
|
||||
and the closeness of the capacitors causes a slight increase in incoming instability by 10%."
|
||||
cost = 150
|
||||
obj_path = /obj/item/weapon/technomancer_core/bulky
|
||||
|
||||
@@ -26,10 +28,28 @@
|
||||
desc = "This core feeds off unstable energies around the user in addition to a fractal reactor. This means that it performs \
|
||||
better as the user has more instability, which could prove dangerous to the inexperienced or unprepared. Has a capacity of 13,000 \
|
||||
units of energy, and recharges at a rate of 35 units at no instability, and approximately 110 units when within the \
|
||||
'yellow zone' of instability."
|
||||
'yellow zone' of instability. Incoming instability is also amplified by 30%, due to the nature of this core."
|
||||
cost = 150
|
||||
obj_path = /obj/item/weapon/technomancer_core/unstable
|
||||
|
||||
/datum/technomancer/equipment/recycling
|
||||
name = "Recycling Core"
|
||||
desc = "This core is optimized for energy efficency, being able to sometimes recover energy that would have been lost with other \
|
||||
cores. The focus on efficency also makes instability less of an issue, as incoming instability from functions are reduced by \
|
||||
40%. The capacitor is also slightly better, holding 12,000 units of energy, however the reactor is slower to recharge, at a rate \
|
||||
of 40 units."
|
||||
cost = 150
|
||||
obj_path = /obj/item/weapon/technomancer_core/recycling
|
||||
|
||||
/datum/technomancer/equipment/summoning
|
||||
name = "Summoning Core"
|
||||
desc = "A unique type of core, this one sacrifices other characteristics in order to optimize it for the purposes teleporting \
|
||||
entities from vast distances, and keeping them there. Wearers of this core can maintain up to 30 summons at once, and the energy \
|
||||
demand for maintaining summons is severely reduced. This comes at the price of capcitors that can only hold 8,000 units of energy, \
|
||||
a recharging rate of 35 energy, and no shielding from instability."
|
||||
cost = 150
|
||||
obj_path = /obj/item/weapon/technomancer_core/summoner
|
||||
|
||||
/datum/technomancer/equipment/hypo_belt
|
||||
name = "Hypo Belt"
|
||||
desc = "A medical belt designed to carry autoinjectors and other medical equipment. Comes with one of each hypo."
|
||||
|
||||
@@ -110,8 +110,9 @@
|
||||
// Parameters: 1 (amount - how much instability to give)
|
||||
// Description: Use this to quickly add or subtract instability from the caster of the spell. Owner is set by New().
|
||||
/obj/item/weapon/spell/proc/adjust_instability(var/amount)
|
||||
if(!owner)
|
||||
if(!owner || !core)
|
||||
return 0
|
||||
amount = round(amount * core.instability_modifer, 0.1)
|
||||
owner.adjust_instability(amount)
|
||||
|
||||
// Proc: New()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Ends most on-going effects caused by another Technomancer function on the target. Useful if you are worried about \
|
||||
hitting an ally with a deterimental function, if your opponent has similar capabilities to you, or if you're tired of Instability \
|
||||
plaguing you."
|
||||
cost = 75
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/dispel
|
||||
ability_icon_state = "tech_dispel"
|
||||
|
||||
@@ -19,4 +19,5 @@
|
||||
var/mob/living/target = hit_atom
|
||||
for(var/obj/item/weapon/inserted_spell/I in target)
|
||||
I.on_expire(dispelled = 1)
|
||||
user.adjust_instability(10)
|
||||
user.adjust_instability(10)
|
||||
qdel(src)
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/technomancer/spell/mend_burns
|
||||
name = "Mend Burns"
|
||||
desc = "Heals minor burns, such as from exposure to flame, electric shock, or lasers."
|
||||
cost = 120
|
||||
desc = "Heals minor burns, such as from exposure to flame, electric shock, or lasers. \
|
||||
Instability is split between the target and technomancer, if seperate."
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/insert/mend_burns
|
||||
ability_icon_state = "tech_mendburns"
|
||||
|
||||
@@ -24,4 +25,4 @@
|
||||
H.adjust_instability(0.5)
|
||||
origin.adjust_instability(0.5)
|
||||
sleep(10)
|
||||
qdel(src)
|
||||
on_expire()
|
||||
31
code/game/gamemodes/technomancer/spells/insert/mend_metal.dm
Normal file
31
code/game/gamemodes/technomancer/spells/insert/mend_metal.dm
Normal file
@@ -0,0 +1,31 @@
|
||||
/datum/technomancer/spell/mend_metal
|
||||
name = "Mend Metal"
|
||||
desc = "Restores integrity to external robotic components. Instability is split between the target and technomancer, if seperate."
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/insert/mend_metal
|
||||
ability_icon_state = "tech_mendwounds"
|
||||
|
||||
/obj/item/weapon/spell/insert/mend_metal
|
||||
name = "mend metal"
|
||||
desc = "A roboticist is now obsolete."
|
||||
icon_state = "mend_wounds"
|
||||
cast_methods = CAST_MELEE
|
||||
aspect = ASPECT_BIOMED
|
||||
light_color = "#FF5C5C"
|
||||
inserting = /obj/item/weapon/inserted_spell/mend_metal
|
||||
|
||||
/obj/item/weapon/inserted_spell/mend_metal/on_insert()
|
||||
spawn(1)
|
||||
if(ishuman(host))
|
||||
var/mob/living/carbon/human/H = host
|
||||
for(var/i = 0, i<25,i++)
|
||||
if(H)
|
||||
for(var/obj/item/organ/external/O in H.organs)
|
||||
if(O.robotic < ORGAN_ROBOT) // Robot parts only.
|
||||
continue
|
||||
O.heal_damage(1, 0, internal = 1, robo_repair = 1)
|
||||
|
||||
H.adjust_instability(0.5)
|
||||
origin.adjust_instability(0.5)
|
||||
sleep(10)
|
||||
on_expire()
|
||||
@@ -0,0 +1,31 @@
|
||||
/datum/technomancer/spell/mend_organs
|
||||
name = "Mend Organs"
|
||||
desc = "Heals the target's internal organs, both organic and robotic. Instability is split between the target \
|
||||
and technomancer, if seperate."
|
||||
cost = 75
|
||||
obj_path = /obj/item/weapon/spell/insert/mend_organs
|
||||
ability_icon_state = "tech_mendwounds"
|
||||
|
||||
/obj/item/weapon/spell/insert/mend_organs
|
||||
name = "mend organs"
|
||||
desc = "Now nobody will ever need surgery."
|
||||
icon_state = "mend_wounds"
|
||||
cast_methods = CAST_MELEE
|
||||
aspect = ASPECT_BIOMED
|
||||
light_color = "#FF5C5C"
|
||||
inserting = /obj/item/weapon/inserted_spell/mend_organs
|
||||
|
||||
/obj/item/weapon/inserted_spell/mend_organs/on_insert()
|
||||
spawn(1)
|
||||
if(ishuman(host))
|
||||
var/mob/living/carbon/human/H = host
|
||||
for(var/i = 0, i<25,i++)
|
||||
if(H)
|
||||
for(var/obj/item/organ/O in H.internal_organs)
|
||||
if(O.damage > 0)
|
||||
O.damage = max(O.damage - 0.2, 0)
|
||||
|
||||
H.adjust_instability(0.5)
|
||||
origin.adjust_instability(0.5)
|
||||
sleep(10)
|
||||
on_expire()
|
||||
32
code/game/gamemodes/technomancer/spells/insert/mend_wires.dm
Normal file
32
code/game/gamemodes/technomancer/spells/insert/mend_wires.dm
Normal file
@@ -0,0 +1,32 @@
|
||||
/datum/technomancer/spell/mend_wires
|
||||
name = "Mend Wires"
|
||||
desc = "Binds the internal wiring of robotic limbs and components over time. \
|
||||
Instability is split between the target and technomancer, if seperate."
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/insert/mend_wires
|
||||
ability_icon_state = "tech_mendwounds"
|
||||
|
||||
/obj/item/weapon/spell/insert/mend_wires
|
||||
name = "mend wires"
|
||||
desc = "A roboticist is now obsolete."
|
||||
icon_state = "mend_wounds"
|
||||
cast_methods = CAST_MELEE
|
||||
aspect = ASPECT_BIOMED
|
||||
light_color = "#FF5C5C"
|
||||
inserting = /obj/item/weapon/inserted_spell/mend_wires
|
||||
|
||||
/obj/item/weapon/inserted_spell/mend_wires/on_insert()
|
||||
spawn(1)
|
||||
if(ishuman(host))
|
||||
var/mob/living/carbon/human/H = host
|
||||
for(var/i = 0, i<25,i++)
|
||||
if(H)
|
||||
for(var/obj/item/organ/external/O in H.organs)
|
||||
if(O.robotic < ORGAN_ROBOT) // Robot parts only.
|
||||
continue
|
||||
O.heal_damage(0, 1, internal = 1, robo_repair = 1)
|
||||
|
||||
H.adjust_instability(0.5)
|
||||
origin.adjust_instability(0.5)
|
||||
sleep(10)
|
||||
on_expire()
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/technomancer/spell/mend_wounds
|
||||
name = "Mend Wounds"
|
||||
desc = "Heals minor wounds, such as cuts, bruises, and other non-lifethreatening injuries."
|
||||
cost = 120
|
||||
desc = "Heals minor wounds, such as cuts, bruises, and other non-lifethreatening injuries. \
|
||||
Instability is split between the target and technomancer, if seperate."
|
||||
cost = 50
|
||||
obj_path = /obj/item/weapon/spell/insert/mend_wounds
|
||||
ability_icon_state = "tech_mendwounds"
|
||||
|
||||
@@ -24,4 +25,4 @@
|
||||
H.adjust_instability(0.5)
|
||||
origin.adjust_instability(0.5)
|
||||
sleep(10)
|
||||
qdel(src)
|
||||
on_expire()
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/technomancer/spell/purify
|
||||
name = "Purify"
|
||||
desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, and such."
|
||||
cost = 100
|
||||
desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, and such. \
|
||||
Instability is split between the target and technomancer, if seperate."
|
||||
cost = 25
|
||||
obj_path = /obj/item/weapon/spell/insert/purify
|
||||
ability_icon_state = "tech_purify"
|
||||
|
||||
@@ -30,4 +31,4 @@
|
||||
H.adjust_instability(0.5)
|
||||
origin.adjust_instability(0.5)
|
||||
sleep(10)
|
||||
qdel(src)
|
||||
on_expire()
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
L.stat = CONSCIOUS //Note that if whatever killed them in the first place wasn't fixed, they're likely to die again.
|
||||
dead_mob_list -= H
|
||||
living_mob_list += H
|
||||
H.timeofdeath = null
|
||||
visible_message("<span class='danger'>\The [H]'s eyes open!</span>")
|
||||
user << "<span class='notice'>It's alive!</span>"
|
||||
owner.adjust_instability(100)
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks)
|
||||
minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks)
|
||||
|
||||
minimal_player_age = 3
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
|
||||
@@ -116,6 +116,7 @@
|
||||
minimal_access = list(access_medical, access_medical_equip, access_chemistry)
|
||||
alt_titles = list("Pharmacist")
|
||||
|
||||
minimal_player_age = 3
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
|
||||
@@ -831,6 +831,8 @@ About the new airlock wires panel:
|
||||
else
|
||||
spawn(0)
|
||||
close(1)
|
||||
else
|
||||
..()
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -48,14 +48,15 @@
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/device/pda,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/taperoll/engineering,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/device/robotanalyzer,
|
||||
/obj/item/weapon/material/minihoe,
|
||||
/obj/item/weapon/material/hatchet,
|
||||
/obj/item/device/analyzer/plant_analyzer,
|
||||
/obj/item/weapon/extinguisher/mini,
|
||||
/obj/item/device/flashlight/maglight
|
||||
/obj/item/device/flashlight/maglight,
|
||||
/obj/item/weapon/tape_roll,
|
||||
)
|
||||
|
||||
|
||||
@@ -98,6 +99,7 @@
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/device/pda,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/device/flashlight/pen,
|
||||
/obj/item/clothing/mask/surgical,
|
||||
@@ -141,7 +143,7 @@
|
||||
/obj/item/weapon/melee,
|
||||
/obj/item/clothing/accessory/badge,
|
||||
/obj/item/weapon/gun/projectile/sec,
|
||||
/obj/item/taperoll/police,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/weapon/gun/projectile/colt/detective
|
||||
)
|
||||
|
||||
@@ -175,7 +177,7 @@
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/device/radio/headset,
|
||||
/obj/item/clothing/gloves,
|
||||
/obj/item/taperoll/police,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/weapon/reagent_containers/spray/pepper,
|
||||
/obj/item/weapon/handcuffs,
|
||||
/obj/item/device/flash,
|
||||
@@ -245,6 +247,7 @@
|
||||
/obj/item/weapon/light/tube,
|
||||
/obj/item/weapon/flame/lighter,
|
||||
/obj/item/device/megaphone,
|
||||
/obj/item/taperoll,
|
||||
/obj/item/weapon/reagent_containers/spray,
|
||||
/obj/item/weapon/soap
|
||||
)
|
||||
@@ -35,13 +35,14 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt)
|
||||
if(bcell)
|
||||
if(bcell.checked_use(chrgdeductamt))
|
||||
return 1
|
||||
else
|
||||
status = 0
|
||||
update_icon()
|
||||
return 0
|
||||
if(status == 1) //Only deducts charge when it's on
|
||||
if(bcell)
|
||||
if(bcell.checked_use(chrgdeductamt))
|
||||
return 1
|
||||
else
|
||||
status = 0
|
||||
update_icon()
|
||||
return 0
|
||||
return null
|
||||
|
||||
/obj/item/weapon/melee/baton/update_icon()
|
||||
@@ -109,6 +110,7 @@
|
||||
user.Weaken(30)
|
||||
deductcharge(hitcost)
|
||||
return
|
||||
deductcharge(hitcost)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/baton/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
@@ -144,8 +146,6 @@
|
||||
target.stun_effect_act(stun, agony, hit_zone, src)
|
||||
msg_admin_attack("[key_name(user)] stunned [key_name(target)] with the [src].")
|
||||
|
||||
deductcharge(hitcost)
|
||||
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.forcesay(hit_appends)
|
||||
|
||||
@@ -42,12 +42,14 @@
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "welder"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/weapon/screwdriver,\
|
||||
/obj/item/weapon/wirecutters,\
|
||||
/obj/item/weapon/weldingtool,\
|
||||
/obj/item/weapon/crowbar,\
|
||||
/obj/item/weapon/wrench,\
|
||||
/obj/item/device/flashlight)
|
||||
return pick(/obj/item/weapon/screwdriver,
|
||||
/obj/item/weapon/wirecutters,
|
||||
/obj/item/weapon/weldingtool,
|
||||
/obj/item/weapon/weldingtool/largetank,
|
||||
/obj/item/weapon/crowbar,
|
||||
/obj/item/weapon/wrench,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/multitool)
|
||||
|
||||
|
||||
/obj/random/technology_scanner
|
||||
@@ -56,8 +58,8 @@
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "atmos"
|
||||
item_to_spawn()
|
||||
return pick(prob(5);/obj/item/device/t_scanner,\
|
||||
prob(2);/obj/item/device/radio,\
|
||||
return pick(prob(5);/obj/item/device/t_scanner,
|
||||
prob(2);/obj/item/device/radio,
|
||||
prob(5);/obj/item/device/analyzer)
|
||||
|
||||
|
||||
@@ -67,10 +69,9 @@
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cell"
|
||||
item_to_spawn()
|
||||
return pick(prob(10);/obj/item/weapon/cell/crap,\
|
||||
prob(40);/obj/item/weapon/cell,\
|
||||
prob(40);/obj/item/weapon/cell/high,\
|
||||
prob(9);/obj/item/weapon/cell/super,\
|
||||
return pick(prob(50);/obj/item/weapon/cell,
|
||||
prob(40);/obj/item/weapon/cell/high,
|
||||
prob(9);/obj/item/weapon/cell/super,
|
||||
prob(1);/obj/item/weapon/cell/hyper)
|
||||
|
||||
|
||||
@@ -80,9 +81,10 @@
|
||||
icon = 'icons/obj/assemblies/new_assemblies.dmi'
|
||||
icon_state = "signaller"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/device/assembly/igniter,\
|
||||
/obj/item/device/assembly/prox_sensor,\
|
||||
/obj/item/device/assembly/signaler,\
|
||||
return pick(/obj/item/device/assembly/igniter,
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/device/assembly/signaler,
|
||||
/obj/item/device/assembly/timer,
|
||||
/obj/item/device/multitool)
|
||||
|
||||
|
||||
@@ -92,9 +94,10 @@
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "red"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/storage/toolbox/mechanical,\
|
||||
prob(2);/obj/item/weapon/storage/toolbox/electrical,\
|
||||
prob(1);/obj/item/weapon/storage/toolbox/emergency)
|
||||
return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical,
|
||||
prob(6);/obj/item/weapon/storage/toolbox/electrical,
|
||||
prob(2);/obj/item/weapon/storage/toolbox/emergency,
|
||||
prob(1);/obj/item/weapon/storage/toolbox/syndicate)
|
||||
|
||||
|
||||
/obj/random/tech_supply
|
||||
@@ -102,41 +105,53 @@
|
||||
desc = "This is a random piece of technology supplies."
|
||||
icon = 'icons/obj/power.dmi'
|
||||
icon_state = "cell"
|
||||
spawn_nothing_percentage = 50
|
||||
spawn_nothing_percentage = 25
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/random/powercell,\
|
||||
prob(2);/obj/random/technology_scanner,\
|
||||
prob(1);/obj/item/weapon/packageWrap,\
|
||||
prob(2);/obj/random/bomb_supply,\
|
||||
prob(1);/obj/item/weapon/extinguisher,\
|
||||
prob(1);/obj/item/clothing/gloves/fyellow,\
|
||||
prob(3);/obj/item/stack/cable_coil/random,\
|
||||
prob(2);/obj/random/toolbox,\
|
||||
prob(2);/obj/item/weapon/storage/belt/utility,\
|
||||
prob(5);/obj/random/tool,\
|
||||
prob(2);/obj/item/weapon/tape_roll)
|
||||
return pick(prob(3);/obj/random/powercell,
|
||||
prob(2);/obj/random/technology_scanner,
|
||||
prob(1);/obj/item/weapon/packageWrap,
|
||||
prob(2);/obj/random/bomb_supply,
|
||||
prob(1);/obj/item/weapon/extinguisher,
|
||||
prob(1);/obj/item/clothing/gloves/fyellow,
|
||||
prob(3);/obj/item/stack/cable_coil/random,
|
||||
prob(2);/obj/random/toolbox,
|
||||
prob(2);/obj/item/weapon/storage/belt/utility,
|
||||
prob(1);/obj/item/weapon/storage/belt/utility/full,
|
||||
prob(5);/obj/random/tool,
|
||||
prob(2);/obj/item/weapon/tape_roll,
|
||||
prob(2);/obj/item/taperoll/engineering,
|
||||
prob(1);/obj/item/taperoll/atmos,
|
||||
prob(1);/obj/item/device/flashlight/maglight)
|
||||
|
||||
/obj/random/medical
|
||||
name = "Random Medicine"
|
||||
desc = "This is a random medical item."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "brutepack"
|
||||
spawn_nothing_percentage = 25
|
||||
spawn_nothing_percentage = 12.5
|
||||
item_to_spawn()
|
||||
return pick(prob(4);/obj/item/stack/medical/bruise_pack,\
|
||||
prob(4);/obj/item/stack/medical/ointment,\
|
||||
prob(2);/obj/item/stack/medical/advanced/bruise_pack,\
|
||||
prob(2);/obj/item/stack/medical/advanced/ointment,\
|
||||
prob(1);/obj/item/stack/medical/splint,\
|
||||
prob(2);/obj/item/bodybag,\
|
||||
prob(1);/obj/item/bodybag/cryobag,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/kelotane,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/antitox,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/tramadol,\
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/antitoxin,\
|
||||
prob(1);/obj/item/weapon/reagent_containers/syringe/antiviral,\
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/inaprovaline,\
|
||||
prob(1);/obj/item/stack/nanopaste)
|
||||
return pick(prob(8);/obj/item/stack/medical/bruise_pack,
|
||||
prob(8);/obj/item/stack/medical/ointment,
|
||||
prob(4);/obj/item/stack/medical/advanced/bruise_pack,
|
||||
prob(4);/obj/item/stack/medical/advanced/ointment,
|
||||
prob(2);/obj/item/stack/medical/splint,
|
||||
prob(4);/obj/item/bodybag,
|
||||
prob(2);/obj/item/bodybag/cryobag,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/kelotane,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/dylovene,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||
prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin,
|
||||
prob(1);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||
prob(0.2);/obj/item/weapon/storage/pill_bottle/dermaline,
|
||||
prob(0.2);/obj/item/weapon/storage/pill_bottle/dexalin_plus,
|
||||
prob(0.2);/obj/item/weapon/storage/pill_bottle/bicaridine,
|
||||
prob(4);/obj/item/weapon/reagent_containers/syringe/antitoxin,
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/antiviral,
|
||||
prob(4);/obj/item/weapon/reagent_containers/syringe/inaprovaline,
|
||||
prob(4);/obj/item/weapon/reagent_containers/hypospray/autoinjector,
|
||||
prob(0.1);/obj/item/weapon/reagent_containers/hypospray,
|
||||
prob(1);/obj/item/device/healthanalyzer,
|
||||
prob(2);/obj/item/stack/nanopaste)
|
||||
|
||||
|
||||
/obj/random/firstaid
|
||||
@@ -145,10 +160,10 @@
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "firstaid"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/storage/firstaid/regular,\
|
||||
prob(2);/obj/item/weapon/storage/firstaid/toxin,\
|
||||
prob(2);/obj/item/weapon/storage/firstaid/o2,\
|
||||
prob(1);/obj/item/weapon/storage/firstaid/adv,\
|
||||
return pick(prob(3);/obj/item/weapon/storage/firstaid/regular,
|
||||
prob(2);/obj/item/weapon/storage/firstaid/toxin,
|
||||
prob(2);/obj/item/weapon/storage/firstaid/o2,
|
||||
prob(1);/obj/item/weapon/storage/firstaid/adv,
|
||||
prob(2);/obj/item/weapon/storage/firstaid/fire)
|
||||
|
||||
|
||||
@@ -159,17 +174,22 @@
|
||||
icon_state = "purplecomb"
|
||||
spawn_nothing_percentage = 50
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/storage/pill_bottle/tramadol,\
|
||||
prob(4);/obj/item/weapon/haircomb,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/happy,\
|
||||
prob(2);/obj/item/weapon/storage/pill_bottle/zoom,\
|
||||
prob(5);/obj/item/weapon/contraband/poster,\
|
||||
prob(2);/obj/item/weapon/material/butterfly,\
|
||||
prob(3);/obj/item/weapon/material/butterflyblade,\
|
||||
prob(3);/obj/item/weapon/material/butterflyhandle,\
|
||||
prob(3);/obj/item/weapon/material/wirerod,\
|
||||
prob(1);/obj/item/weapon/material/butterfly/switchblade,\
|
||||
prob(1);/obj/item/weapon/reagent_containers/syringe/drugs)
|
||||
return pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol,
|
||||
prob(8);/obj/item/weapon/haircomb,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/happy,
|
||||
prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
|
||||
prob(10);/obj/item/weapon/contraband/poster,
|
||||
prob(4);/obj/item/weapon/material/butterfly,
|
||||
prob(6);/obj/item/weapon/material/butterflyblade,
|
||||
prob(6);/obj/item/weapon/material/butterflyhandle,
|
||||
prob(6);/obj/item/weapon/material/wirerod,
|
||||
prob(2);/obj/item/weapon/material/butterfly/switchblade,
|
||||
prob(2);/obj/item/weapon/material/knuckledusters,
|
||||
prob(1);/obj/item/weapon/material/hatchet/tacknife,
|
||||
prob(0.5);/obj/item/weapon/beartrap,
|
||||
prob(1);/obj/item/weapon/handcuffs,
|
||||
prob(1);/obj/item/weapon/legcuffs,
|
||||
prob(2);/obj/item/weapon/reagent_containers/syringe/drugs)
|
||||
|
||||
|
||||
/obj/random/energy
|
||||
@@ -178,9 +198,8 @@
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "energykill100"
|
||||
item_to_spawn()
|
||||
return pick(prob(2);/obj/item/weapon/gun/energy/laser,\
|
||||
prob(2);/obj/item/weapon/gun/energy/gun,\
|
||||
prob(1);/obj/item/weapon/gun/energy/stunrevolver)
|
||||
return pick(prob(2);/obj/item/weapon/gun/energy/laser,
|
||||
prob(2);/obj/item/weapon/gun/energy/gun)
|
||||
|
||||
/obj/random/projectile
|
||||
name = "Random Projectile Weapon"
|
||||
@@ -188,8 +207,8 @@
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "revolver"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,\
|
||||
prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,\
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,
|
||||
prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,
|
||||
prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat)
|
||||
|
||||
/obj/random/handgun
|
||||
@@ -198,7 +217,7 @@
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "secgundark"
|
||||
item_to_spawn()
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/sec,\
|
||||
return pick(prob(3);/obj/item/weapon/gun/projectile/sec,
|
||||
prob(1);/obj/item/weapon/gun/projectile/sec/wood)
|
||||
|
||||
|
||||
@@ -208,14 +227,14 @@
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
icon_state = "45-10"
|
||||
item_to_spawn()
|
||||
return pick(prob(6);/obj/item/weapon/storage/box/beanbags,\
|
||||
prob(2);/obj/item/weapon/storage/box/shotgunammo,\
|
||||
prob(4);/obj/item/weapon/storage/box/shotgunshells,\
|
||||
prob(1);/obj/item/weapon/storage/box/stunshells,\
|
||||
prob(2);/obj/item/ammo_magazine/c45m,\
|
||||
prob(4);/obj/item/ammo_magazine/c45m/rubber,\
|
||||
prob(4);/obj/item/ammo_magazine/c45m/flash,\
|
||||
prob(2);/obj/item/ammo_magazine/mc9mmt,\
|
||||
return pick(prob(6);/obj/item/weapon/storage/box/beanbags,
|
||||
prob(2);/obj/item/weapon/storage/box/shotgunammo,
|
||||
prob(4);/obj/item/weapon/storage/box/shotgunshells,
|
||||
prob(1);/obj/item/weapon/storage/box/stunshells,
|
||||
prob(2);/obj/item/ammo_magazine/c45m,
|
||||
prob(4);/obj/item/ammo_magazine/c45m/rubber,
|
||||
prob(4);/obj/item/ammo_magazine/c45m/flash,
|
||||
prob(2);/obj/item/ammo_magazine/mc9mmt,
|
||||
prob(6);/obj/item/ammo_magazine/mc9mmt/rubber)
|
||||
|
||||
|
||||
@@ -225,43 +244,43 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "assistant"
|
||||
item_to_spawn()
|
||||
return pick(/obj/item/toy/figure/cmo,\
|
||||
/obj/item/toy/figure/assistant,\
|
||||
/obj/item/toy/figure/atmos,\
|
||||
/obj/item/toy/figure/bartender,\
|
||||
/obj/item/toy/figure/borg,\
|
||||
/obj/item/toy/figure/gardener,\
|
||||
/obj/item/toy/figure/captain,\
|
||||
/obj/item/toy/figure/cargotech,\
|
||||
/obj/item/toy/figure/ce,\
|
||||
/obj/item/toy/figure/chaplain,\
|
||||
/obj/item/toy/figure/chef,\
|
||||
/obj/item/toy/figure/chemist,\
|
||||
/obj/item/toy/figure/clown,\
|
||||
/obj/item/toy/figure/corgi,\
|
||||
/obj/item/toy/figure/detective,\
|
||||
/obj/item/toy/figure/dsquad,\
|
||||
/obj/item/toy/figure/engineer,\
|
||||
/obj/item/toy/figure/geneticist,\
|
||||
/obj/item/toy/figure/hop,\
|
||||
/obj/item/toy/figure/hos,\
|
||||
/obj/item/toy/figure/qm,\
|
||||
/obj/item/toy/figure/janitor,\
|
||||
/obj/item/toy/figure/agent,\
|
||||
/obj/item/toy/figure/librarian,\
|
||||
/obj/item/toy/figure/md,\
|
||||
/obj/item/toy/figure/mime,\
|
||||
/obj/item/toy/figure/miner,\
|
||||
/obj/item/toy/figure/ninja,\
|
||||
/obj/item/toy/figure/wizard,\
|
||||
/obj/item/toy/figure/rd,\
|
||||
/obj/item/toy/figure/roboticist,\
|
||||
/obj/item/toy/figure/scientist,\
|
||||
/obj/item/toy/figure/syndie,\
|
||||
/obj/item/toy/figure/secofficer,\
|
||||
/obj/item/toy/figure/warden,\
|
||||
/obj/item/toy/figure/psychologist,\
|
||||
/obj/item/toy/figure/paramedic,\
|
||||
return pick(/obj/item/toy/figure/cmo,
|
||||
/obj/item/toy/figure/assistant,
|
||||
/obj/item/toy/figure/atmos,
|
||||
/obj/item/toy/figure/bartender,
|
||||
/obj/item/toy/figure/borg,
|
||||
/obj/item/toy/figure/gardener,
|
||||
/obj/item/toy/figure/captain,
|
||||
/obj/item/toy/figure/cargotech,
|
||||
/obj/item/toy/figure/ce,
|
||||
/obj/item/toy/figure/chaplain,
|
||||
/obj/item/toy/figure/chef,
|
||||
/obj/item/toy/figure/chemist,
|
||||
/obj/item/toy/figure/clown,
|
||||
/obj/item/toy/figure/corgi,
|
||||
/obj/item/toy/figure/detective,
|
||||
/obj/item/toy/figure/dsquad,
|
||||
/obj/item/toy/figure/engineer,
|
||||
/obj/item/toy/figure/geneticist,
|
||||
/obj/item/toy/figure/hop,
|
||||
/obj/item/toy/figure/hos,
|
||||
/obj/item/toy/figure/qm,
|
||||
/obj/item/toy/figure/janitor,
|
||||
/obj/item/toy/figure/agent,
|
||||
/obj/item/toy/figure/librarian,
|
||||
/obj/item/toy/figure/md,
|
||||
/obj/item/toy/figure/mime,
|
||||
/obj/item/toy/figure/miner,
|
||||
/obj/item/toy/figure/ninja,
|
||||
/obj/item/toy/figure/wizard,
|
||||
/obj/item/toy/figure/rd,
|
||||
/obj/item/toy/figure/roboticist,
|
||||
/obj/item/toy/figure/scientist,
|
||||
/obj/item/toy/figure/syndie,
|
||||
/obj/item/toy/figure/secofficer,
|
||||
/obj/item/toy/figure/warden,
|
||||
/obj/item/toy/figure/psychologist,
|
||||
/obj/item/toy/figure/paramedic,
|
||||
/obj/item/toy/figure/ert)
|
||||
|
||||
|
||||
@@ -271,12 +290,12 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "nymphplushie"
|
||||
item_to_spawn()
|
||||
return pick(/obj/structure/plushie/ian,\
|
||||
/obj/structure/plushie/drone,\
|
||||
/obj/structure/plushie/carp,\
|
||||
/obj/structure/plushie/beepsky,\
|
||||
/obj/item/toy/plushie/nymph,\
|
||||
/obj/item/toy/plushie/mouse,\
|
||||
/obj/item/toy/plushie/kitten,\
|
||||
return pick(/obj/structure/plushie/ian,
|
||||
/obj/structure/plushie/drone,
|
||||
/obj/structure/plushie/carp,
|
||||
/obj/structure/plushie/beepsky,
|
||||
/obj/item/toy/plushie/nymph,
|
||||
/obj/item/toy/plushie/mouse,
|
||||
/obj/item/toy/plushie/kitten,
|
||||
/obj/item/toy/plushie/lizard)
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/world
|
||||
|
||||
hub = "Exadv1.spacestation13"
|
||||
//hub_password = "kMZy3U5jJHSiBQjr"
|
||||
hub_password = "SORRYNOPASSWORD"
|
||||
//hub_password = "kMZy3U5jJHSiBQjr"
|
||||
name = "Space Station 13"
|
||||
|
||||
/* This is for any host that would like their server to appear on the main SS13 hub.
|
||||
@@ -12,4 +12,4 @@ If not, let us know on the main tgstation IRC channel of irc.rizon.net #tgstatio
|
||||
hub = "Exadv1.spacestation13"
|
||||
hub_password = "kMZy3U5jJHSiBQjr"
|
||||
name = "Space Station 13"
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -29,9 +29,7 @@ datum/preferences/proc/set_biological_gender(var/gender)
|
||||
S["OOC_Notes"] << pref.metadata
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/sanitize_character()
|
||||
if(!pref.species) pref.species = "Human"
|
||||
var/datum/species/S = all_species[pref.species ? pref.species : "Human"]
|
||||
pref.age = sanitize_integer(pref.age, S.min_age, S.max_age, initial(pref.age))
|
||||
pref.age = sanitize_integer(pref.age, get_min_age(), get_max_age(), initial(pref.age))
|
||||
pref.biological_gender = sanitize_inlist(pref.biological_gender, get_genders(), pick(get_genders()))
|
||||
pref.identifying_gender = (pref.identifying_gender in all_genders_define_list) ? pref.identifying_gender : pref.biological_gender
|
||||
pref.real_name = sanitize_name(pref.real_name, pref.species)
|
||||
@@ -75,7 +73,6 @@ datum/preferences/proc/set_biological_gender(var/gender)
|
||||
. = jointext(.,null)
|
||||
|
||||
/datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user)
|
||||
var/datum/species/S = all_species[pref.species]
|
||||
if(href_list["rename"])
|
||||
var/raw_name = input(user, "Choose your character's name:", "Character Name") as text|null
|
||||
if (!isnull(raw_name) && CanUseTopic(user))
|
||||
@@ -108,10 +105,11 @@ datum/preferences/proc/set_biological_gender(var/gender)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["age"])
|
||||
if(!pref.species) pref.species = "Human"
|
||||
var/new_age = input(user, "Choose your character's age:\n([S.min_age]-[S.max_age])", "Character Preference", pref.age) as num|null
|
||||
var/min_age = get_min_age()
|
||||
var/max_age = get_max_age()
|
||||
var/new_age = input(user, "Choose your character's age:\n([min_age]-[max_age])", "Character Preference", pref.age) as num|null
|
||||
if(new_age && CanUseTopic(user))
|
||||
pref.age = max(min(round(text2num(new_age)), S.max_age), S.min_age)
|
||||
pref.age = max(min(round(text2num(new_age)), max_age), min_age)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
else if(href_list["spawnpoint"])
|
||||
|
||||
@@ -331,8 +331,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
|
||||
reset_limbs() // Safety for species with incompatible manufacturers; easier than trying to do it case by case.
|
||||
|
||||
var/datum/species/S = all_species[pref.species]
|
||||
pref.age = max(min(pref.age, S.max_age), S.min_age)
|
||||
var/min_age = get_min_age()
|
||||
var/max_age = get_max_age()
|
||||
pref.age = max(min(pref.age, max_age), min_age)
|
||||
|
||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
#define TOPIC_UPDATE_PREVIEW 4
|
||||
#define TOPIC_REFRESH_UPDATE_PREVIEW (TOPIC_REFRESH|TOPIC_UPDATE_PREVIEW)
|
||||
|
||||
#define PREF_FBP_CYBORG "cyborg"
|
||||
#define PREF_FBP_POSI "posi"
|
||||
#define PREF_FBP_SOFTWARE "software"
|
||||
|
||||
/datum/category_group/player_setup_category/general_preferences
|
||||
name = "General"
|
||||
sort_order = 1
|
||||
@@ -252,3 +256,50 @@
|
||||
|
||||
if(pref.client)
|
||||
return pref.client.mob
|
||||
|
||||
// Checks in a really hacky way if a character's preferences say they are an FBP or not.
|
||||
/datum/category_item/player_setup_item/proc/is_FBP()
|
||||
if(pref.organ_data && pref.organ_data[BP_TORSO] != "cyborg")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
// Returns what kind of FBP the player's prefs are. Returns 0 if they're not an FBP.
|
||||
/datum/category_item/player_setup_item/proc/get_FBP_type()
|
||||
if(!is_FBP())
|
||||
return 0 // Not a robot.
|
||||
switch(pref.organ_data["brain"])
|
||||
if("assisted")
|
||||
return PREF_FBP_CYBORG
|
||||
if("mechanical")
|
||||
return PREF_FBP_POSI
|
||||
if("digital")
|
||||
return PREF_FBP_SOFTWARE
|
||||
return 0 //Something went wrong!
|
||||
|
||||
/datum/category_item/player_setup_item/proc/get_min_age()
|
||||
var/datum/species/S = all_species[pref.species ? pref.species : "Human"]
|
||||
if(!is_FBP())
|
||||
return S.min_age // If they're not a robot, we can just use the species var.
|
||||
var/FBP_type = get_FBP_type()
|
||||
switch(FBP_type)
|
||||
if(PREF_FBP_CYBORG)
|
||||
return S.min_age
|
||||
if(PREF_FBP_POSI)
|
||||
return 1
|
||||
if(PREF_FBP_SOFTWARE)
|
||||
return 1
|
||||
return S.min_age // welp
|
||||
|
||||
/datum/category_item/player_setup_item/proc/get_max_age()
|
||||
var/datum/species/S = all_species[pref.species ? pref.species : "Human"]
|
||||
if(!is_FBP())
|
||||
return S.max_age // If they're not a robot, we can just use the species var.
|
||||
var/FBP_type = get_FBP_type()
|
||||
switch(FBP_type)
|
||||
if(PREF_FBP_CYBORG)
|
||||
return S.max_age + 20
|
||||
if(PREF_FBP_POSI)
|
||||
return 220
|
||||
if(PREF_FBP_SOFTWARE)
|
||||
return 150
|
||||
return S.max_age // welp
|
||||
183
code/modules/clothing/ears/ears.dm
Normal file
183
code/modules/clothing/ears/ears.dm
Normal file
@@ -0,0 +1,183 @@
|
||||
/*
|
||||
Earmuffs
|
||||
*/
|
||||
/obj/item/clothing/ears/earmuffs
|
||||
name = "earmuffs"
|
||||
desc = "Protects your hearing from loud noises, and quiet ones as well."
|
||||
icon_state = "earmuffs"
|
||||
item_state = "earmuffs"
|
||||
slot_flags = SLOT_EARS | SLOT_TWOEARS
|
||||
ear_protection = 2
|
||||
|
||||
/obj/item/clothing/ears/earmuffs/headphones
|
||||
name = "headphones"
|
||||
desc = "Unce unce unce unce."
|
||||
var/headphones_on = 0
|
||||
icon_state = "headphones_off"
|
||||
item_state = "headphones"
|
||||
slot_flags = SLOT_EARS | SLOT_TWOEARS
|
||||
|
||||
/obj/item/clothing/ears/earmuffs/headphones/verb/togglemusic()
|
||||
set name = "Toggle Headphone Music"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(!istype(usr, /mob/living)) return
|
||||
if(usr.stat) return
|
||||
|
||||
var/base_icon = copytext(icon_state,1,(length(icon_state) - 3 + headphones_on))
|
||||
|
||||
if(headphones_on)
|
||||
icon_state = "[base_icon]_off"
|
||||
headphones_on = 0
|
||||
usr << "<span class='notice'>You turn the music off.</span>"
|
||||
else
|
||||
icon_state = "[base_icon]_on"
|
||||
headphones_on = 1
|
||||
usr << "<span class='notice'>You turn the music on.</span>"
|
||||
|
||||
update_clothing_icon()
|
||||
|
||||
/*
|
||||
Skrell tentacle wear
|
||||
*/
|
||||
/obj/item/clothing/ears/skrell
|
||||
name = "skrell tentacle wear"
|
||||
desc = "Some stuff worn by skrell to adorn their head tentacles."
|
||||
icon = 'icons/obj/clothing/ears.dmi'
|
||||
w_class = 1
|
||||
slot_flags = SLOT_EARS
|
||||
species_restricted = list("Skrell")
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain
|
||||
name = "Gold headtail chains"
|
||||
desc = "A delicate golden chain worn by female skrell to decorate their head tails."
|
||||
icon_state = "skrell_chain"
|
||||
item_state = "egg5" //just a small colored item, remove item_state's if undesirable.
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain/silver
|
||||
name = "Silver headtail chains"
|
||||
desc = "A delicate silver chain worn by female skrell to decorate their head tails."
|
||||
icon_state = "skrell_chain_sil"
|
||||
item_state = "egg"
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain/bluejewels
|
||||
name = "Blue jeweled golden headtail chains"
|
||||
desc = "A delicate golden chain adorned with blue jewels worn by female skrell to decorate their head tails."
|
||||
icon_state = "skrell_chain_bjewel"
|
||||
item_state = "egg2"
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain/redjewels
|
||||
name = "Red jeweled golden headtail chains"
|
||||
desc = "A delicate golden chain adorned with red jewels worn by female skrell to decorate their head tails."
|
||||
icon_state = "skrell_chain_rjewel"
|
||||
item_state = "egg4"
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain/ebony
|
||||
name = "Ebony headtail chains"
|
||||
desc = "A delicate ebony chain worn by female skrell to decorate their head tails."
|
||||
icon_state = "skrell_chain_ebony"
|
||||
item_state = "egg6"
|
||||
|
||||
/obj/item/clothing/ears/skrell/band
|
||||
name = "Gold headtail bands"
|
||||
desc = "Golden metallic bands worn by male skrell to adorn their head tails."
|
||||
icon_state = "skrell_band"
|
||||
item_state = "egg5"
|
||||
|
||||
/obj/item/clothing/ears/skrell/band/silver
|
||||
name = "Silver headtail bands"
|
||||
desc = "Silver metallic bands worn by male skrell to adorn their head tails."
|
||||
icon_state = "skrell_band_sil"
|
||||
item_state = "egg"
|
||||
|
||||
/obj/item/clothing/ears/skrell/band/bluejewels
|
||||
name = "Blue jeweled golden headtail bands"
|
||||
desc = "Golden metallic bands adorned with blue jewels worn by male skrell to adorn their head tails."
|
||||
icon_state = "skrell_band_bjewel"
|
||||
item_state = "egg2"
|
||||
|
||||
/obj/item/clothing/ears/skrell/band/redjewels
|
||||
name = "Red jeweled golden headtail bands"
|
||||
desc = "Golden metallic bands adorned with red jewels worn by male skrell to adorn their head tails."
|
||||
icon_state = "skrell_band_rjewel"
|
||||
item_state = "egg4"
|
||||
|
||||
/obj/item/clothing/ears/skrell/band/ebony
|
||||
name = "Ebony headtail bands"
|
||||
desc = "Ebony bands worn by male skrell to adorn their head tails."
|
||||
icon_state = "skrell_band_ebony"
|
||||
item_state = "egg6"
|
||||
|
||||
/obj/item/clothing/ears/skrell/colored/band
|
||||
name = "Colored headtail bands"
|
||||
desc = "Metallic bands worn by male skrell to adorn their head tails."
|
||||
icon_state = "skrell_band_sil"
|
||||
item_state = "egg"
|
||||
|
||||
/obj/item/clothing/ears/skrell/colored/chain
|
||||
name = "Colored headtail chains"
|
||||
desc = "A delicate chain worn by female skrell to decorate their head tails."
|
||||
icon_state = "skrell_chain_sil"
|
||||
item_state = "egg"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_female
|
||||
name = "red headtail cloth"
|
||||
desc = "A cloth shawl worn by female skrell draped around their head tails."
|
||||
icon_state = "skrell_cloth_female"
|
||||
item_state = "egg4"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_female/black
|
||||
name = "black headtail cloth"
|
||||
icon_state = "skrell_cloth_black_female"
|
||||
item_state = "egg6"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_female/blue
|
||||
name = "blue headtail cloth"
|
||||
icon_state = "skrell_cloth_blue_female"
|
||||
item_state = "egg2"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_female/green
|
||||
name = "green headtail cloth"
|
||||
icon_state = "skrell_cloth_green_female"
|
||||
item_state = "egg3"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_female/pink
|
||||
name = "pink headtail cloth"
|
||||
icon_state = "skrell_cloth_pink_female"
|
||||
item_state = "egg1"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_female/lightblue
|
||||
name = "light blue headtail cloth"
|
||||
icon_state = "skrell_cloth_lblue_female"
|
||||
item_state = "egg2"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_male
|
||||
name = "red headtail cloth"
|
||||
desc = "A cloth band worn by male skrell around their head tails."
|
||||
icon_state = "skrell_cloth_male"
|
||||
item_state = "egg4"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_male/black
|
||||
name = "black headtail cloth"
|
||||
icon_state = "skrell_cloth_black_male"
|
||||
item_state = "egg6"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_male/blue
|
||||
name = "blue headtail cloth"
|
||||
icon_state = "skrell_cloth_blue_male"
|
||||
item_state = "egg2"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_male/green
|
||||
name = "green headtail cloth"
|
||||
icon_state = "skrell_cloth_green_male"
|
||||
item_state = "egg3"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_male/pink
|
||||
name = "pink headtail cloth"
|
||||
icon_state = "skrell_cloth_pink_male"
|
||||
item_state = "egg1"
|
||||
|
||||
/obj/item/clothing/ears/skrell/cloth_male/lightblue
|
||||
name = "light blue headtail cloth"
|
||||
icon_state = "skrell_cloth_lblue_male"
|
||||
item_state = "egg2"
|
||||
@@ -29,7 +29,7 @@
|
||||
msg = "A combat drone wing operating near various asteroids in the Kara subsystem has failed to return from a anti-piracy sweep. If any are sighted, \
|
||||
approach with caution."
|
||||
if(2)
|
||||
msg = "Contact has been lost with a combat drone wring operating out in the asteroid field near Kara. If any are sighted in the area, approach with \
|
||||
msg = "Contact has been lost with a combat drone wing operating out in the asteroid field near Kara. If any are sighted in the area, approach with \
|
||||
caution."
|
||||
if(3)
|
||||
msg = "Unidentified hackers have targeted a combat drone wing deployed in the Kara subsystem. If any are sighted in the area, approach with caution."
|
||||
|
||||
@@ -85,6 +85,18 @@
|
||||
declare_arrests = !declare_arrests
|
||||
attack_hand(usr)
|
||||
|
||||
/mob/living/bot/secbot/emag_act(var/remaining_uses, var/mob/user)
|
||||
. = ..()
|
||||
if(!emagged)
|
||||
if(user)
|
||||
user << "<span class='notice'>\The [src] buzzes and beeps.</span>"
|
||||
emagged = 1
|
||||
patrol_speed = 3
|
||||
target_speed = 4
|
||||
return 1
|
||||
else
|
||||
user << "<span class='notice'>\The [src] is already corrupt.</span>"
|
||||
|
||||
/mob/living/bot/secbot/attackby(var/obj/item/O, var/mob/user)
|
||||
var/curhealth = health
|
||||
..()
|
||||
|
||||
@@ -154,7 +154,16 @@ emp_act
|
||||
if(user == src) // Attacking yourself can't miss
|
||||
return target_zone
|
||||
|
||||
var/hit_zone = get_zone_with_miss_chance(target_zone, src)
|
||||
// Certain statuses make it harder to score a hit. These are the same as gun accuracy, however melee doesn't use multiples of 15.
|
||||
var/accuracy_penalty = 0
|
||||
if(user.eye_blind)
|
||||
accuracy_penalty += 75
|
||||
if(user.eye_blurry)
|
||||
accuracy_penalty += 15
|
||||
if(user.confused)
|
||||
accuracy_penalty += 30
|
||||
|
||||
var/hit_zone = get_zone_with_miss_chance(target_zone, src, accuracy_penalty)
|
||||
|
||||
if(!hit_zone)
|
||||
visible_message("<span class='danger'>\The [user] misses [src] with \the [I]!</span>")
|
||||
|
||||
@@ -1324,7 +1324,7 @@
|
||||
|
||||
// Puke if toxloss is too high
|
||||
if(!stat)
|
||||
if (getToxLoss() >= 45 && nutrition > 20)
|
||||
if (getToxLoss() >= 45)
|
||||
spawn vomit()
|
||||
|
||||
//0.1% chance of playing a scary sound to someone who's in complete darkness
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
cold_discomfort_level = 180
|
||||
|
||||
has_limbs = list(
|
||||
BP_CHEST = list("path" = /obj/item/organ/external/chest),
|
||||
BP_TORSO = list("path" = /obj/item/organ/external/chest),
|
||||
BP_GROIN = list("path" = /obj/item/organ/external/groin),
|
||||
BP_HEAD = list("path" = /obj/item/organ/external/head/seromi),
|
||||
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
|
||||
|
||||
@@ -814,38 +814,35 @@ default behaviour is:
|
||||
return
|
||||
|
||||
if(!lastpuke)
|
||||
|
||||
lastpuke = 1
|
||||
if (nutrition <= 100)
|
||||
src << "<span class='danger'>You gag as you want to throw up, but there's nothing in your stomach!</span>"
|
||||
src.Weaken(10)
|
||||
src.adjustToxLoss(3)
|
||||
return
|
||||
|
||||
lastpuke = 1
|
||||
src << "<span class='warning'>You feel nauseous...</span>"
|
||||
|
||||
if(!skip_wait)
|
||||
sleep(150) //15 seconds until second warning
|
||||
src << "<span class='warning'>You feel like you are about to throw up!</span>"
|
||||
sleep(100) //and you have 10 more for mad dash to the bucket
|
||||
|
||||
Stun(5)
|
||||
src.visible_message("<span class='warning'>[src] throws up!</span>","<span class='warning'>You throw up!</span>")
|
||||
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
var/turf/simulated/T = get_turf(src)
|
||||
if(istype(T))
|
||||
if(blood_vomit)
|
||||
T.add_blood_floor(src)
|
||||
else
|
||||
T.add_vomit_floor(src, 1)
|
||||
|
||||
if(blood_vomit)
|
||||
if(getBruteLoss() < 50)
|
||||
adjustBruteLoss(3)
|
||||
else
|
||||
nutrition -= 40
|
||||
adjustToxLoss(-3)
|
||||
src << "<span class='warning'>You feel nauseous...</span>"
|
||||
|
||||
if(!skip_wait)
|
||||
sleep(150) //15 seconds until second warning
|
||||
src << "<span class='warning'>You feel like you are about to throw up!</span>"
|
||||
sleep(100) //and you have 10 more for mad dash to the bucket
|
||||
|
||||
Stun(5)
|
||||
src.visible_message("<span class='warning'>[src] throws up!</span>","<span class='warning'>You throw up!</span>")
|
||||
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
var/turf/simulated/T = get_turf(src)
|
||||
if(istype(T))
|
||||
if(blood_vomit)
|
||||
T.add_blood_floor(src)
|
||||
else
|
||||
T.add_vomit_floor(src, 1)
|
||||
|
||||
if(blood_vomit)
|
||||
if(getBruteLoss() < 50)
|
||||
adjustBruteLoss(3)
|
||||
else
|
||||
nutrition -= 40
|
||||
adjustToxLoss(-3)
|
||||
|
||||
sleep(350)
|
||||
lastpuke = 0
|
||||
|
||||
55
code/modules/organs/internal/appendix.dm
Normal file
55
code/modules/organs/internal/appendix.dm
Normal file
@@ -0,0 +1,55 @@
|
||||
#define PROCESS_ACCURACY 10
|
||||
|
||||
/obj/item/organ/internal/appendix
|
||||
name = "appendix"
|
||||
icon_state = "appendix"
|
||||
parent_organ = BP_GROIN
|
||||
organ_tag = "appendix"
|
||||
var/inflamed = 0
|
||||
var/inflame_progress = 0
|
||||
|
||||
/mob/living/carbon/human/proc/appendicitis()
|
||||
if(stat == DEAD)
|
||||
return 0
|
||||
var/obj/item/organ/internal/appendix/A = internal_organs_by_name[O_APPENDIX]
|
||||
if(istype(A) && !A.inflamed)
|
||||
A.inflamed = 1
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/organ/internal/appendix/process()
|
||||
if(!inflamed || !owner)
|
||||
return
|
||||
|
||||
if(++inflame_progress > 200)
|
||||
++inflamed
|
||||
inflame_progress = 0
|
||||
|
||||
if(inflamed == 1)
|
||||
if(prob(5))
|
||||
owner << "<span class='warning'>You feel a stinging pain in your abdomen!</span>"
|
||||
owner.emote("me", 1, "winces slightly.")
|
||||
if(inflamed > 1)
|
||||
if(prob(3))
|
||||
owner << "<span class='warning'>You feel a stabbing pain in your abdomen!</span>"
|
||||
owner.emote("me", 1, "winces painfully.")
|
||||
owner.adjustToxLoss(1)
|
||||
if(inflamed > 2)
|
||||
if(prob(1))
|
||||
owner.vomit()
|
||||
if(inflamed > 3)
|
||||
if(prob(1))
|
||||
owner << "<span class='danger'>Your abdomen is a world of pain!</span>"
|
||||
owner.Weaken(10)
|
||||
|
||||
var/obj/item/organ/external/groin = owner.get_organ(BP_GROIN)
|
||||
var/datum/wound/W = new /datum/wound/internal_bleeding(20)
|
||||
owner.adjustToxLoss(25)
|
||||
groin.wounds += W
|
||||
inflamed = 0
|
||||
|
||||
/obj/item/organ/internal/appendix/removed()
|
||||
if(inflamed)
|
||||
icon_state = "appendixinflamed"
|
||||
name = "inflamed appendix"
|
||||
..()
|
||||
78
code/modules/organs/internal/eyes.dm
Normal file
78
code/modules/organs/internal/eyes.dm
Normal file
@@ -0,0 +1,78 @@
|
||||
#define PROCESS_ACCURACY 10
|
||||
|
||||
/obj/item/organ/internal/eyes
|
||||
name = "eyeballs"
|
||||
icon_state = "eyes"
|
||||
gender = PLURAL
|
||||
organ_tag = O_EYES
|
||||
parent_organ = BP_HEAD
|
||||
var/list/eye_colour = list(0,0,0)
|
||||
|
||||
/obj/item/organ/internal/eyes/robotize()
|
||||
..()
|
||||
name = "optical sensor"
|
||||
icon = 'icons/obj/robot_component.dmi'
|
||||
icon_state = "camera"
|
||||
dead_icon = "camera_broken"
|
||||
verbs |= /obj/item/organ/internal/eyes/proc/change_eye_color
|
||||
|
||||
/obj/item/organ/internal/eyes/robot
|
||||
name = "optical sensor"
|
||||
|
||||
/obj/item/organ/internal/eyes/robot/New()
|
||||
..()
|
||||
robotize()
|
||||
|
||||
/obj/item/organ/internal/eyes/proc/change_eye_color()
|
||||
set name = "Change Eye Color"
|
||||
set desc = "Changes your robotic eye color instantly."
|
||||
set category = "IC"
|
||||
set src in usr
|
||||
|
||||
var/current_color = rgb(eye_colour[1],eye_colour[2],eye_colour[3])
|
||||
var/new_color = input("Pick a new color for your eyes.","Eye Color", current_color) as null|color
|
||||
if(new_color && owner)
|
||||
// input() supplies us with a hex color, which we can't use, so we convert it to rbg values.
|
||||
var/list/new_color_rgb_list = hex2rgb(new_color)
|
||||
// First, update mob vars.
|
||||
owner.r_eyes = new_color_rgb_list[1]
|
||||
owner.g_eyes = new_color_rgb_list[2]
|
||||
owner.b_eyes = new_color_rgb_list[3]
|
||||
// Now sync the organ's eye_colour list.
|
||||
update_colour()
|
||||
// Finally, update the eye icon on the mob.
|
||||
owner.update_eyes()
|
||||
|
||||
/obj/item/organ/internal/eyes/replaced(var/mob/living/carbon/human/target)
|
||||
|
||||
// Apply our eye colour to the target.
|
||||
if(istype(target) && eye_colour)
|
||||
target.r_eyes = eye_colour[1]
|
||||
target.g_eyes = eye_colour[2]
|
||||
target.b_eyes = eye_colour[3]
|
||||
target.update_eyes()
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/eyes/proc/update_colour()
|
||||
if(!owner)
|
||||
return
|
||||
eye_colour = list(
|
||||
owner.r_eyes ? owner.r_eyes : 0,
|
||||
owner.g_eyes ? owner.g_eyes : 0,
|
||||
owner.b_eyes ? owner.b_eyes : 0
|
||||
)
|
||||
|
||||
/obj/item/organ/internal/eyes/take_damage(amount, var/silent=0)
|
||||
var/oldbroken = is_broken()
|
||||
..()
|
||||
if(is_broken() && !oldbroken && owner && !owner.stat)
|
||||
owner << "<span class='danger'>You go blind!</span>"
|
||||
|
||||
/obj/item/organ/internal/eyes/process() //Eye damage replaces the old eye_stat var.
|
||||
..()
|
||||
if(!owner)
|
||||
return
|
||||
if(is_bruised())
|
||||
owner.eye_blurry = 20
|
||||
if(is_broken())
|
||||
owner.eye_blind = 20
|
||||
8
code/modules/organs/internal/heart.dm
Normal file
8
code/modules/organs/internal/heart.dm
Normal file
@@ -0,0 +1,8 @@
|
||||
#define PROCESS_ACCURACY 10
|
||||
|
||||
/obj/item/organ/internal/heart
|
||||
name = "heart"
|
||||
icon_state = "heart-on"
|
||||
organ_tag = O_HEART
|
||||
parent_organ = BP_TORSO
|
||||
dead_icon = "heart-off"
|
||||
25
code/modules/organs/internal/kidneys.dm
Normal file
25
code/modules/organs/internal/kidneys.dm
Normal file
@@ -0,0 +1,25 @@
|
||||
#define PROCESS_ACCURACY 10
|
||||
|
||||
/obj/item/organ/internal/kidneys
|
||||
name = "kidneys"
|
||||
icon_state = "kidneys"
|
||||
gender = PLURAL
|
||||
organ_tag = O_KIDNEYS
|
||||
parent_organ = BP_GROIN
|
||||
|
||||
/obj/item/organ/internal/kidneys/process()
|
||||
|
||||
..()
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
// Coffee is really bad for you with busted kidneys.
|
||||
// This should probably be expanded in some way, but fucked if I know
|
||||
// what else kidneys can process in our reagent list.
|
||||
var/datum/reagent/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list
|
||||
if(coffee)
|
||||
if(is_bruised())
|
||||
owner.adjustToxLoss(0.1 * PROCESS_ACCURACY)
|
||||
else if(is_broken())
|
||||
owner.adjustToxLoss(0.3 * PROCESS_ACCURACY)
|
||||
55
code/modules/organs/internal/liver.dm
Normal file
55
code/modules/organs/internal/liver.dm
Normal file
@@ -0,0 +1,55 @@
|
||||
#define PROCESS_ACCURACY 10
|
||||
|
||||
/obj/item/organ/internal/liver
|
||||
name = "liver"
|
||||
icon_state = "liver"
|
||||
organ_tag = "liver"
|
||||
parent_organ = BP_GROIN
|
||||
|
||||
/obj/item/organ/internal/liver/process()
|
||||
|
||||
..()
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if (germ_level > INFECTION_LEVEL_ONE)
|
||||
if(prob(1))
|
||||
owner << "<span class='danger'>Your skin itches.</span>"
|
||||
if (germ_level > INFECTION_LEVEL_TWO)
|
||||
if(prob(1))
|
||||
spawn owner.vomit()
|
||||
|
||||
if(owner.life_tick % PROCESS_ACCURACY == 0)
|
||||
|
||||
//High toxins levels are dangerous
|
||||
if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("anti_toxin"))
|
||||
//Healthy liver suffers on its own
|
||||
if (src.damage < min_broken_damage)
|
||||
src.damage += 0.2 * PROCESS_ACCURACY
|
||||
//Damaged one shares the fun
|
||||
else
|
||||
var/obj/item/organ/internal/O = pick(owner.internal_organs)
|
||||
if(O)
|
||||
O.damage += 0.2 * PROCESS_ACCURACY
|
||||
|
||||
//Detox can heal small amounts of damage
|
||||
if (src.damage && src.damage < src.min_bruised_damage && owner.reagents.has_reagent("anti_toxin"))
|
||||
src.damage -= 0.2 * PROCESS_ACCURACY
|
||||
|
||||
if(src.damage < 0)
|
||||
src.damage = 0
|
||||
|
||||
// Get the effectiveness of the liver.
|
||||
var/filter_effect = 3
|
||||
if(is_bruised())
|
||||
filter_effect -= 1
|
||||
if(is_broken())
|
||||
filter_effect -= 2
|
||||
|
||||
// Do some reagent processing.
|
||||
if(owner.chem_effects[CE_ALCOHOL_TOXIC])
|
||||
if(filter_effect < 3)
|
||||
owner.adjustToxLoss(owner.chem_effects[CE_ALCOHOL_TOXIC] * 0.1 * PROCESS_ACCURACY)
|
||||
else
|
||||
take_damage(owner.chem_effects[CE_ALCOHOL_TOXIC] * 0.1 * PROCESS_ACCURACY, prob(1)) // Chance to warn them
|
||||
26
code/modules/organs/internal/lungs.dm
Normal file
26
code/modules/organs/internal/lungs.dm
Normal file
@@ -0,0 +1,26 @@
|
||||
#define PROCESS_ACCURACY 10
|
||||
|
||||
/obj/item/organ/internal/lungs
|
||||
name = "lungs"
|
||||
icon_state = "lungs"
|
||||
gender = PLURAL
|
||||
organ_tag = O_LUNGS
|
||||
parent_organ = BP_TORSO
|
||||
|
||||
/obj/item/organ/internal/lungs/process()
|
||||
..()
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if (germ_level > INFECTION_LEVEL_ONE)
|
||||
if(prob(5))
|
||||
owner.emote("cough") //respitory tract infection
|
||||
|
||||
if(is_bruised())
|
||||
if(prob(2))
|
||||
spawn owner.emote("me", 1, "coughs up blood!")
|
||||
owner.drip(10)
|
||||
if(prob(4))
|
||||
spawn owner.emote("me", 1, "gasps for air!")
|
||||
owner.losebreath += 15
|
||||
36
code/modules/organs/internal/organ_internal.dm
Normal file
36
code/modules/organs/internal/organ_internal.dm
Normal file
@@ -0,0 +1,36 @@
|
||||
#define PROCESS_ACCURACY 10
|
||||
|
||||
/****************************************************
|
||||
INTERNAL ORGANS DEFINES
|
||||
****************************************************/
|
||||
/obj/item/organ/internal
|
||||
var/dead_icon // Icon to use when the organ has died.
|
||||
|
||||
/obj/item/organ/internal/die()
|
||||
..()
|
||||
if((status & ORGAN_DEAD) && dead_icon)
|
||||
icon_state = dead_icon
|
||||
|
||||
/obj/item/organ/internal/Destroy()
|
||||
if(owner)
|
||||
owner.internal_organs.Remove(src)
|
||||
owner.internal_organs_by_name[organ_tag] = null
|
||||
owner.internal_organs_by_name -= organ_tag
|
||||
while(null in owner.internal_organs)
|
||||
owner.internal_organs -= null
|
||||
var/obj/item/organ/external/E = owner.organs_by_name[parent_organ]
|
||||
if(istype(E)) E.internal_organs -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/organ/internal/remove_rejuv()
|
||||
if(owner)
|
||||
owner.internal_organs -= src
|
||||
owner.internal_organs_by_name[organ_tag] = null
|
||||
owner.internal_organs_by_name -= organ_tag
|
||||
while(null in owner.internal_organs)
|
||||
owner.internal_organs -= null
|
||||
var/obj/item/organ/external/E = owner.organs_by_name[parent_organ]
|
||||
if(istype(E)) E.internal_organs -= src
|
||||
..()
|
||||
|
||||
// Brain is defined in brain_item.dm.
|
||||
@@ -52,7 +52,7 @@
|
||||
name = "left upper tendril"
|
||||
organ_tag = "l_arm"
|
||||
icon_name = "l_arm"
|
||||
max_damage = 35
|
||||
max_damage = 50
|
||||
min_broken_damage = 20
|
||||
w_class = 3
|
||||
body_part = ARM_LEFT
|
||||
@@ -69,7 +69,7 @@
|
||||
name = "left lower tendril"
|
||||
organ_tag = "l_leg"
|
||||
icon_name = "l_leg"
|
||||
max_damage = 35
|
||||
max_damage = 50
|
||||
min_broken_damage = 20
|
||||
w_class = 3
|
||||
body_part = LEG_LEFT
|
||||
@@ -88,7 +88,7 @@
|
||||
name = "left foot"
|
||||
organ_tag = "l_foot"
|
||||
icon_name = "l_foot"
|
||||
max_damage = 20
|
||||
max_damage = 35
|
||||
min_broken_damage = 10
|
||||
w_class = 2
|
||||
body_part = FOOT_LEFT
|
||||
@@ -110,7 +110,7 @@
|
||||
name = "left grasper"
|
||||
organ_tag = "l_hand"
|
||||
icon_name = "l_hand"
|
||||
max_damage = 30
|
||||
max_damage = 40
|
||||
min_broken_damage = 15
|
||||
w_class = 2
|
||||
body_part = HAND_LEFT
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
organ_tag = "l_arm"
|
||||
name = "left arm"
|
||||
icon_name = "l_arm"
|
||||
max_damage = 50
|
||||
max_damage = 80
|
||||
min_broken_damage = 30
|
||||
w_class = 3
|
||||
body_part = ARM_LEFT
|
||||
@@ -69,7 +69,7 @@
|
||||
organ_tag = "l_leg"
|
||||
name = "left leg"
|
||||
icon_name = "l_leg"
|
||||
max_damage = 50
|
||||
max_damage = 80
|
||||
min_broken_damage = 30
|
||||
w_class = 3
|
||||
body_part = LEG_LEFT
|
||||
@@ -92,7 +92,7 @@
|
||||
organ_tag = "l_foot"
|
||||
name = "left foot"
|
||||
icon_name = "l_foot"
|
||||
max_damage = 30
|
||||
max_damage = 50
|
||||
min_broken_damage = 15
|
||||
w_class = 2
|
||||
body_part = FOOT_LEFT
|
||||
@@ -121,7 +121,7 @@
|
||||
organ_tag = "l_hand"
|
||||
name = "left hand"
|
||||
icon_name = "l_hand"
|
||||
max_damage = 30
|
||||
max_damage = 50
|
||||
min_broken_damage = 15
|
||||
w_class = 2
|
||||
body_part = HAND_LEFT
|
||||
|
||||
@@ -333,6 +333,14 @@
|
||||
P.accuracy = accuracy + acc_mod
|
||||
P.dispersion = dispersion
|
||||
|
||||
// Certain statuses make it harder to aim, blindness especially. Same chances as melee, however guns accuracy uses multiples of 15.
|
||||
if(user.confused)
|
||||
accuracy -= 2
|
||||
if(user.eye_blind)
|
||||
accuracy -= 5
|
||||
if(user.eye_blurry)
|
||||
accuracy -= 1
|
||||
|
||||
//accuracy bonus from aiming
|
||||
if (aim_targets && (target in aim_targets))
|
||||
//If you aim at someone beforehead, it'll hit more often.
|
||||
|
||||
@@ -22,54 +22,112 @@ var/global/list/datum/supply_drop_loot/supply_drop
|
||||
/datum/supply_drop_loot/dd_SortValue()
|
||||
return name
|
||||
|
||||
/datum/supply_drop_loot/supermatter
|
||||
name = "Supermatter"
|
||||
/datum/supply_drop_loot/supermatter/New()
|
||||
..()
|
||||
contents = list(/obj/machinery/power/supermatter)
|
||||
|
||||
/datum/supply_drop_loot/lasers
|
||||
name = "Lasers"
|
||||
name = "Laser Warfare"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/lasers/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/weapon/gun/energy/laser,
|
||||
/obj/item/weapon/gun/energy/laser,
|
||||
/obj/item/weapon/gun/energy/sniperrifle,
|
||||
/obj/item/weapon/gun/energy/ionrifle)
|
||||
/obj/item/clothing/gloves/arm_guard/laserproof,
|
||||
/obj/item/clothing/shoes/leg_guard/laserproof,
|
||||
/obj/item/clothing/head/helmet/laserproof,
|
||||
/obj/item/clothing/suit/armor/laserproof,
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
|
||||
/obj/item/weapon/storage/belt/security/tactical/bandolier,
|
||||
/obj/item/clothing/accessory/storage/black_drop_pouches,
|
||||
/obj/item/weapon/storage/backpack/dufflebag/sec,
|
||||
/obj/item/weapon/shield/energy,
|
||||
/obj/item/weapon/gun/energy/ionrifle,
|
||||
/obj/item/weapon/gun/energy/xray,
|
||||
/obj/item/weapon/storage/box/emps,
|
||||
/obj/item/weapon/storage/box/flashbangs,
|
||||
/obj/item/weapon/material/hatchet/tacknife/combatknife)
|
||||
|
||||
/datum/supply_drop_loot/ballistics
|
||||
name = "Ballistics"
|
||||
name = "Ballistic Warfare"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/ballistics/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/weapon/gun/projectile/colt/detective,
|
||||
/obj/item/weapon/gun/projectile/shotgun/doublebarrel,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
|
||||
/obj/item/weapon/gun/projectile/automatic/wt550,
|
||||
/obj/item/weapon/gun/projectile/automatic/z8)
|
||||
/obj/item/clothing/head/helmet/bulletproof,
|
||||
/obj/item/clothing/suit/armor/bulletproof,
|
||||
/obj/item/clothing/gloves/arm_guard/bulletproof,
|
||||
/obj/item/clothing/shoes/leg_guard/bulletproof,
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
|
||||
/obj/item/weapon/storage/belt/security/tactical/bandolier,
|
||||
/obj/item/clothing/accessory/storage/black_drop_pouches,
|
||||
/obj/item/weapon/storage/backpack/dufflebag/sec,
|
||||
/obj/item/weapon/shield/riot/tele,
|
||||
/obj/item/weapon/storage/box/emps,
|
||||
/obj/item/weapon/storage/box/flashbangs,
|
||||
/obj/item/weapon/gun/projectile/automatic/sts35,
|
||||
/obj/item/ammo_magazine/c762/ap,
|
||||
/obj/item/ammo_magazine/c762/ap,
|
||||
/obj/item/weapon/gun/projectile/colt,
|
||||
/obj/item/ammo_magazine/c45m,
|
||||
/obj/item/weapon/material/hatchet/tacknife/combatknife)
|
||||
|
||||
/datum/supply_drop_loot/ballistics
|
||||
name = "Ballistics"
|
||||
/datum/supply_drop_loot/heavy_warfare
|
||||
name = "Heavy Warfare"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/ballistics/New()
|
||||
/datum/supply_drop_loot/armour/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/weapon/gun/projectile/colt/detective,
|
||||
/obj/item/weapon/gun/projectile/shotgun/doublebarrel,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
|
||||
/obj/item/weapon/gun/projectile/automatic/wt550,
|
||||
/obj/item/weapon/gun/projectile/automatic/z8)
|
||||
/obj/item/clothing/head/helmet/combat,
|
||||
/obj/item/clothing/suit/armor/combat,
|
||||
/obj/item/clothing/gloves/arm_guard/combat,
|
||||
/obj/item/clothing/shoes/leg_guard/combat,
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
|
||||
/obj/item/weapon/storage/belt/security/tactical/bandolier,
|
||||
/obj/item/clothing/accessory/storage/black_drop_pouches,
|
||||
/obj/item/weapon/storage/backpack/dufflebag/sec,
|
||||
/obj/item/weapon/gun/projectile/automatic/carbine,
|
||||
/obj/item/ammo_magazine/a556m/ap,
|
||||
/obj/item/ammo_magazine/a556m,
|
||||
/obj/item/weapon/shield/energy,
|
||||
/obj/item/weapon/grenade/frag,
|
||||
/obj/item/weapon/grenade/frag,
|
||||
/obj/item/weapon/grenade/smokebomb,
|
||||
/obj/item/weapon/grenade/smokebomb,
|
||||
/obj/item/weapon/grenade/flashbang,
|
||||
/obj/item/weapon/grenade/flashbang,
|
||||
/obj/item/weapon/grenade/empgrenade,
|
||||
/obj/item/weapon/grenade/empgrenade,
|
||||
/obj/item/weapon/material/hatchet/tacknife/combatknife)
|
||||
|
||||
datum/supply_drop_loot/riot
|
||||
name = "Riot Gear"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/armour/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/clothing/head/helmet/riot,
|
||||
/obj/item/clothing/suit/armor/riot,
|
||||
/obj/item/clothing/gloves/arm_guard/riot,
|
||||
/obj/item/clothing/shoes/leg_guard/riot,
|
||||
/obj/item/weapon/shield/riot/tele,
|
||||
/obj/item/weapon/storage/box/flashbangs,
|
||||
/obj/item/weapon/storage/box/handcuffs,
|
||||
/obj/item/weapon/melee/baton,
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/tactical,
|
||||
/obj/item/weapon/storage/belt/security,
|
||||
/obj/item/clothing/shoes/jackboots,
|
||||
/obj/item/clothing/gloves/black,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump,
|
||||
/obj/item/weapon/gun/energy/gun,
|
||||
/obj/item/clothing/accessory/holster,
|
||||
/obj/item/weapon/gun/launcher/grenade,
|
||||
/obj/item/weapon/storage/backpack/dufflebag/sec)
|
||||
|
||||
/datum/supply_drop_loot/seeds
|
||||
name = "Seeds"
|
||||
name = "Plant Growing"
|
||||
container = /obj/structure/closet/crate
|
||||
/datum/supply_drop_loot/seeds/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/seeds/chiliseed,
|
||||
/obj/item/seeds/icepepperseed,
|
||||
/obj/item/seeds/berryseed,
|
||||
/obj/item/seeds/cornseed,
|
||||
/obj/item/seeds/eggplantseed,
|
||||
@@ -79,48 +137,128 @@ var/global/list/datum/supply_drop_loot/supply_drop
|
||||
/obj/item/seeds/wheatseed,
|
||||
/obj/item/seeds/carrotseed,
|
||||
/obj/item/seeds/lemonseed,
|
||||
/obj/item/seeds/limeseed,
|
||||
/obj/item/seeds/orangeseed,
|
||||
/obj/item/seeds/grassseed,
|
||||
/obj/item/seeds/sunflowerseed,
|
||||
/obj/item/seeds/chantermycelium,
|
||||
/obj/item/seeds/potatoseed,
|
||||
/obj/item/seeds/sugarcaneseed)
|
||||
/obj/item/seeds/sugarcaneseed,
|
||||
/obj/item/seeds/plastiseed,
|
||||
/obj/item/seeds/grapeseed,
|
||||
/obj/item/seeds/greengrapeseed,
|
||||
/obj/item/seeds/peanutseed,
|
||||
/obj/item/seeds/cabbageseed,
|
||||
/obj/item/seeds/bananaseed,
|
||||
/obj/item/seeds/poppyseed,
|
||||
/obj/item/seeds/riceseed,
|
||||
/obj/item/seeds/plumpmycelium,
|
||||
/obj/item/seeds/lavenderseed,
|
||||
/obj/item/seeds/whitebeetseed,
|
||||
/obj/item/seeds/sugarcaneseed,
|
||||
/obj/item/seeds/watermelonseed,
|
||||
/obj/item/seeds/cherryseed,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient,
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/structure/reagent_dispensers/watertank,
|
||||
/obj/item/weapon/reagent_containers/glass/bucket,
|
||||
/obj/item/weapon/reagent_containers/glass/bucket)
|
||||
|
||||
/datum/supply_drop_loot/food
|
||||
name = "Food"
|
||||
name = "Emergeny Provisions For Two"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/food/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/weapon/reagent_containers/food/condiment/flour,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/flour,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/flour,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk,
|
||||
/obj/item/weapon/storage/fancy/egg_box,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake,
|
||||
/obj/item/weapon/crowbar,
|
||||
/obj/item/weapon/crowbar,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/clothing/suit/storage/hazardvest,
|
||||
/obj/item/clothing/suit/storage/hazardvest,
|
||||
/obj/item/device/flashlight/flare,
|
||||
/obj/item/device/flashlight/flare)
|
||||
|
||||
/datum/supply_drop_loot/armour
|
||||
name = "Armour"
|
||||
/datum/supply_drop_loot/plushie
|
||||
name = "Cuddly Fun!"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/armour/New()
|
||||
/datum/supply_drop_loot/plushie/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/clothing/head/helmet/riot,
|
||||
/obj/item/clothing/suit/armor/riot,
|
||||
/obj/item/clothing/head/helmet/riot,
|
||||
/obj/item/clothing/suit/armor/riot,
|
||||
/obj/item/clothing/head/helmet/riot,
|
||||
/obj/item/clothing/suit/armor/riot,
|
||||
/obj/item/clothing/suit/storage/vest,
|
||||
/obj/item/clothing/suit/storage/vest,
|
||||
/obj/item/clothing/suit/storage/vest/heavy,
|
||||
/obj/item/clothing/suit/storage/vest/heavy,
|
||||
/obj/item/clothing/suit/armor/laserproof,
|
||||
/obj/item/clothing/suit/armor/bulletproof)
|
||||
/obj/structure/plushie/drone,
|
||||
/obj/structure/plushie/carp,
|
||||
/obj/structure/plushie/beepsky,
|
||||
/obj/item/toy/plushie/nymph,
|
||||
/obj/item/toy/plushie/mouse,
|
||||
/obj/item/toy/plushie/kitten,
|
||||
/obj/item/toy/plushie/lizard,
|
||||
/obj/random/action_figure,
|
||||
/obj/random/action_figure,
|
||||
/obj/random/action_figure,
|
||||
/obj/random/action_figure,
|
||||
/obj/random/action_figure,
|
||||
/obj/random/action_figure,
|
||||
/obj/item/toy/nanotrasenballoon,
|
||||
/obj/item/toy/syndicateballoon,
|
||||
/obj/item/toy/sword,
|
||||
/obj/item/toy/sword,
|
||||
/obj/item/toy/sword,
|
||||
/obj/item/toy/sword,
|
||||
/obj/item/toy/katana,
|
||||
/obj/item/toy/katana,
|
||||
/obj/item/weapon/inflatable_duck,
|
||||
/obj/item/weapon/inflatable_duck)
|
||||
|
||||
/datum/supply_drop_loot/christmas
|
||||
name = "Surplus Christmas Supplies"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/christmas/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/toy/xmastree,
|
||||
/obj/item/clothing/head/santa,
|
||||
/obj/item/clothing/head/santa,
|
||||
/obj/item/clothing/head/santa,
|
||||
/obj/item/clothing/head/santa,
|
||||
/obj/item/clothing/head/santa/green,
|
||||
/obj/item/clothing/head/santa/green,
|
||||
/obj/item/clothing/head/santa/green,
|
||||
/obj/item/clothing/head/santa/green,
|
||||
/obj/item/clothing/accessory/scarf/christmas,
|
||||
/obj/item/clothing/accessory/scarf/christmas,
|
||||
/obj/item/clothing/accessory/scarf/christmas,
|
||||
/obj/item/clothing/accessory/scarf/christmas
|
||||
)
|
||||
|
||||
/datum/supply_drop_loot/materials
|
||||
name = "Materials"
|
||||
@@ -138,6 +276,33 @@ var/global/list/datum/supply_drop_loot/supply_drop
|
||||
/obj/item/stack/material/glass/reinforced/fifty,
|
||||
/obj/item/stack/material/plasteel/fifty)
|
||||
|
||||
/datum/supply_drop_loot/materials_advanced
|
||||
name = "Advanced Materials"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/materials_advanced/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/stack/material/steel/fifty,
|
||||
/obj/item/stack/material/glass/fifty,
|
||||
/obj/item/stack/material/wood/fifty,
|
||||
/obj/item/stack/material/plastic/fifty,
|
||||
/obj/item/stack/material/glass/reinforced/fifty,
|
||||
/obj/item/stack/material/plasteel/fifty,
|
||||
/obj/item/stack/material/diamond/fifty,
|
||||
/obj/item/stack/material/phoron/fifty,
|
||||
/obj/item/stack/material/gold/fifty,
|
||||
/obj/item/stack/material/silver/fifty,
|
||||
/obj/item/stack/material/platinum/fifty,
|
||||
/obj/item/stack/material/mhydrogen/fifty,
|
||||
/obj/item/stack/material/tritium/fifty,
|
||||
/obj/item/stack/material/osmium/fifty,)
|
||||
|
||||
/datum/supply_drop_loot/supermatter
|
||||
name = "Supermatter"
|
||||
/datum/supply_drop_loot/supermatter/New()
|
||||
..()
|
||||
contents = list(/obj/machinery/power/supermatter)
|
||||
|
||||
/datum/supply_drop_loot/medical
|
||||
name = "Medical"
|
||||
container = /obj/structure/closet/crate/medical
|
||||
@@ -149,47 +314,10 @@ var/global/list/datum/supply_drop_loot/supply_drop
|
||||
/obj/item/weapon/storage/firstaid/toxin,
|
||||
/obj/item/weapon/storage/firstaid/o2,
|
||||
/obj/item/weapon/storage/firstaid/adv,
|
||||
/obj/item/weapon/storage/firstaid/combat,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/stoxin,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,
|
||||
/obj/item/weapon/storage/box/syringes,
|
||||
/obj/item/weapon/storage/box/autoinjectors)
|
||||
|
||||
/datum/supply_drop_loot/power
|
||||
name = "Power"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/power/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/item/stack/material/steel,
|
||||
/obj/item/stack/material/steel,
|
||||
/obj/item/stack/material/steel,
|
||||
/obj/item/stack/material/glass,
|
||||
/obj/item/stack/material/glass,
|
||||
/obj/item/stack/material/wood,
|
||||
/obj/item/stack/material/plastic,
|
||||
/obj/item/stack/material/glass/reinforced,
|
||||
/obj/item/stack/material/plasteel)
|
||||
|
||||
/datum/supply_drop_loot/hydroponics
|
||||
name = "Hydroponics"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/hydroponics/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/machinery/portable_atmospherics/hydroponics,
|
||||
/obj/machinery/portable_atmospherics/hydroponics)
|
||||
|
||||
/datum/supply_drop_loot/power
|
||||
name = "Power"
|
||||
container = /obj/structure/largecrate
|
||||
/datum/supply_drop_loot/power/New()
|
||||
..()
|
||||
contents = list(
|
||||
/obj/machinery/power/port_gen/pacman,
|
||||
/obj/machinery/power/port_gen/pacman/super,
|
||||
/obj/machinery/power/port_gen/pacman/mrs)
|
||||
|
||||
/datum/supply_drop_loot/power/contents()
|
||||
return list(pick(contents))
|
||||
/obj/item/weapon/storage/box/autoinjectors)
|
||||
@@ -112,9 +112,9 @@
|
||||
|
||||
/datum/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-6 * removed)
|
||||
M.heal_organ_damage(3 * removed, 3 * removed)
|
||||
M.adjustToxLoss(-3 * removed)
|
||||
M.adjustOxyLoss(-3 * removed)
|
||||
M.heal_organ_damage(1.5 * removed, 1.5 * removed)
|
||||
M.adjustToxLoss(-1.5 * removed)
|
||||
|
||||
/datum/reagent/cryoxadone
|
||||
name = "Cryoxadone"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
description = "A toxic chemical."
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600"
|
||||
metabolism = REM * 0.05 // 0.01 by default. They last a while and slowly kill you.
|
||||
metabolism = REM * 0.25 // 0.05 by default. Hopefully enough to get some help, or die horribly, whatever floats your boat
|
||||
var/strength = 4 // How much damage it deals per unit
|
||||
|
||||
/datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
@@ -479,7 +479,7 @@
|
||||
return
|
||||
|
||||
if(M.dna)
|
||||
if(prob(removed * 0.1))
|
||||
if(prob(removed * 0.1))
|
||||
randmuti(M)
|
||||
if(prob(98))
|
||||
randmutb(M)
|
||||
@@ -505,7 +505,7 @@
|
||||
return
|
||||
|
||||
if(M.dna)
|
||||
if(prob(removed * 0.1))
|
||||
if(prob(removed * 0.1))
|
||||
randmuti(M)
|
||||
if(prob(98))
|
||||
randmutb(M)
|
||||
|
||||
Reference in New Issue
Block a user