mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 06:57:42 +01:00
Merge pull request #4304 from Aurorablade/JustTraitorThings
Crazy Fethas Traitor Emporium of Horrors
This commit is contained in:
@@ -683,3 +683,29 @@
|
||||
icon_state = "noble_clothes"
|
||||
item_color = "noble_clothes"
|
||||
item_state = "noble_clothes"
|
||||
|
||||
/obj/item/clothing/under/contortionist
|
||||
name = "Contortionist's Jumpsuit"
|
||||
desc = "A light jumpsuit useful for squeezing through narrow vents."
|
||||
icon_state = "atmos"
|
||||
item_state = "atmos_suit"
|
||||
item_color = "atmos"
|
||||
|
||||
/obj/item/clothing/under/contortionist/equipped(mob/living/carbon/human/user, slot)
|
||||
if(!user.ventcrawler)
|
||||
user.ventcrawler = 2
|
||||
..()
|
||||
|
||||
/obj/item/clothing/under/contortionist/dropped(mob/living/carbon/human/user)
|
||||
if(!user.get_int_organ(/obj/item/organ/internal/gland/ventcrawling))
|
||||
user.ventcrawler = 0
|
||||
..()
|
||||
|
||||
/obj/item/clothing/under/contortionist/proc/check_clothing(mob/user as mob)
|
||||
//Allowed to wear: glasses, shoes, gloves, pockets, mask, and jumpsuit (obviously)
|
||||
var/list/slot_must_be_empty = list(slot_back,slot_handcuffed,slot_legcuffed,slot_l_hand,slot_r_hand,slot_belt,slot_head,slot_wear_suit)
|
||||
for(var/slot_id in slot_must_be_empty)
|
||||
if(user.get_item_by_slot(slot_id))
|
||||
to_chat(user,"<span class='warning'>You can't fit inside while wearing that \the [user.get_item_by_slot(slot_id)].</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -367,6 +367,26 @@
|
||||
..()
|
||||
set_trait(TRAIT_RARITY,40)
|
||||
|
||||
/datum/seed/ambrosia/cruciatus
|
||||
name = "ambrosia"
|
||||
seed_name = "ambrosia vulgaris"
|
||||
display_name = "ambrosia vulgaris"
|
||||
mutants = null
|
||||
chems = list("plantmatter" = list(1), "thc" = list(1,8), "silver_sulfadiazine" = list(1,8,1), "styptic_powder" = list(1,10,1), "bath salts" = list(10))
|
||||
kitchen_tag = "ambrosia"
|
||||
preset_icon = "ambrosiavulgaris"
|
||||
|
||||
/datum/seed/ambrosia/cruciatus/New()
|
||||
..()
|
||||
set_trait(TRAIT_HARVEST_REPEAT,1)
|
||||
set_trait(TRAIT_MATURATION,6)
|
||||
set_trait(TRAIT_PRODUCTION,6)
|
||||
set_trait(TRAIT_YIELD,6)
|
||||
set_trait(TRAIT_POTENCY,10)
|
||||
set_trait(TRAIT_PRODUCT_ICON,"ambrosia")
|
||||
set_trait(TRAIT_PRODUCT_COLOUR,"#9FAD55")
|
||||
set_trait(TRAIT_PLANT_ICON,"ambrosia")
|
||||
|
||||
//Tobacco/varieties
|
||||
/datum/seed/tobacco
|
||||
name = "tobacco"
|
||||
|
||||
@@ -221,6 +221,9 @@ var/global/list/plant_seed_sprites = list()
|
||||
/obj/item/seeds/ambrosiadeusseed
|
||||
seed_type = "ambrosiadeus"
|
||||
|
||||
/obj/item/seeds/ambrosiavulgarisseed/cruciatus
|
||||
seed_type = "ambrosia"
|
||||
|
||||
/obj/item/seeds/whitebeetseed
|
||||
seed_type = "whitebeet"
|
||||
|
||||
|
||||
@@ -386,6 +386,12 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump,
|
||||
if(buckled_mob)
|
||||
to_chat(src, "You can't vent crawl with [buckled_mob] on you!")
|
||||
return
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under/contortionist))//IMMA SPCHUL SNOWFLAKE
|
||||
var/obj/item/clothing/under/contortionist/C = H.w_uniform
|
||||
if(!C.check_clothing(src))//return values confuse me right now
|
||||
return
|
||||
|
||||
var/obj/machinery/atmospherics/unary/vent_found
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
/mob/living/simple_animal/hostile/feral_cat
|
||||
name = "feral cat"
|
||||
desc = "Kitty!! Wait..."
|
||||
icon = 'icons/mob/pets.dmi'
|
||||
icon_state = "cat2"
|
||||
icon_living = "cat2"
|
||||
icon_dead = "cat2_dead"
|
||||
gender = MALE
|
||||
maxHealth = 20
|
||||
health = 20
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 5
|
||||
attacktext = "claws"
|
||||
speak = list("Meow!", "Esp!", "Purr!", "HSSSSS")
|
||||
speak_emote = list("purrs", "meows")
|
||||
emote_hear = list("meows", "mews")
|
||||
speak_chance = 1
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 2)
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
gold_core_spawnable = 1
|
||||
faction = list("cat")
|
||||
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
|
||||
unsuitable_atmos_damage = 5
|
||||
pass_flags = PASSTABLE
|
||||
@@ -149,7 +149,7 @@
|
||||
winset(src, "mapwindow.map", "icon-size=[src.reset_stretch]")
|
||||
viewingCanvas = 0
|
||||
mob.reset_view()
|
||||
if(mob.hud_used)
|
||||
if(mob.hud_used)
|
||||
mob.hud_used.show_hud(HUD_STYLE_STANDARD)
|
||||
|
||||
if(mob.control_object) Move_object(direct)
|
||||
@@ -181,12 +181,6 @@
|
||||
if(L.incorporeal_move)//Move though walls
|
||||
Process_Incorpmove(direct)
|
||||
return
|
||||
if(mob.client)
|
||||
if(mob.client.view != world.view)
|
||||
if(locate(/obj/item/weapon/gun/energy/sniperrifle, mob.contents)) // If mob moves while zoomed in with sniper rifle, unzoom them.
|
||||
var/obj/item/weapon/gun/energy/sniperrifle/s = locate() in mob
|
||||
if(s.zoom)
|
||||
s.zoom()
|
||||
|
||||
if(Process_Grab()) return
|
||||
|
||||
|
||||
@@ -294,3 +294,10 @@
|
||||
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
|
||||
projectile_type = "/obj/item/projectile/bullet/reusable/foam_dart/riot"
|
||||
icon_state = "foamdart_riot"
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/assassination
|
||||
desc = "A specialist shotgun dart designed to inncapacitate and kill the target over time, so you can get very far away from your target"
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/assassination/New()
|
||||
..()
|
||||
reagents.add_reagent("neurotoxin", 6)
|
||||
|
||||
@@ -50,6 +50,12 @@
|
||||
|
||||
var/burst_size = 1
|
||||
|
||||
//Zooming
|
||||
var/zoomable = FALSE //whether the gun generates a Zoom action on creation
|
||||
var/zoomed = FALSE //Zoom toggle
|
||||
var/zoom_amt = 3 //Distance in TURFs to move the user's screen forward (the "zoom" effect)
|
||||
var/datum/action/toggle_scope_zoom/azoom
|
||||
|
||||
proc/ready_to_fire()
|
||||
if(world.time >= last_fired + fire_delay)
|
||||
last_fired = world.time
|
||||
@@ -81,6 +87,23 @@
|
||||
proj.silenced = silenced
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/New()
|
||||
build_zooming()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/pickup(mob/user)
|
||||
|
||||
if(azoom)
|
||||
azoom.Grant(user)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/dropped(mob/user)
|
||||
|
||||
zoom(user,FALSE)
|
||||
if(azoom)
|
||||
azoom.Remove(user)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params)
|
||||
if(flag) return //we're placing gun on a table or in backpack
|
||||
if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this?
|
||||
@@ -381,3 +404,68 @@
|
||||
else
|
||||
set_light(0)
|
||||
return
|
||||
|
||||
/////////////
|
||||
// ZOOMING //
|
||||
/////////////
|
||||
|
||||
/datum/action/toggle_scope_zoom
|
||||
name = "Toggle Scope"
|
||||
check_flags = AB_CHECK_ALIVE|AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_LYING
|
||||
button_icon_state = "sniper_zoom"
|
||||
var/obj/item/weapon/gun/gun = null
|
||||
|
||||
/datum/action/toggle_scope_zoom/Trigger()
|
||||
gun.zoom(owner)
|
||||
|
||||
/datum/action/toggle_scope_zoom/IsAvailable()
|
||||
. = ..()
|
||||
if(!. && gun)
|
||||
gun.zoom(owner, FALSE)
|
||||
|
||||
/datum/action/toggle_scope_zoom/Remove(mob/living/L)
|
||||
gun.zoom(L, FALSE)
|
||||
..()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/gun/proc/zoom(mob/living/user, forced_zoom)
|
||||
if(!user || !user.client)
|
||||
return
|
||||
|
||||
switch(forced_zoom)
|
||||
if(FALSE)
|
||||
zoomed = FALSE
|
||||
if(TRUE)
|
||||
zoomed = TRUE
|
||||
else
|
||||
zoomed = !zoomed
|
||||
|
||||
if(zoomed)
|
||||
var/_x = 0
|
||||
var/_y = 0
|
||||
switch(user.dir)
|
||||
if(NORTH)
|
||||
_y = zoom_amt
|
||||
if(EAST)
|
||||
_x = zoom_amt
|
||||
if(SOUTH)
|
||||
_y = -zoom_amt
|
||||
if(WEST)
|
||||
_x = -zoom_amt
|
||||
|
||||
user.client.pixel_x = world.icon_size*_x
|
||||
user.client.pixel_y = world.icon_size*_y
|
||||
else
|
||||
user.client.pixel_x = 0
|
||||
user.client.pixel_y = 0
|
||||
|
||||
|
||||
//Proc, so that gun accessories/scopes/etc. can easily add zooming.
|
||||
/obj/item/weapon/gun/proc/build_zooming()
|
||||
if(azoom)
|
||||
return
|
||||
|
||||
if(zoomable)
|
||||
azoom = new()
|
||||
azoom.gun = src
|
||||
|
||||
@@ -148,7 +148,7 @@ obj/item/weapon/gun/energy/staff/focus
|
||||
name = "L.W.A.P. Sniper Rifle"
|
||||
desc = "A rifle constructed of lightweight materials, fitted with a SMART aiming-system scope."
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "sniper"
|
||||
icon_state = "esniper"
|
||||
fire_sound = 'sound/weapons/marauder.ogg'
|
||||
origin_tech = "combat=6;materials=5;powerstorage=4"
|
||||
projectile_type = "/obj/item/projectile/beam/sniper"
|
||||
@@ -156,41 +156,8 @@ obj/item/weapon/gun/energy/staff/focus
|
||||
charge_cost = 2500
|
||||
fire_delay = 50
|
||||
w_class = 4.0
|
||||
var/zoom = 0
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle/dropped(mob/user)
|
||||
user.client.view = world.view
|
||||
|
||||
|
||||
|
||||
/*
|
||||
This is called from
|
||||
modules/mob/mob_movement.dm if you move you will be zoomed out
|
||||
modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
*/
|
||||
|
||||
/obj/item/weapon/gun/energy/sniperrifle/verb/zoom()
|
||||
set category = "Object"
|
||||
set name = "Use Sniper Scope"
|
||||
set popup_menu = 0
|
||||
if(usr.stat || !(istype(usr,/mob/living/carbon/human)))
|
||||
to_chat(usr, "You are unable to focus down the scope of the rifle.")
|
||||
return
|
||||
if(!zoom && usr.get_active_hand() != src)
|
||||
to_chat(usr, "You are too distracted to look down the scope, perhaps if it was in your active hand this might work better")
|
||||
return
|
||||
|
||||
if(usr.client.view == world.view)
|
||||
if(usr.hud_used)
|
||||
usr.hud_used.show_hud(HUD_STYLE_NOHUD)
|
||||
usr.client.view = 12
|
||||
zoom = 1
|
||||
else
|
||||
usr.client.view = world.view
|
||||
if(usr.hud_used)
|
||||
usr.hud_used.show_hud(HUD_STYLE_STANDARD)
|
||||
zoom = 0
|
||||
to_chat(usr, "<font color='[zoom?"blue":"red"]'>Zoom mode [zoom?"en":"dis"]abled.</font>")
|
||||
zoomable = TRUE
|
||||
zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you.
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator
|
||||
|
||||
@@ -314,4 +314,44 @@
|
||||
icon_state = "cshotgun"
|
||||
origin_tech = "combat=5;materials=2"
|
||||
mag_type = "/obj/item/ammo_box/magazine/internal/shotcom"
|
||||
w_class = 5
|
||||
w_class = 5
|
||||
|
||||
//caneshotgun
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane
|
||||
name = "cane"
|
||||
desc = "A cane used by a true gentlemen. Or a clown."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "cane"
|
||||
item_state = "stick"
|
||||
sawn_state = SAWN_OFF
|
||||
w_class = 2
|
||||
force = 10
|
||||
can_unsuppress = 0
|
||||
slot_flags = null
|
||||
origin_tech = "" // NO GIVAWAYS
|
||||
mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/improvised"
|
||||
sawn_desc = "I'm sorry, but why did you saw your cane in the first place?"
|
||||
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
|
||||
fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
|
||||
silenced = 1
|
||||
needs_permit = 0 //its just a cane beepsky.....
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/attackby(obj/item/A, mob/user, params)
|
||||
..()
|
||||
if(istype(A, /obj/item/stack/cable_coil))
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/cane/examine(mob/user) // HAD TO REPEAT EXAMINE CODE BECAUSE GUN CODE DOESNT STEALTH
|
||||
var/f_name = "\a [src]."
|
||||
if(src.blood_DNA && !istype(src, /obj/effect/decal))
|
||||
if(gender == PLURAL)
|
||||
f_name = "some "
|
||||
else
|
||||
f_name = "a "
|
||||
f_name += "<span class='danger'>blood-stained</span> [name]!"
|
||||
|
||||
to_chat(user, "\icon[src] That's [f_name]")
|
||||
|
||||
if(desc)
|
||||
to_chat(user, desc)
|
||||
@@ -0,0 +1,148 @@
|
||||
/obj/item/weapon/gun/projectile/sniper_rifle
|
||||
name = "sniper rifle"
|
||||
desc = "the kind of gun that will leave you crying for mummy before you even realise your leg's missing"
|
||||
icon_state = "sniper"
|
||||
item_state = "sniper"
|
||||
recoil = 2
|
||||
heavy_weapon = 1
|
||||
mag_type = "/obj/item/ammo_box/magazine/sniper_rounds"
|
||||
fire_delay = 40
|
||||
origin_tech = "combat=8"
|
||||
can_unsuppress = 1
|
||||
can_suppress = 1
|
||||
w_class = 3
|
||||
zoomable = TRUE
|
||||
zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you.
|
||||
slot_flags = SLOT_BACK
|
||||
|
||||
/obj/item/weapon/gun/projectile/sniper_rifle/update_icon()
|
||||
if(magazine)
|
||||
icon_state = "sniper-mag"
|
||||
else
|
||||
icon_state = "sniper"
|
||||
|
||||
/obj/item/weapon/gun/projectile/sniper_rifle/syndicate
|
||||
name = "syndicate sniper rifle"
|
||||
desc = "Syndicate flavoured sniper rifle, it packs quite a punch, a punch to your face"
|
||||
origin_tech = "combat=8;syndicate=4"
|
||||
|
||||
//Normal Boolets
|
||||
/obj/item/ammo_box/magazine/sniper_rounds
|
||||
name = "sniper rounds (.50)"
|
||||
icon_state = ".50mag"
|
||||
origin_tech = "combat=6;syndicate=2"
|
||||
ammo_type = /obj/item/ammo_casing/point50
|
||||
max_ammo = 6
|
||||
caliber = ".50"
|
||||
|
||||
/obj/item/ammo_casing/point50
|
||||
desc = "A .50 bullet casing."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/sniper
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/ammo_box/magazine/sniper_rounds/update_icon()
|
||||
if(ammo_count())
|
||||
icon_state = "[initial(icon_state)]-ammo"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
/obj/item/projectile/bullet/sniper
|
||||
damage = 70
|
||||
stun = 5
|
||||
weaken = 5
|
||||
armour_penetration = 50
|
||||
var/breakthings = TRUE
|
||||
|
||||
/obj/item/projectile/bullet/sniper/on_hit(atom/target, blocked = 0, hit_zone)
|
||||
if((blocked != 100) && (!ismob(target) && breakthings))
|
||||
target.ex_act(rand(1,2))
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
//Sleepy ammo
|
||||
/obj/item/ammo_box/magazine/sniper_rounds/soporific
|
||||
name = "sniper rounds (Zzzzz)"
|
||||
desc = "Soporific sniper rounds, designed for happy days and dead quiet nights..."
|
||||
icon_state = "soporific"
|
||||
origin_tech = "combat=6;syndicate=3"
|
||||
ammo_type = /obj/item/ammo_casing/soporific
|
||||
max_ammo = 3
|
||||
caliber = ".50"
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/ammo_casing/soporific
|
||||
desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/sniper/soporific
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/projectile/bullet/sniper/soporific
|
||||
nodamage = 1
|
||||
stun = 0
|
||||
weaken = 0
|
||||
armour_penetration = 0
|
||||
breakthings = FALSE
|
||||
|
||||
/obj/item/projectile/bullet/sniper/soporific/on_hit(atom/target, blocked = 0, hit_zone)
|
||||
if((blocked != 100) && istype(target, /mob/living))
|
||||
var/mob/living/L = target
|
||||
L.SetSleeping(20)
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
//hemorrhage ammo
|
||||
/obj/item/ammo_box/magazine/sniper_rounds/haemorrhage
|
||||
name = "sniper rounds (Bleed)"
|
||||
desc = "Haemorrhage sniper rounds, leaves your target in a pool of crimson pain"
|
||||
icon_state = "haemorrhage"
|
||||
origin_tech = "combat=7;syndicate=5"
|
||||
ammo_type = /obj/item/ammo_casing/haemorrhage
|
||||
max_ammo = 5
|
||||
caliber = ".50"
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/ammo_casing/haemorrhage
|
||||
desc = "A .50 bullet casing, specialised in causing massive bloodloss"
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/sniper/haemorrhage
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/projectile/bullet/sniper/haemorrhage
|
||||
damage = 15
|
||||
stun = 0
|
||||
weaken = 0
|
||||
breakthings = FALSE
|
||||
armour_penetration = 15
|
||||
|
||||
/obj/item/projectile/bullet/sniper/haemorrhage/on_hit(atom/target, blocked = 0, hit_zone)
|
||||
if((blocked != 100) && istype(target, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.drip(1000)
|
||||
|
||||
return ..()
|
||||
|
||||
//penetrator ammo
|
||||
/obj/item/ammo_box/magazine/sniper_rounds/penetrator
|
||||
name = "sniper rounds (penetrator)"
|
||||
desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it."
|
||||
ammo_type = /obj/item/ammo_casing/penetrator
|
||||
max_ammo = 5
|
||||
|
||||
/obj/item/ammo_casing/penetrator
|
||||
desc = "A .50 caliber penetrator round casing."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/sniper/penetrator
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/projectile/bullet/sniper/penetrator
|
||||
icon_state = "gauss"
|
||||
name = "penetrator round"
|
||||
damage = 60
|
||||
forcedodge = 1
|
||||
stun = 0
|
||||
weaken = 0
|
||||
breakthings = FALSE
|
||||
@@ -1,76 +1,75 @@
|
||||
//Anything for harm or hostile intents go here (explosions, EMPs, thermite, mutagen)
|
||||
/datum/chemical_reaction
|
||||
/datum/chemical_reaction/explosion_potassium
|
||||
name = "Explosion"
|
||||
id = "explosion_potassium"
|
||||
result = null
|
||||
required_reagents = list("water" = 1, "potassium" = 1)
|
||||
result_amount = 2
|
||||
mix_message = "The mixture explodes!"
|
||||
|
||||
explosion_potassium
|
||||
name = "Explosion"
|
||||
id = "explosion_potassium"
|
||||
result = null
|
||||
required_reagents = list("water" = 1, "potassium" = 1)
|
||||
result_amount = 2
|
||||
mix_message = "The mixture explodes!"
|
||||
/datum/chemical_reaction/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0)
|
||||
e.start()
|
||||
holder.clear_reagents()
|
||||
return
|
||||
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0)
|
||||
e.start()
|
||||
holder.clear_reagents()
|
||||
return
|
||||
/datum/chemical_reaction/emp_pulse
|
||||
name = "EMP Pulse"
|
||||
id = "emp_pulse"
|
||||
result = null
|
||||
required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
|
||||
result_amount = 2
|
||||
|
||||
emp_pulse
|
||||
name = "EMP Pulse"
|
||||
id = "emp_pulse"
|
||||
result = null
|
||||
required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
|
||||
result_amount = 2
|
||||
/datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
|
||||
// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
|
||||
empulse(location, round(created_volume / 24), round(created_volume / 14), 1)
|
||||
holder.clear_reagents()
|
||||
return
|
||||
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
|
||||
// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
|
||||
empulse(location, round(created_volume / 24), round(created_volume / 14), 1)
|
||||
holder.clear_reagents()
|
||||
return
|
||||
/datum/chemical_reaction/mutagen
|
||||
name = "Unstable mutagen"
|
||||
id = "mutagen"
|
||||
result = "mutagen"
|
||||
required_reagents = list("radium" = 1, "plasma" = 1, "chlorine" = 1)
|
||||
result_amount = 3
|
||||
mix_message = "The substance turns neon green and bubbles unnervingly."
|
||||
|
||||
mutagen
|
||||
name = "Unstable mutagen"
|
||||
id = "mutagen"
|
||||
result = "mutagen"
|
||||
required_reagents = list("radium" = 1, "plasma" = 1, "chlorine" = 1)
|
||||
result_amount = 3
|
||||
mix_message = "The substance turns neon green and bubbles unnervingly."
|
||||
/datum/chemical_reaction/thermite
|
||||
name = "Thermite"
|
||||
id = "thermite"
|
||||
result = "thermite"
|
||||
required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1)
|
||||
result_amount = 3
|
||||
|
||||
thermite
|
||||
name = "Thermite"
|
||||
id = "thermite"
|
||||
result = "thermite"
|
||||
required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1)
|
||||
result_amount = 3
|
||||
/datum/chemical_reaction/glycerol
|
||||
name = "Glycerol"
|
||||
id = "glycerol"
|
||||
result = "glycerol"
|
||||
required_reagents = list("cornoil" = 3, "sacid" = 1)
|
||||
result_amount = 1
|
||||
|
||||
glycerol
|
||||
name = "Glycerol"
|
||||
id = "glycerol"
|
||||
result = "glycerol"
|
||||
required_reagents = list("cornoil" = 3, "sacid" = 1)
|
||||
result_amount = 1
|
||||
/datum/chemical_reaction/nitroglycerin
|
||||
name = "Nitroglycerin"
|
||||
id = "nitroglycerin"
|
||||
result = "nitroglycerin"
|
||||
required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1)
|
||||
result_amount = 2
|
||||
|
||||
nitroglycerin
|
||||
name = "Nitroglycerin"
|
||||
id = "nitroglycerin"
|
||||
result = "nitroglycerin"
|
||||
required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1)
|
||||
result_amount = 2
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0)
|
||||
e.start()
|
||||
/datum/chemical_reaction/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round(created_volume/2, 1), holder.my_atom, 0, 0)
|
||||
e.start()
|
||||
|
||||
holder.clear_reagents()
|
||||
return
|
||||
holder.clear_reagents()
|
||||
return
|
||||
|
||||
condensedcapsaicin
|
||||
name = "Condensed Capsaicin"
|
||||
id = "condensedcapsaicin"
|
||||
result = "condensedcapsaicin"
|
||||
required_reagents = list("capsaicin" = 2)
|
||||
required_catalysts = list("plasma" = 5)
|
||||
result_amount = 1
|
||||
/datum/chemical_reaction/condensedcapsaicin
|
||||
name = "Condensed Capsaicin"
|
||||
id = "condensedcapsaicin"
|
||||
result = "condensedcapsaicin"
|
||||
required_reagents = list("capsaicin" = 2)
|
||||
required_catalysts = list("plasma" = 5)
|
||||
result_amount = 1
|
||||
@@ -394,7 +394,6 @@
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/datum/reagent/condensedcapsaicin
|
||||
name = "Condensed Capsaicin"
|
||||
|
||||
@@ -301,7 +301,6 @@
|
||||
..()
|
||||
reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide","spidereggs","nanomachines"), 40)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/plasma
|
||||
name = "plasma dust bottle"
|
||||
desc = "A small bottle of plasma in dust form. Extremely toxic and reacts with micro-organisms inside blood."
|
||||
|
||||
Reference in New Issue
Block a user