mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 05:27:01 +01:00
merge conflict fix
This commit is contained in:
@@ -21,6 +21,11 @@
|
||||
if(!user.can_speak())
|
||||
to_chat(user, "<span class='warning'>You find yourself unable to speak at all.</span>")
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/abductor/H = user
|
||||
if(H && H.mind.abductor)
|
||||
to_chat(user, "<span class='warning'>Megaphones can't project psionic communication!</span>")
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H && H.mind && H.mind.miming)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
playsound(M, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
return 0
|
||||
|
||||
if(!user.cell.use(charge_cost))
|
||||
return
|
||||
if(isrobot(user))
|
||||
if(!user.cell.use(charge_cost))
|
||||
return
|
||||
|
||||
user.do_attack_animation(M)
|
||||
M.Weaken(5)
|
||||
@@ -229,4 +230,4 @@
|
||||
|
||||
playsound(get_turf(src), 'sound/machines/warning-buzzer.ogg', 130, 3)
|
||||
cooldown = world.time + 600
|
||||
log_game("[key_name(user)] used an emagged Cyborg Harm Alarm in ([user.x],[user.y],[user.z])")
|
||||
log_game("[key_name(user)] used an emagged Cyborg Harm Alarm in ([user.x],[user.y],[user.z])")
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
to_chat(user, "<span class='danger'>[H]'s [limb] is already splinted!</span>")
|
||||
if(alert(user, "Would you like to remove the splint from [H]'s [limb]?", "Removing.", "Yes", "No") == "Yes")
|
||||
affecting.status &= ~ORGAN_SPLINTED
|
||||
H.handle_splints()
|
||||
to_chat(user, "<span class='notice'>You remove the splint from [H]'s [limb].</span>")
|
||||
return
|
||||
if(M == user)
|
||||
@@ -221,4 +222,7 @@
|
||||
"<span class='green'>You hear something being wrapped.</span>")
|
||||
|
||||
affecting.status |= ORGAN_SPLINTED
|
||||
affecting.splinted_count = H.step_count
|
||||
H.handle_splints()
|
||||
|
||||
use(1)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -76,6 +76,8 @@
|
||||
|
||||
log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
|
||||
activated = 1
|
||||
if(jobban_isbanned(M, ROLE_SYNDICATE))
|
||||
ticker.mode.replace_jobbanned_player(M, ROLE_SYNDICATE)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -171,6 +171,7 @@
|
||||
icon_state = "yellow slime extract"
|
||||
materials = list()
|
||||
self_recharge = 1 // Infused slime cores self-recharge, over time
|
||||
chargerate = 500
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/pulse //200 pulse shots
|
||||
name = "pulse rifle power cell"
|
||||
|
||||
@@ -58,8 +58,8 @@
|
||||
//handle normal hair
|
||||
var/list/species_hair = list()
|
||||
if(C.species)
|
||||
for(var/i in hair_styles_list)
|
||||
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i]
|
||||
for(var/i in hair_styles_public_list)
|
||||
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i]
|
||||
if(C.species.name in tmp_hair.species_allowed) //If the species is allowed to have the style, add the style to the list. Or, if the character has a prosthetic head, give them the human facial hair styles.
|
||||
if(C.species.bodyflags & ALL_RPARTS) //If the character is of a species that can have full body prosthetics and their head doesn't suport human hair 'wigs', don't add the style to the list.
|
||||
if(robohead.is_monitor)
|
||||
@@ -76,7 +76,7 @@
|
||||
to_chat(user, "<span class='warning'>You are unable to find anything on [H]'s head worth cutting. How disappointing.</span>")
|
||||
return
|
||||
else
|
||||
species_hair = hair_styles_list
|
||||
species_hair = hair_styles_public_list
|
||||
var/h_new_style = input(user, "Select a hair style", "Grooming") as null|anything in species_hair
|
||||
user.visible_message("<span class='notice'>[user] starts cutting [M]'s hair!</span>", "<span class='notice'>You start cutting [M]'s hair!</span>") //arguments for this are: 1. what others see 2. what the user sees. --Fixed grammar, (TGameCo)
|
||||
playsound(loc, 'sound/goonstation/misc/Scissor.ogg', 100, 1)
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
/obj/item/weapon/tank/air
|
||||
name = "air tank"
|
||||
desc = "Mixed anyone?"
|
||||
icon_state = "oxygen"
|
||||
|
||||
icon_state = "air"
|
||||
item_state = "air"
|
||||
|
||||
/obj/item/weapon/tank/air/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -341,6 +341,7 @@
|
||||
if(G)
|
||||
explosive = G
|
||||
name = "explosive lance"
|
||||
embed_chance = 0
|
||||
desc = "A makeshift spear with [G] attached to it. Alt+click on the spear to set your war cry!"
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -14,28 +14,28 @@
|
||||
|
||||
/obj/item/weapon/whetstone/attackby(obj/item/I, mob/user, params)
|
||||
if(used)
|
||||
to_chat(user, "<span class='notice'>The whetstone is too worn to use again.</span>")
|
||||
to_chat(user, "<span class='warning'>The whetstone is too worn to use again!</span>")
|
||||
return
|
||||
if(I.force >= max || I.throwforce >= max)//no esword sharpening
|
||||
to_chat(user, "<span class='notice'>[I] is much too powerful to sharpen further.</span>")
|
||||
to_chat(user, "<span class='warning'>[I] is much too powerful to sharpen further!</span>")
|
||||
return
|
||||
if(requires_sharpness && !I.sharp)
|
||||
to_chat(user, "<span class='notice'>You can only sharpen items that are already sharp, such as knives.</span>")
|
||||
to_chat(user, "<span class='warning'>You can only sharpen items that are already sharp, such as knives!</span>")
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/twohanded))//some twohanded items should still be sharpenable, but handle force differently. therefore i need this stuff
|
||||
var/obj/item/weapon/twohanded/TH = I
|
||||
if(TH.force_wielded >= max)
|
||||
to_chat(user, "<span class='notice'>[TH] is much too powerful to sharpen further.</span>")
|
||||
to_chat(user, "<span class='warning'>[TH] is much too powerful to sharpen further!</span>")
|
||||
return
|
||||
if(TH.wielded)
|
||||
to_chat(user, "<span class='notice'>[TH] must be unwielded before it can be sharpened.</span>")
|
||||
to_chat(user, "<span class='warning'>[TH] must be unwielded before it can be sharpened!</span>")
|
||||
return
|
||||
if(TH.force_wielded > initial(TH.force_wielded))
|
||||
to_chat(user, "<span class='notice'>[TH] has already been refined before. It cannot be sharpened further.</span>")
|
||||
to_chat(user, "<span class='warning'>[TH] has already been refined before. It cannot be sharpened further!</span>")
|
||||
return
|
||||
TH.force_wielded = Clamp(TH.force_wielded + increment, 0, max)//wieldforce is increased since normal force wont stay
|
||||
if(I.force > initial(I.force))
|
||||
to_chat(user, "<span class='notice'>[I] has already been refined before. It cannot be sharpened further.</span>")
|
||||
to_chat(user, "<span class='warning'>[I] has already been refined before. It cannot be sharpened further!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] sharpens [I] with [src]!</span>", "<span class='notice'>You sharpen [I], making it much more deadly than before.</span>")
|
||||
if(!requires_sharpness)
|
||||
@@ -47,6 +47,7 @@
|
||||
name = "worn out [name]"
|
||||
desc = "[desc] At least, it used to."
|
||||
used = 1
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/whetstone/attack_self(mob/user as mob) //This is just fluff for now. Species datums are global and not newly created instances, so we can't adjust unarmed damage on a per mob basis.
|
||||
if(ishuman(user))
|
||||
|
||||
Reference in New Issue
Block a user