mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-30 07:27:57 +01:00
Fixes merge conflict
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
|
||||
/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1)
|
||||
if(active_dummy)
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread
|
||||
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
spark_system.start()
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
for(var/obj/item/borg/combat/shield/S in R.module.modules)
|
||||
if(R.activated(S))
|
||||
add_logs(user, M, "flashed", object="[src.name]")
|
||||
user.visible_message("<span class='disarm'>[user] tries to overloads [M]'s sensors with the [src.name], but if blocked by [M]'s shield!</span>", "<span class='danger'>You try to overload [M]'s sensors with the [src.name], but are blocked by his shield!</span>")
|
||||
user.visible_message("<span class='disarm'>[user] tries to overloads [M]'s sensors with the [src.name], but is blocked by [M]'s shield!</span>", "<span class='danger'>You try to overload [M]'s sensors with the [src.name], but are blocked by their shield!</span>")
|
||||
return 1
|
||||
add_logs(user, M, "flashed", object="[src.name]")
|
||||
if(M.flash_eyes(affect_silicon = 1))
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
if(M)
|
||||
M.moved_recently = 0
|
||||
to_chat(M, "<span class='danger'>You feel a sharp shock!</span>")
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(3, 1, M)
|
||||
s.start()
|
||||
|
||||
|
||||
@@ -675,6 +675,13 @@ var/global/list/default_medbay_channels = list(
|
||||
..()
|
||||
set_frequency(DTH_FREQ)
|
||||
|
||||
/obj/item/device/radio/borg/ert
|
||||
keyslot = new /obj/item/device/encryptionkey/ert
|
||||
|
||||
/obj/item/device/radio/borg/ert/New()
|
||||
..()
|
||||
set_frequency(ERT_FREQ)
|
||||
|
||||
/obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
// ..()
|
||||
user.set_machine(src)
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
// -------------------------------------
|
||||
/obj/item/toy/random
|
||||
name = "Random Toy"
|
||||
New()
|
||||
..()
|
||||
var/list/types = list(/obj/item/weapon/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
|
||||
var/T = pick(types)
|
||||
new T(loc)
|
||||
spawn(1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/toy/random/New()
|
||||
..()
|
||||
var/list/types = list(/obj/item/weapon/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
|
||||
var/T = pick(types)
|
||||
new T(loc)
|
||||
spawn(1)
|
||||
qdel(src)
|
||||
|
||||
// -------------------------------------
|
||||
// Random cleanables, clearly this makes sense
|
||||
@@ -17,24 +18,26 @@
|
||||
|
||||
/obj/effect/decal/cleanable/random
|
||||
name = "Random Mess"
|
||||
New()
|
||||
..()
|
||||
var/list/list = subtypesof(/obj/effect/decal/cleanable) - list(/obj/effect/decal/cleanable/random,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/cobweb2)
|
||||
var/T = pick(list)
|
||||
new T(loc)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/random/New()
|
||||
..()
|
||||
var/list/list = subtypesof(/obj/effect/decal/cleanable) - list(/obj/effect/decal/cleanable/random,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/cobweb2)
|
||||
var/T = pick(list)
|
||||
new T(loc)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/stack/sheet/animalhide/random
|
||||
name = "random animal hide"
|
||||
New()
|
||||
..()
|
||||
spawn(1)
|
||||
var/htype = pick(/obj/item/stack/sheet/animalhide/cat,/obj/item/stack/sheet/animalhide/corgi,/obj/item/stack/sheet/animalhide/human,/obj/item/stack/sheet/animalhide/lizard,/obj/item/stack/sheet/animalhide/monkey)
|
||||
var/obj/item/stack/S = new htype(loc)
|
||||
S.amount = amount
|
||||
qdel(src)
|
||||
|
||||
/obj/item/stack/sheet/animalhide/random/New()
|
||||
..()
|
||||
spawn(1)
|
||||
var/htype = pick(/obj/item/stack/sheet/animalhide/cat,/obj/item/stack/sheet/animalhide/corgi,/obj/item/stack/sheet/animalhide/human,/obj/item/stack/sheet/animalhide/lizard,/obj/item/stack/sheet/animalhide/monkey)
|
||||
var/obj/item/stack/S = new htype(loc)
|
||||
S.amount = amount
|
||||
qdel(src)
|
||||
|
||||
// -------------------------------------
|
||||
// Not yet identified chemical.
|
||||
@@ -43,103 +46,108 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/random_reagent
|
||||
name = "unlabelled bottle"
|
||||
// identify_probability = 0
|
||||
New()
|
||||
..()
|
||||
var/datum/reagent/R = pick(chemical_reagents_list)
|
||||
if(rare_chemicals.Find(R))
|
||||
reagents.add_reagent(R,10)
|
||||
else
|
||||
reagents.add_reagent(R,rand(2,3)*10)
|
||||
pixel_x = rand(-10,10)
|
||||
pixel_y = rand(-10,10)
|
||||
// identify_probability = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/random_reagent/New()
|
||||
..()
|
||||
var/list/possible_chems = chemical_reagents_list.Copy()
|
||||
possible_chems -= blocked_chems.Copy()
|
||||
var/datum/reagent/R = pick(possible_chems)
|
||||
if(rare_chemicals.Find(R))
|
||||
reagents.add_reagent(R, 10)
|
||||
else
|
||||
reagents.add_reagent(R, rand(2, 3)*10)
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
|
||||
//Cuts out the food and drink reagents
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/random_chem
|
||||
name = "unlabelled chemical bottle"
|
||||
// identify_probability = 0
|
||||
New()
|
||||
..()
|
||||
// identify_probability = 0
|
||||
|
||||
var/datum/reagent/R = pick(standard_chemicals + rare_chemicals)
|
||||
if(rare_chemicals.Find(R))
|
||||
reagents.add_reagent(R,10)
|
||||
else
|
||||
reagents.add_reagent(R,rand(2,3)*10)
|
||||
name = "unlabelled bottle"
|
||||
pixel_x = rand(-10,10)
|
||||
pixel_y = rand(-10,10)
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/random_chem/New()
|
||||
..()
|
||||
var/R = get_random_reagent_id()
|
||||
if(rare_chemicals.Find(R))
|
||||
reagents.add_reagent(R, 10)
|
||||
else
|
||||
reagents.add_reagent(R, rand(2, 3)*10)
|
||||
name = "unlabelled bottle"
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem
|
||||
name = "unlabelled chemical bottle"
|
||||
// identify_probability = 0
|
||||
New()
|
||||
..()
|
||||
var/datum/reagent/R = pick(base_chemicals)
|
||||
reagents.add_reagent(R,rand(2,6)*5)
|
||||
name = "unlabelled bottle"
|
||||
pixel_x = rand(-10,10)
|
||||
pixel_y = rand(-10,10)
|
||||
// identify_probability = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem/New()
|
||||
..()
|
||||
var/datum/reagent/R = pick(base_chemicals)
|
||||
reagents.add_reagent(R, rand(2, 6)*5)
|
||||
name = "unlabelled bottle"
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
|
||||
name = "unlabelled drink"
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
New()
|
||||
..()
|
||||
var/list/additional_drinks = list()
|
||||
if(prob(50))
|
||||
additional_drinks += list("pancuronium","lsd","omnizine","blood")
|
||||
|
||||
var/datum/reagent/R = pick(drinks + additional_drinks)
|
||||
reagents.add_reagent(R,volume)
|
||||
name = "unlabelled bottle"
|
||||
icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red")
|
||||
pixel_x = rand(-5,5)
|
||||
pixel_y = rand(-5,5)
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink/New()
|
||||
..()
|
||||
var/list/possible_drinks = drinks.Copy()
|
||||
if(prob(50))
|
||||
possible_drinks += list("pancuronium","lsd","omnizine","blood")
|
||||
|
||||
var/datum/reagent/R = pick(possible_drinks)
|
||||
reagents.add_reagent(R, volume)
|
||||
name = "unlabelled bottle"
|
||||
icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red")
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent // Same as the chembottle code except the container
|
||||
name = "unlabelled drink?"
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
New()
|
||||
..()
|
||||
var/datum/reagent/R = pick(chemical_reagents_list)
|
||||
if(rare_chemicals.Find(R))
|
||||
reagents.add_reagent(R,10)
|
||||
else
|
||||
reagents.add_reagent(R,rand(3,10)*10)
|
||||
name = "unlabelled bottle"
|
||||
icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red")
|
||||
pixel_x = rand(-5,5)
|
||||
pixel_y = rand(-5,5)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent/New()
|
||||
..()
|
||||
|
||||
var/R = get_random_reagent_id()
|
||||
if(rare_chemicals.Find(R))
|
||||
reagents.add_reagent(R, 10)
|
||||
else
|
||||
reagents.add_reagent(R, rand(3, 10)*10)
|
||||
name = "unlabelled bottle"
|
||||
icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red")
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/random_meds
|
||||
name = "unlabelled pillbottle"
|
||||
desc = "The sheer recklessness of this bottle's existence astounds you."
|
||||
|
||||
New()
|
||||
..()
|
||||
var/i = 1
|
||||
while(i < storage_slots)
|
||||
/obj/item/weapon/storage/pill_bottle/random_meds/New()
|
||||
..()
|
||||
var/i = 1
|
||||
while(i < storage_slots)
|
||||
var/list/possible_medicines = standard_medicines.Copy()
|
||||
if(prob(50))
|
||||
possible_medicines += rare_medicines.Copy()
|
||||
var/datum/reagent/R = pick(possible_medicines)
|
||||
var/obj/item/weapon/reagent_containers/food/pill/P = new(src)
|
||||
|
||||
var/datum/reagent/R
|
||||
if(prob(50))
|
||||
R = pick(standard_medicines + rare_medicines)
|
||||
else
|
||||
R = pick(standard_medicines)
|
||||
var/obj/item/weapon/reagent_containers/food/pill/P = new(src)
|
||||
if(rare_medicines.Find(R))
|
||||
P.reagents.add_reagent(R, 10)
|
||||
else
|
||||
P.reagents.add_reagent(R, rand(2, 5)*10)
|
||||
P.name = "Unlabelled Pill"
|
||||
P.desc = "Something about this pill entices you to try it, against your better judgement."
|
||||
i++
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
|
||||
if(rare_medicines.Find(R))
|
||||
P.reagents.add_reagent(R,10)
|
||||
else
|
||||
P.reagents.add_reagent(R,rand(2,5)*10)
|
||||
P.name = "Unlabelled Pill"
|
||||
P.desc = "Something about this pill entices you to try it, against your better judgement."
|
||||
i++
|
||||
pixel_x = rand(-10,10)
|
||||
pixel_y = rand(-10,10)
|
||||
return
|
||||
|
||||
// -------------------------------------
|
||||
// Containers full of unknown crap
|
||||
@@ -150,43 +158,43 @@
|
||||
desc = "Crate full of chemicals of unknown type and value from a 'trusted' source."
|
||||
req_one_access = list(access_chemistry,access_research,access_qm) // the qm knows a guy, you see.
|
||||
|
||||
New()
|
||||
..()
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
|
||||
while(prob(50))
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_reagent(src)
|
||||
/obj/structure/closet/crate/secure/unknownchemicals/New()
|
||||
..()
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
|
||||
while(prob(50))
|
||||
new/obj/item/weapon/reagent_containers/glass/bottle/random_reagent(src)
|
||||
|
||||
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
|
||||
while(prob(25))
|
||||
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
|
||||
while(prob(25))
|
||||
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
|
||||
|
||||
/obj/structure/closet/crate/secure/chemicals
|
||||
name = "chemical supply kit"
|
||||
desc = "Full of basic chemistry supplies."
|
||||
req_one_access = list(access_chemistry,access_research)
|
||||
name = "chemical supply kit"
|
||||
desc = "Full of basic chemistry supplies."
|
||||
req_one_access = list(access_chemistry,access_research)
|
||||
|
||||
New()
|
||||
..()
|
||||
for(var/chem in standard_chemicals)
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src)
|
||||
B.reagents.add_reagent(chem,B.volume)
|
||||
if(prob(85))
|
||||
var/datum/reagent/r = chemical_reagents_list[chem]
|
||||
B.name = "[r.name] bottle"
|
||||
// B.identify_probability = 100
|
||||
else
|
||||
B.name = "unlabelled bottle"
|
||||
B.desc = "Looks like the label fell off."
|
||||
// B.identify_probability = 0
|
||||
/obj/structure/closet/crate/secure/chemicals/New()
|
||||
..()
|
||||
for(var/chem in standard_chemicals)
|
||||
var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src)
|
||||
B.reagents.add_reagent(chem, B.volume)
|
||||
if(prob(85))
|
||||
var/datum/reagent/r = chemical_reagents_list[chem]
|
||||
B.name = "[r.name] bottle"
|
||||
// B.identify_probability = 100
|
||||
else
|
||||
B.name = "unlabelled bottle"
|
||||
B.desc = "Looks like the label fell off."
|
||||
// B.identify_probability = 0
|
||||
|
||||
/*
|
||||
/obj/structure/closet/crate/bin/flowers
|
||||
@@ -235,15 +243,15 @@
|
||||
icon_broken = "cabinetdetective_broken"
|
||||
icon_off = "cabinetdetective_broken"
|
||||
|
||||
New()
|
||||
..()
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
while(prob(25))
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent(src)
|
||||
/obj/structure/closet/secure_closet/random_drinks/New()
|
||||
..()
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
|
||||
while(prob(25))
|
||||
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent(src)
|
||||
|
||||
|
||||
// -------------------------------------
|
||||
@@ -257,23 +265,23 @@
|
||||
name = "\improper Mysterious Crate"
|
||||
desc = "What could it be?"
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
var/list/menace = pick( /mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/faithless,/mob/living/simple_animal/hostile/pirate,
|
||||
/mob/living/simple_animal/hostile/creature,/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/simple_animal/hostile/hivebot,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/pirate)
|
||||
/obj/structure/largecrate/evil/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
var/list/menace = pick( /mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/faithless,/mob/living/simple_animal/hostile/pirate,
|
||||
/mob/living/simple_animal/hostile/creature,/mob/living/simple_animal/hostile/pirate/ranged,
|
||||
/mob/living/simple_animal/hostile/hivebot,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/pirate)
|
||||
|
||||
visible_message("<span class='warning'>Something falls out of the [src]!</span>")
|
||||
var/obj/item/weapon/grenade/clusterbuster/C = new(src.loc)
|
||||
C.prime()
|
||||
spawn(10)
|
||||
new menace(src.loc)
|
||||
while(prob(15))
|
||||
new menace(get_step_rand(src.loc))
|
||||
..()
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
visible_message("<span class='warning'>Something falls out of the [src]!</span>")
|
||||
var/obj/item/weapon/grenade/clusterbuster/C = new(src.loc)
|
||||
C.prime()
|
||||
spawn(10)
|
||||
new menace(src.loc)
|
||||
while(prob(15))
|
||||
new menace(get_step_rand(src.loc))
|
||||
..()
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
//
|
||||
@@ -288,22 +296,22 @@
|
||||
name = "Schrodinger's Crate"
|
||||
desc = "What happens if you open it?"
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
var/mob/living/simple_animal/pet/cat/Cat1 = new(loc)
|
||||
Cat1.apply_damage(250)//,TOX)
|
||||
Cat1.name = "Schrodinger's Cat"
|
||||
Cat1.desc = "It seems it's been dead for a while."
|
||||
/obj/structure/largecrate/schrodinger/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
var/mob/living/simple_animal/pet/cat/Cat1 = new(loc)
|
||||
Cat1.apply_damage(250)//,TOX)
|
||||
Cat1.name = "Schrodinger's Cat"
|
||||
Cat1.desc = "It seems it's been dead for a while."
|
||||
|
||||
var/mob/living/simple_animal/pet/cat/Cat2 = new(loc)
|
||||
Cat2.name = "Schrodinger's Cat"
|
||||
Cat2.desc = "It's was alive the whole time!"
|
||||
sleep(2)
|
||||
if(prob(50))
|
||||
qdel(Cat1)
|
||||
else
|
||||
qdel(Cat2)
|
||||
return ..()
|
||||
var/mob/living/simple_animal/pet/cat/Cat2 = new(loc)
|
||||
Cat2.name = "Schrodinger's Cat"
|
||||
Cat2.desc = "It's was alive the whole time!"
|
||||
sleep(2)
|
||||
if(prob(50))
|
||||
qdel(Cat1)
|
||||
else
|
||||
qdel(Cat2)
|
||||
return ..()
|
||||
|
||||
// --------------------------------------
|
||||
// Collen's box of wonder and mystery
|
||||
@@ -318,18 +326,18 @@
|
||||
/obj/item/weapon/grenade/chem_grenade/dirt, /obj/item/weapon/grenade/chem_grenade/lube, /obj/item/weapon/grenade/smokebomb,
|
||||
/obj/item/weapon/grenade/chem_grenade/drugs, /obj/item/weapon/grenade/chem_grenade/ethanol) // holy list batman
|
||||
|
||||
New()
|
||||
..()
|
||||
var/nade1 = pick(grenadelist)
|
||||
var/nade2 = pick(grenadelist)
|
||||
var/nade3 = pick(grenadelist)
|
||||
var/nade4 = pick(grenadelist)
|
||||
var/nade5 = pick(grenadelist)
|
||||
var/nade6 = pick(grenadelist)
|
||||
/obj/item/weapon/storage/box/grenades/New()
|
||||
..()
|
||||
var/nade1 = pick(grenadelist)
|
||||
var/nade2 = pick(grenadelist)
|
||||
var/nade3 = pick(grenadelist)
|
||||
var/nade4 = pick(grenadelist)
|
||||
var/nade5 = pick(grenadelist)
|
||||
var/nade6 = pick(grenadelist)
|
||||
|
||||
new nade1(src)
|
||||
new nade2(src)
|
||||
new nade3(src)
|
||||
new nade4(src)
|
||||
new nade5(src)
|
||||
new nade6(src)
|
||||
new nade1(src)
|
||||
new nade2(src)
|
||||
new nade3(src)
|
||||
new nade4(src)
|
||||
new nade5(src)
|
||||
new nade6(src)
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
/obj/item/borg/upgrade/rename/action(var/mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
return
|
||||
if(!R.allow_rename)
|
||||
to_chat(R, "<span class='warning'>Internal diagnostic error: incompatible upgrade module detected.</span>");
|
||||
return 0
|
||||
R.notify_ai(3, R.name, heldname)
|
||||
R.name = heldname
|
||||
R.custom_name = heldname
|
||||
@@ -215,6 +218,10 @@
|
||||
if(R.emagged)
|
||||
return
|
||||
|
||||
if(R.weapons_unlock)
|
||||
to_chat(R, "<span class='warning'>Internal diagnostic error: incompatible upgrade module detected.</span>");
|
||||
return
|
||||
|
||||
R.emagged = 1
|
||||
|
||||
return 1
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
icon_state = "sheet-glass"
|
||||
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
|
||||
origin_tech = "materials=1"
|
||||
var/created_window = /obj/structure/window/basic
|
||||
var/full_window = /obj/structure/window/full/basic
|
||||
created_window = /obj/structure/window/basic
|
||||
full_window = /obj/structure/window/full/basic
|
||||
merge_type = /obj/item/stack/sheet/glass
|
||||
|
||||
/obj/item/stack/sheet/glass/fifty
|
||||
@@ -154,8 +154,8 @@
|
||||
icon_state = "sheet-rglass"
|
||||
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
|
||||
origin_tech = "materials=2"
|
||||
var/created_window = /obj/structure/window/reinforced
|
||||
var/full_window = /obj/structure/window/full/reinforced
|
||||
created_window = /obj/structure/window/reinforced
|
||||
full_window = /obj/structure/window/full/reinforced
|
||||
merge_type = /obj/item/stack/sheet/rglass
|
||||
|
||||
/obj/item/stack/sheet/rglass/cyborg
|
||||
@@ -268,8 +268,8 @@
|
||||
icon_state = "sheet-plasmaglass"
|
||||
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT*2)
|
||||
origin_tech = "plasmatech=2;materials=2"
|
||||
var/created_window = /obj/structure/window/plasmabasic
|
||||
var/full_window = /obj/structure/window/full/plasmabasic
|
||||
created_window = /obj/structure/window/plasmabasic
|
||||
full_window = /obj/structure/window/full/plasmabasic
|
||||
|
||||
|
||||
/obj/item/stack/sheet/plasmaglass/attack_self(mob/user as mob)
|
||||
@@ -357,8 +357,8 @@
|
||||
icon_state = "sheet-plasmarglass"
|
||||
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT*2)
|
||||
origin_tech = "plasmatech=2;materials=2"
|
||||
var/created_window = /obj/structure/window/plasmareinforced
|
||||
var/full_window = /obj/structure/window/full/plasmareinforced
|
||||
created_window = /obj/structure/window/plasmareinforced
|
||||
full_window = /obj/structure/window/full/plasmareinforced
|
||||
|
||||
|
||||
/obj/item/stack/sheet/plasmarglass/attack_self(mob/user as mob)
|
||||
|
||||
@@ -168,6 +168,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \
|
||||
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
|
||||
message_admins("Plasma sheets ignited by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])")
|
||||
investigate_log("was <font color='red'><b>ignited</b></font> by [key_name(user)]","atmos")
|
||||
fire_act()
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -258,13 +258,13 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list (
|
||||
* Runed Metal
|
||||
*/
|
||||
|
||||
var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \
|
||||
new/datum/stack_recipe("runed door", /obj/machinery/door/airlock/cult, 1, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe("runed girder", /obj/structure/girder/cult, 1, time = 50, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("pylon", /obj/structure/cult/functional/pylon, 3, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("forge", /obj/structure/cult/functional/forge, 5, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("archives", /obj/structure/cult/functional/tome, 2, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("altar", /obj/structure/cult/functional/talisman, 5, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
var/global/list/datum/stack_recipe/cult = list ( \
|
||||
new/datum/stack_recipe/cult("runed door", /obj/machinery/door/airlock/cult, 1, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new/datum/stack_recipe/cult("runed girder", /obj/structure/girder/cult, 1, time = 50, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/cult("pylon", /obj/structure/cult/functional/pylon, 3, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/cult("forge", /obj/structure/cult/functional/forge, 5, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/cult("archives", /obj/structure/cult/functional/tome, 2, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe/cult("altar", /obj/structure/cult/functional/talisman, 5, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/runed_metal
|
||||
@@ -280,13 +280,27 @@ var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \
|
||||
if(!iscultist(user))
|
||||
to_chat(user, "<span class='warning'>Only one with forbidden knowledge could hope to work this metal...</span>")
|
||||
return
|
||||
if(!is_level_reachable(user.z))
|
||||
to_chat(user, "<span class='warning'>The energies of this place interfere with the metal shaping!</span>")
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/stack_recipe/cult
|
||||
one_per_turf = 1
|
||||
on_floor = 1
|
||||
|
||||
/datum/stack_recipe/cult/post_build(obj/item/stack/S, obj/result)
|
||||
if(ishuman(S.loc))
|
||||
var/mob/living/carbon/human/H = S.loc
|
||||
H.bleed(5)
|
||||
..()
|
||||
|
||||
/obj/item/stack/sheet/runed_metal/fifty
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/runed_metal/New(var/loc, var/amount=null)
|
||||
recipes = runed_metal_recipes
|
||||
recipes = cult
|
||||
return ..()
|
||||
|
||||
/*
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
|
||||
var/perunit = MINERAL_MATERIAL_AMOUNT
|
||||
var/sheettype = null //this is used for girders in the creation of walls/false walls
|
||||
var/created_window = null //apparently glass sheets don't share a base type for glass specifically, so each had to define these vars individually
|
||||
var/full_window = null //moving the var declaration to here so this can be checked cleaner until someone is willing to make them share a base type properly
|
||||
usesound = 'sound/items/Deconstruct.ogg'
|
||||
toolspeed = 1
|
||||
|
||||
|
||||
@@ -166,3 +166,15 @@
|
||||
desc = "A grooved floor tile."
|
||||
icon_state = "tile_pod"
|
||||
turf_type = /turf/simulated/floor/pod
|
||||
|
||||
/obj/item/stack/tile/arcade_carpet
|
||||
name = "arcade carpet"
|
||||
singular_name = "arcade carpet"
|
||||
desc= "A piece of carpet with a retro spaceship pattern."
|
||||
icon_state = "tile_space"
|
||||
turf_type = /turf/simulated/floor/carpet/arcade
|
||||
merge_type = /obj/item/stack/tile/arcade_carpet
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/stack/tile/arcade_carpet/loaded
|
||||
amount = 20
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
|
||||
/obj/item/toy/snappop/virus/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
new /obj/effect/decal/cleanable/ash(src.loc)
|
||||
@@ -264,7 +264,7 @@
|
||||
var/ash_type = /obj/effect/decal/cleanable/ash
|
||||
|
||||
/obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1)
|
||||
var/datum/effect/system/spark_spread/s = new()
|
||||
var/datum/effect_system/spark_spread/s = new()
|
||||
s.set_up(n, c, src)
|
||||
s.start()
|
||||
new ash_type(loc)
|
||||
|
||||
@@ -20,7 +20,7 @@ RCD
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
toolspeed = 1
|
||||
usesound = 'sound/items/Deconstruct.ogg'
|
||||
var/datum/effect/system/spark_spread/spark_system
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
var/max_matter = 100
|
||||
var/matter = 0
|
||||
var/working = 0
|
||||
@@ -47,7 +47,7 @@ RCD
|
||||
|
||||
/obj/item/weapon/rcd/New()
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
spark_system = new /datum/effect/system/spark_spread
|
||||
spark_system = new /datum/effect_system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
rcd_list += src
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
CONTAINS:
|
||||
RSF
|
||||
|
||||
*/
|
||||
|
||||
/obj/item/weapon/rsf
|
||||
name = "\improper Rapid-Service-Fabricator"
|
||||
desc = "A device used to rapidly deploy service items."
|
||||
@@ -14,9 +14,21 @@ RSF
|
||||
var/matter = 0
|
||||
var/mode = 1
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/list/configured_items = list()
|
||||
|
||||
/obj/item/weapon/rsf/New()
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
// configured_items[ID_NUMBER] = list("Human-readable name", price in energy, /type/path)
|
||||
configured_items[++configured_items.len] = list("Dosh", 50, /obj/item/stack/spacecash/c10)
|
||||
configured_items[++configured_items.len] = list("Drinking Glass", 50, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass)
|
||||
configured_items[++configured_items.len] = list("Paper", 50, /obj/item/weapon/paper)
|
||||
configured_items[++configured_items.len] = list("Pen", 50, /obj/item/weapon/pen)
|
||||
configured_items[++configured_items.len] = list("Dice Pack", 50, /obj/item/weapon/storage/pill_bottle/dice)
|
||||
configured_items[++configured_items.len] = list("Cigarette", 50, /obj/item/clothing/mask/cigarette)
|
||||
configured_items[++configured_items.len] = list("Snack - Newdles", 4000, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles)
|
||||
configured_items[++configured_items.len] = list("Snack - Donut", 4000, /obj/item/weapon/reagent_containers/food/snacks/donut)
|
||||
configured_items[++configured_items.len] = list("Snack - Chicken Soup", 4000, /obj/item/weapon/reagent_containers/food/drinks/chicken_soup)
|
||||
configured_items[++configured_items.len] = list("Snack - Turkey Burger", 4000, /obj/item/weapon/reagent_containers/food/snacks/tofuburger)
|
||||
return
|
||||
|
||||
/obj/item/weapon/rsf/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
@@ -34,201 +46,41 @@ RSF
|
||||
|
||||
/obj/item/weapon/rsf/attack_self(mob/user as mob)
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
|
||||
if(mode == 1)
|
||||
mode = 2
|
||||
to_chat(user, "Changed dispensing mode to 'Drinking Glass'")
|
||||
return
|
||||
if(mode == 2)
|
||||
mode = 3
|
||||
to_chat(user, "Changed dispensing mode to 'Paper'")
|
||||
return
|
||||
if(mode == 3)
|
||||
mode = 4
|
||||
to_chat(user, "Changed dispensing mode to 'Pen'")
|
||||
return
|
||||
if(mode == 4)
|
||||
mode = 5
|
||||
to_chat(user, "Changed dispensing mode to 'Dice Pack'")
|
||||
return
|
||||
if(mode == 5)
|
||||
mode = 6
|
||||
to_chat(user, "Changed dispensing mode to 'Cigarette'")
|
||||
return
|
||||
if(mode == 6)
|
||||
if(mode == configured_items.len)
|
||||
mode = 1
|
||||
to_chat(user, "Changed dispensing mode to 'Dosh'")
|
||||
return
|
||||
// Change mode
|
||||
else
|
||||
mode++
|
||||
to_chat(user, "Changed dispensing mode to '" + configured_items[mode][1] + "'")
|
||||
|
||||
|
||||
/obj/item/weapon/rsf/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(!(istype(A, /obj/structure/table) || istype(A, /turf/simulated/floor)))
|
||||
return
|
||||
|
||||
if(istype(A, /obj/structure/table) && mode == 1)
|
||||
if(istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dosh...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/stack/spacecash/c10( A.loc )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 200 //once money becomes useful, I guess changing this to a high ammount, like 500 units a kick, till then, enjoy dosh!
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
var spawn_location
|
||||
if(istype(A, /obj/structure/table))
|
||||
spawn_location = A.loc
|
||||
else if (istype(A, /obj/structure/table))
|
||||
spawn_location = A
|
||||
else
|
||||
to_chat(user, "The RSF can only create service items on tables, or floors.")
|
||||
return
|
||||
|
||||
else if(istype(A, /turf/simulated/floor) && mode == 1)
|
||||
if(istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dosh...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/stack/spacecash/c10( A )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 200 //once money becomes useful, I guess changing this to a high ammount, like 500 units a kick, till then, enjoy dosh!
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
if(!engy.cell.use(configured_items[mode][2]))
|
||||
to_chat(user, "<span class='warning'>Insufficient energy.</span>")
|
||||
return
|
||||
else
|
||||
if(!matter)
|
||||
to_chat(user, "<span class='warning'>Insufficient matter.</span>")
|
||||
return
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
|
||||
else if(istype(A, /obj/structure/table) && mode == 2)
|
||||
if(istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Drinking Glass...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A.loc )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 50
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /turf/simulated/floor) && mode == 2)
|
||||
if(istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Drinking Glass...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 50
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /obj/structure/table) && mode == 3)
|
||||
if(istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Paper Sheet...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/paper( A.loc )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 10
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /turf/simulated/floor) && mode == 3)
|
||||
if(istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Paper Sheet...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/paper( A )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 10
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /obj/structure/table) && mode == 4)
|
||||
if(istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Pen...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/pen( A.loc )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 50
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /turf/simulated/floor) && mode == 4)
|
||||
if(istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Pen...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/pen( A )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 50
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /obj/structure/table) && mode == 5)
|
||||
if(istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dice Pack...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/storage/pill_bottle/dice( A.loc )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 200
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /turf/simulated/floor) && mode == 5)
|
||||
if(istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Dice Pack...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/storage/pill_bottle/dice( A )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 200
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /obj/structure/table) && mode == 6)
|
||||
if(istype(A, /obj/structure/table) && matter >= 1)
|
||||
to_chat(user, "Dispensing Cigarette...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/clothing/mask/cigarette( A.loc )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 10
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
|
||||
else if(istype(A, /turf/simulated/floor) && mode == 6)
|
||||
if(istype(A, /turf/simulated/floor) && matter >= 1)
|
||||
to_chat(user, "Dispensing Cigarette...")
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/clothing/mask/cigarette( A )
|
||||
if(isrobot(user))
|
||||
var/mob/living/silicon/robot/engy = user
|
||||
engy.cell.charge -= 10
|
||||
else
|
||||
matter--
|
||||
to_chat(user, "The RSF now holds [matter]/30 fabrication-units.")
|
||||
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
|
||||
return
|
||||
to_chat(user, "Dispensing " + configured_items[mode][1] + "...")
|
||||
playsound(loc, 'sound/machines/click.ogg', 10, 1)
|
||||
var/type_path = configured_items[mode][3]
|
||||
new type_path(spawn_location)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
to_chat(user, "<span class='notice'>\The [src] is full.</span>")
|
||||
return
|
||||
reagents.remove_reagent(25,"water")
|
||||
var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread()
|
||||
var/datum/effect_system/smoke_spread/bad/smoke = new
|
||||
smoke.set_up(5, 0, user.loc)
|
||||
smoke.start()
|
||||
playsound(user.loc, 'sound/effects/bamf.ogg', 50, 2)
|
||||
|
||||
@@ -130,7 +130,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
src.lit = 1
|
||||
damtype = "fire"
|
||||
if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
var/datum/effect_system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
|
||||
e.start()
|
||||
if(ismob(loc))
|
||||
@@ -139,7 +139,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
qdel(src)
|
||||
return
|
||||
if(reagents.get_reagent_amount("fuel")) // the fuel explodes, too, but much less violently
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
var/datum/effect_system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount("fuel") / 5, 1), get_turf(src), 0, 0)
|
||||
e.start()
|
||||
if(ismob(loc))
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
user.visible_message("<span class='notice'>[user] starts to shave their facial hair with \the [src].</span>", \
|
||||
"<span class='notice'>You take a moment shave your facial hair with \the [src].</span>")
|
||||
if(do_after(user, 50 * toolspeed, target = H))
|
||||
user.visible_message("<span class='notice'>[user] shaves his facial hair clean with the [src].</span>", \
|
||||
user.visible_message("<span class='notice'>[user] shaves \his facial hair clean with the [src].</span>", \
|
||||
"<span class='notice'>You finish shaving with the [src]. Fast and clean!</span>")
|
||||
C.f_style = "Shaved"
|
||||
H.update_fhair()
|
||||
@@ -143,8 +143,8 @@
|
||||
user.visible_message("<span class='warning'>[user] starts to shave their head with \the [src].</span>", \
|
||||
"<span class='warning'>You start to shave your head with \the [src].</span>")
|
||||
if(do_after(user, 50 * toolspeed, target = H))
|
||||
user.visible_message("<span class='notice'>[user] shaves his head with the [src].</span>", \
|
||||
"<span class='notice'>You finish shaving with the [src].</span>")
|
||||
user.visible_message("<span class='notice'>[user] shaves \his head with \the [src].</span>", \
|
||||
"<span class='notice'>You finish shaving with \the [src].</span>")
|
||||
C.h_style = "Skinhead"
|
||||
H.update_hair()
|
||||
playsound(src.loc, usesound, 40, 1)
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
for(var/a=0, a<5, a++)
|
||||
spawn(0)
|
||||
var/obj/effect/effect/water/W = new /obj/effect/effect/water( get_turf(src) )
|
||||
var/obj/effect/particle_effect/water/W = new /obj/effect/particle_effect/water( get_turf(src) )
|
||||
var/turf/my_target = pick(the_targets)
|
||||
if(precision)
|
||||
the_targets -= my_target
|
||||
|
||||
@@ -3,7 +3,7 @@ obj/item/weapon/firework
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "rocket_0"
|
||||
var/litzor = 0
|
||||
var/datum/effect/system/sparkle_spread/S
|
||||
var/datum/effect_system/sparkle_spread/S
|
||||
obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
@@ -25,7 +25,7 @@ obj/item/weapon/sparkler
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "sparkler_0"
|
||||
var/litzor = 0
|
||||
var/datum/effect/system/spark_spread/S
|
||||
var/datum/effect_system/spark_spread/S
|
||||
obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
materials = list(MAT_METAL=500)
|
||||
origin_tech = "combat=1;plasmatech=2;engineering=2"
|
||||
var/status = 0
|
||||
var/throw_amount = 100
|
||||
var/lit = 0 //on or off
|
||||
var/operating = 0//cooldown
|
||||
var/turf/previousturf = null
|
||||
@@ -124,7 +123,7 @@
|
||||
if(!ptank)
|
||||
to_chat(user, "<span class='notice'>Attach a plasma tank first!</span>")
|
||||
return
|
||||
var/dat = text("<TT><B>Flamethrower (<A HREF='?src=[UID()];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [ptank.air_contents.return_pressure()]<BR>\nAmount to throw: <A HREF='?src=[UID()];amount=-100'>-</A> <A HREF='?src=[UID()];amount=-10'>-</A> <A HREF='?src=[UID()];amount=-1'>-</A> [throw_amount] <A HREF='?src=[UID()];amount=1'>+</A> <A HREF='?src=[UID()];amount=10'>+</A> <A HREF='?src=[UID()];amount=100'>+</A><BR>\n<A HREF='?src=[UID()];remove=1'>Remove plasmatank</A> - <A HREF='?src=[UID()];close=1'>Close</A></TT>")
|
||||
var/dat = text("<TT><B>Flamethrower (<A HREF='?src=[UID()];light=1'>[lit ? "<font color='red'>Lit</font>" : "Unlit"]</a>)</B><BR>\n Tank Pressure: [ptank.air_contents.return_pressure()]<BR>\n<A HREF='?src=[UID()];remove=1'>Remove plasmatank</A> - <A HREF='?src=[UID()];close=1'>Close</A></TT>")
|
||||
user << browse(dat, "window=flamethrower;size=600x300")
|
||||
onclose(user, "flamethrower")
|
||||
return
|
||||
@@ -143,9 +142,6 @@
|
||||
lit = !lit
|
||||
if(lit)
|
||||
processing_objects.Add(src)
|
||||
if(href_list["amount"])
|
||||
throw_amount = throw_amount + text2num(href_list["amount"])
|
||||
throw_amount = max(50, min(5000, throw_amount))
|
||||
if(href_list["remove"])
|
||||
if(!ptank) return
|
||||
usr.put_in_hands(ptank)
|
||||
@@ -191,10 +187,8 @@
|
||||
|
||||
|
||||
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target, release_amount = 0.05)
|
||||
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
|
||||
//Transfer 5% of current tank air contents to turf
|
||||
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount)
|
||||
air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
|
||||
air_transfer.toxins = air_transfer.toxins // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
|
||||
target.assume_air(air_transfer)
|
||||
//Burn it based on transfered gas
|
||||
target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500) // -- More of my "how do I shot fire?" dickery. -- TLE
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
G = user.r_hand
|
||||
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] loses his grip on [strangling]'s neck.</span>", \
|
||||
user.visible_message("<span class='warning'>[user] loses \his grip on [strangling]'s neck.</span>", \
|
||||
"<span class='warning'>You lose your grip on [strangling]'s neck.</span>")
|
||||
|
||||
strangling = null
|
||||
@@ -144,7 +144,7 @@
|
||||
return
|
||||
|
||||
if(!G.affecting)
|
||||
user.visible_message("<span class='warning'>[user] loses his grip on [strangling]'s neck.</span>", \
|
||||
user.visible_message("<span class='warning'>[user] loses \his grip on [strangling]'s neck.</span>", \
|
||||
"<span class='warning'>You lose your grip on [strangling]'s neck.</span>")
|
||||
|
||||
strangling = null
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
var/ignition_temp = 10 // The amount of heat added to the reagents when this grenade goes off.
|
||||
var/threatscale = 1 // Used by advanced grenades to make them slightly more worthy.
|
||||
var/no_splash = FALSE //If the grenade deletes even if it has no reagents to splash with. Used for slime core reactions.
|
||||
var/contained = "" // For logging
|
||||
var/cores = "" // Also for logging
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/New()
|
||||
create_reagents(1000)
|
||||
@@ -98,9 +100,9 @@
|
||||
update_icon()
|
||||
else if(clown_check(user))
|
||||
// This used to go before the assembly check, but that has absolutely zero to do with priming the damn thing. You could spam the admins with it.
|
||||
message_admins("[key_name_admin(usr)] has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])")
|
||||
bombers += "[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])"
|
||||
message_admins("[key_name_admin(usr)] has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a> [contained].")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) [contained].")
|
||||
bombers += "[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z])[contained]."
|
||||
to_chat(user, "<span class='warning'>You prime the [name]! [det_time / 10] second\s!</span>")
|
||||
playsound(user.loc, 'sound/weapons/armbomb.ogg', 60, 1)
|
||||
active = 1
|
||||
@@ -136,8 +138,8 @@
|
||||
playsound(loc, prime_sound, 25, -3)
|
||||
stage = READY
|
||||
update_icon()
|
||||
var/contained = ""
|
||||
var/cores = ""
|
||||
contained = ""
|
||||
cores = "" // clear them out so no recursive logging by accidentally
|
||||
for(var/obj/O in beakers)
|
||||
if(!O.reagents) continue
|
||||
if(istype(O,/obj/item/slime_extract))
|
||||
@@ -287,8 +289,8 @@
|
||||
var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast)
|
||||
var/turf/T = get_turf(src)
|
||||
var/area/A = get_area(T)
|
||||
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)]<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>(?)</A> ([admin_jump_link(M)]) and last touched by [key_name_admin(last)]<A HREF='?_src_=holder;adminmoreinfo=\ref[last]'>(?)</A> ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])")
|
||||
message_admins("grenade primed by an assembly, attached by [key_name_admin(M)]<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>(?)</A> ([admin_jump_link(M)]) and last touched by [key_name_admin(last)]<A HREF='?_src_=holder;adminmoreinfo=\ref[last]'>(?)</A> ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>[A.name] (JMP)</a>. [contained]")
|
||||
log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z]) [contained]")
|
||||
|
||||
update_mob()
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
det_time = 20
|
||||
item_state = "flashbang"
|
||||
slot_flags = SLOT_BELT
|
||||
var/datum/effect/system/bad_smoke_spread/smoke
|
||||
var/datum/effect_system/smoke_spread/bad/smoke
|
||||
|
||||
New()
|
||||
..()
|
||||
src.smoke = new /datum/effect/system/bad_smoke_spread
|
||||
src.smoke = new /datum/effect_system/smoke_spread/bad
|
||||
src.smoke.attach(src)
|
||||
|
||||
Destroy()
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/obj/item/weapon/nullrod/attack_self(mob/user)
|
||||
if(reskinned)
|
||||
return
|
||||
if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
||||
if(user.mind && (user.mind.assigned_role == "Chaplain" || user.mind.special_role == SPECIAL_ROLE_ERT))
|
||||
reskin_holy_weapon(user)
|
||||
|
||||
/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M)
|
||||
@@ -335,7 +335,7 @@
|
||||
/obj/item/weapon/nullrod/carp/attack_self(mob/living/user)
|
||||
if(used_blessing)
|
||||
return
|
||||
if(user.mind && (user.mind.assigned_role != "Chaplain"))
|
||||
if(user.mind && (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT))
|
||||
return
|
||||
to_chat(user, "You are blessed by Carp-Sie. Wild space carp will no longer attack you.")
|
||||
user.faction |= "carp"
|
||||
@@ -406,7 +406,7 @@
|
||||
if(!iscarbon(M))
|
||||
return ..()
|
||||
|
||||
if(!user.mind || user.mind.assigned_role != "Chaplain")
|
||||
if(!user.mind || (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT))
|
||||
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
|
||||
return
|
||||
|
||||
@@ -469,7 +469,7 @@
|
||||
|
||||
/obj/item/weapon/nullrod/salt/attack_self(mob/user)
|
||||
|
||||
if(!user.mind || user.mind.assigned_role != "Chaplain")
|
||||
if(!user.mind || (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT ))
|
||||
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
..()
|
||||
spawn(100)
|
||||
if(!istype(loc, /mob))
|
||||
var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
|
||||
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
|
||||
sparks.set_up(1, 1, src)
|
||||
sparks.start()
|
||||
qdel(src)
|
||||
|
||||
@@ -207,13 +207,13 @@
|
||||
throw_speed = 3
|
||||
throw_range = 1
|
||||
w_class = WEIGHT_CLASS_BULKY //So you can't hide it in your pocket or some such.
|
||||
var/datum/effect/system/spark_spread/spark_system
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
sharp = 1
|
||||
|
||||
//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
|
||||
/obj/item/weapon/melee/energy/blade/New()
|
||||
..()
|
||||
spark_system = new /datum/effect/system/spark_spread()
|
||||
spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
materials = list(MAT_METAL = 75000, MAT_GLASS = 37500)
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
var/datum/effect/system/spark_spread/spark_system
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
var/lastused
|
||||
var/iconrotation = 0 //used to orient icons and pipes
|
||||
var/mode = 1 //Disposals, atmospherics, etc.
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/item/weapon/rpd/New()
|
||||
..()
|
||||
spark_system = new /datum/effect/system/spark_spread()
|
||||
spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(1, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
to_chat(user, "A mysterious force disrupts your arcane spell matrix, and you remain where you are.")
|
||||
return
|
||||
|
||||
var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(5, 0, user.loc)
|
||||
smoke.attach(user)
|
||||
smoke.start()
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
overlays += image('icons/obj/storage.dmi', icon_locking)
|
||||
locked = 0
|
||||
if(istype(weapon, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(5, 0, src.loc)
|
||||
spark_system.start()
|
||||
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
item_state = "jetpack"
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
var/datum/effect/system/ion_trail_follow/ion_trail
|
||||
var/datum/effect_system/trail_follow/ion/ion_trail
|
||||
actions_types = list(/datum/action/item_action/set_internals, /datum/action/item_action/toggle_jetpack, /datum/action/item_action/jetpack_stabilization)
|
||||
var/on = 0
|
||||
var/stabilizers = 0
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/obj/item/weapon/tank/jetpack/New()
|
||||
..()
|
||||
ion_trail = new /datum/effect/system/ion_trail_follow()
|
||||
ion_trail = new /datum/effect_system/trail_follow/ion()
|
||||
ion_trail.set_up(src)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/Destroy()
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
/obj/item/weapon/tank/jetpack/carbondioxide/New()
|
||||
..()
|
||||
ion_trail = new /datum/effect/system/ion_trail_follow()
|
||||
ion_trail = new /datum/effect_system/trail_follow/ion()
|
||||
ion_trail.set_up(src)
|
||||
air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
|
||||
|
||||
|
||||
@@ -277,22 +277,22 @@
|
||||
if(Adj)
|
||||
return //Safety check so you don't blast yourself trying to refill your tank
|
||||
var/datum/reagents/R = reagents
|
||||
if(R.total_volume < 100)
|
||||
to_chat(user, "You need at least 100 units of water to use the nanofrost launcher!")
|
||||
if(R.total_volume < 50)
|
||||
to_chat(user, "You need at least 50 units of water to use the nanofrost launcher!")
|
||||
return
|
||||
if(nanofrost_cooldown)
|
||||
to_chat(user, "Nanofrost launcher is still recharging")
|
||||
return
|
||||
nanofrost_cooldown = 1
|
||||
R.remove_any(100)
|
||||
R.remove_any(50)
|
||||
var/obj/effect/nanofrost_container/A = new /obj/effect/nanofrost_container(get_turf(src))
|
||||
log_game("[user.ckey] ([user.name]) used Nanofrost at [get_area(user)] ([user.x], [user.y], [user.z]).")
|
||||
playsound(src,'sound/items/syringeproj.ogg',40,1)
|
||||
for(var/a=0, a<5, a++)
|
||||
step_towards(A, target)
|
||||
sleep(2)
|
||||
sleep(1)
|
||||
A.Smoke()
|
||||
spawn(100)
|
||||
spawn(50)
|
||||
if(src)
|
||||
nanofrost_cooldown = 0
|
||||
return
|
||||
@@ -300,7 +300,7 @@
|
||||
if(!Adj|| !istype(target, /turf))
|
||||
return
|
||||
if(metal_synthesis_cooldown < 5)
|
||||
var/obj/structure/foam/F = new /obj/structure/foam(get_turf(target), 1)
|
||||
var/obj/effect/particle_effect/foam/F = new /obj/effect/particle_effect/foam(get_turf(target), 1)
|
||||
F.amount = 0
|
||||
metal_synthesis_cooldown++
|
||||
spawn(100)
|
||||
@@ -319,7 +319,9 @@
|
||||
pass_flags = PASSTABLE
|
||||
|
||||
/obj/effect/nanofrost_container/proc/Smoke()
|
||||
new /obj/effect/effect/freezing_smoke(src.loc, 6, 1)
|
||||
var/datum/effect_system/smoke_spread/freezing/S = new
|
||||
S.set_up(6, 0, loc, null, 1)
|
||||
S.start()
|
||||
var/obj/effect/decal/cleanable/flour/F = new /obj/effect/decal/cleanable/flour(src.loc)
|
||||
F.color = "#B2FFFF"
|
||||
F.name = "nanofrost residue"
|
||||
@@ -327,78 +329,6 @@
|
||||
playsound(src,'sound/effects/bamf.ogg',100,1)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/effect/freezing_smoke
|
||||
name = "nanofrost smoke"
|
||||
icon_state = "smoke"
|
||||
opacity = 0
|
||||
anchored = 0.0
|
||||
mouse_opacity = 0
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
color = "#B2FFFF"
|
||||
var/amount = 0
|
||||
|
||||
/obj/effect/effect/freezing_smoke/New(loc, var/amt, var/blast)
|
||||
..()
|
||||
spawn(100+rand(10,30))
|
||||
delete()
|
||||
amount = amt
|
||||
if(amount)
|
||||
var/datum/effect/system/freezing_smoke_spread/F = new /datum/effect/system/freezing_smoke_spread
|
||||
F.set_up(amount, 0, src.loc)
|
||||
F.start()
|
||||
if(blast)
|
||||
for(var/turf/T in spiral_range_turfs(2, src.loc))
|
||||
Chilled(T)
|
||||
return
|
||||
|
||||
/obj/effect/effect/freezing_smoke/proc/Chilled(atom/A)
|
||||
if(istype(A, /turf/simulated))
|
||||
var/turf/simulated/T = A
|
||||
if(T.air)
|
||||
var/datum/gas_mixture/G = T.air
|
||||
if(get_dist(T, src) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air
|
||||
G.temperature = 2
|
||||
T.air_update_turf()
|
||||
for(var/obj/effect/hotspot/H in T)
|
||||
qdel(H)
|
||||
if(G.toxins)
|
||||
G.nitrogen += (G.toxins)
|
||||
G.toxins = 0
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/V in T)
|
||||
V.welded = 1
|
||||
V.update_icon()
|
||||
V.visible_message("<span class='danger'>[V] was frozen shut!</span>")
|
||||
for(var/mob/living/L in T)
|
||||
L.ExtinguishMob()
|
||||
for(var/obj/item/Item in T)
|
||||
Item.extinguish()
|
||||
|
||||
/datum/effect/system/freezing_smoke_spread
|
||||
|
||||
/datum/effect/system/freezing_smoke_spread/set_up(n = 6, c = 0, loca)
|
||||
number = n
|
||||
if(istype(loca, /turf/))
|
||||
location = loca
|
||||
else
|
||||
location = get_turf(loca)
|
||||
|
||||
/datum/effect/system/freezing_smoke_spread/start()
|
||||
var/i = 0
|
||||
for(i=0, i<number, i++)
|
||||
spawn(0)
|
||||
var/obj/effect/effect/freezing_smoke/smoke = new /obj/effect/effect/freezing_smoke(location, 0, 0)
|
||||
smoke.amount = 0
|
||||
var/direction = pick(alldirs)
|
||||
for(i=0, i<rand(1,3), i++)
|
||||
sleep(5)
|
||||
step(smoke,direction)
|
||||
spawn(150+rand(10,30))
|
||||
if(smoke)
|
||||
fadeOut(smoke)
|
||||
smoke.delete()
|
||||
|
||||
#undef EXTINGUISHER
|
||||
#undef NANOFROST
|
||||
#undef METAL_FOAM
|
||||
|
||||
@@ -607,7 +607,7 @@
|
||||
origin_tech = "combat=4;powerstorage=7"
|
||||
|
||||
/obj/item/weapon/twohanded/mjollnir/proc/shock(mob/living/target as mob)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread()
|
||||
s.set_up(5, 1, target.loc)
|
||||
s.start()
|
||||
target.visible_message("<span class='danger'>[target.name] was shocked by the [src.name]!</span>", \
|
||||
@@ -735,7 +735,7 @@
|
||||
Z.take_organ_damage(0,30)
|
||||
user.visible_message("<span class='danger'>[user] slams the charged axe into [Z.name] with all their might!</span>")
|
||||
playsound(loc, 'sound/magic/lightningbolt.ogg', 5, 1)
|
||||
var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
|
||||
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
|
||||
sparks.set_up(1, 1, src)
|
||||
sparks.start()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user