mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
Commiting what i've got so far for the new traitor items
This commit is contained in:
@@ -571,6 +571,7 @@
|
|||||||
#include "code\game\objects\items\weapons\weaponry.dm"
|
#include "code\game\objects\items\weapons\weaponry.dm"
|
||||||
#include "code\game\objects\items\weapons\wires.dm"
|
#include "code\game\objects\items\weapons\wires.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
|
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
|
||||||
|
#include "code\game\objects\items\weapons\grenades\clowngrenade.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
|
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades\flashbang.dm"
|
#include "code\game\objects\items\weapons\grenades\flashbang.dm"
|
||||||
#include "code\game\objects\items\weapons\grenades\grenade.dm"
|
#include "code\game\objects\items\weapons\grenades\grenade.dm"
|
||||||
|
|||||||
@@ -32,7 +32,8 @@
|
|||||||
spawn(0)
|
spawn(0)
|
||||||
var/obj/effect/expl_particles/expl = new /obj/effect/expl_particles(src.location)
|
var/obj/effect/expl_particles/expl = new /obj/effect/expl_particles(src.location)
|
||||||
var/direct = pick(alldirs)
|
var/direct = pick(alldirs)
|
||||||
for(i=0, i<pick(1;25,2;50,3,4;200), i++)
|
var/a = 0
|
||||||
|
for(a=0, a<pick(1;25,2;50,3,4;200), a++)
|
||||||
sleep(1)
|
sleep(1)
|
||||||
step(expl,direct)
|
step(expl,direct)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
var/list/uplink_items = list()
|
var/list/uplink_items = list()
|
||||||
|
|
||||||
/proc/get_uplink_items()
|
/proc/get_uplink_items(var/job = null)
|
||||||
// If not already initialized..
|
// If not already initialized..
|
||||||
if(!uplink_items.len)
|
if(!uplink_items.len)
|
||||||
|
|
||||||
@@ -25,7 +25,6 @@ var/list/uplink_items = list()
|
|||||||
uplink_items[I.category] += I
|
uplink_items[I.category] += I
|
||||||
|
|
||||||
for(var/datum/uplink_item/I in last)
|
for(var/datum/uplink_item/I in last)
|
||||||
|
|
||||||
if(!uplink_items[I.category])
|
if(!uplink_items[I.category])
|
||||||
uplink_items[I.category] = list()
|
uplink_items[I.category] = list()
|
||||||
|
|
||||||
@@ -45,6 +44,7 @@ var/list/uplink_items = list()
|
|||||||
var/last = 0 // Appear last
|
var/last = 0 // Appear last
|
||||||
var/abstract = 0
|
var/abstract = 0
|
||||||
var/list/gamemodes = list() // Empty list means it is in all the gamemodes. Otherwise place the gamemode name here.
|
var/list/gamemodes = list() // Empty list means it is in all the gamemodes. Otherwise place the gamemode name here.
|
||||||
|
var/job = null
|
||||||
|
|
||||||
/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/device/uplink/U)
|
/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/device/uplink/U)
|
||||||
U.uses -= max(cost, 0)
|
U.uses -= max(cost, 0)
|
||||||
@@ -297,6 +297,42 @@ var/list/uplink_items = list()
|
|||||||
item = /obj/item/weapon/storage/box/syndie_kit/imp_compress
|
item = /obj/item/weapon/storage/box/syndie_kit/imp_compress
|
||||||
cost = 4
|
cost = 4
|
||||||
|
|
||||||
|
//Work in Progress, job specific antag tools
|
||||||
|
|
||||||
|
/datum/uplink_item/jobspecific
|
||||||
|
category = "Job Specific Tools"
|
||||||
|
|
||||||
|
//Clown
|
||||||
|
/datum/uplink_item/jobspecific/clowngrenade
|
||||||
|
name = "1 Banana Grenade"
|
||||||
|
desc = "A grenade that explodes into HONK! brand banana peels that are genetically modified to be extra slippery and extrude caustic acid when stepped on"
|
||||||
|
item = /obj/item/weapon/grenade/clown_grenade
|
||||||
|
cost = 4
|
||||||
|
job = "Clown"
|
||||||
|
|
||||||
|
//Detective
|
||||||
|
/datum/uplink_item/jobspecific/evidenceforger
|
||||||
|
name = "Evidence Forger"
|
||||||
|
desc = "An evidence scanner that allows you forge evidence by setting the output before scanning the item."
|
||||||
|
item = /obj/item/device/detective_scanner/forger
|
||||||
|
cost = 3
|
||||||
|
job = "Detective"
|
||||||
|
|
||||||
|
/datum/uplink_item/jobspecific/conversionkit
|
||||||
|
name = "Conversion Kit Bundle"
|
||||||
|
desc = "A bundle that comes with a professional revolver conversion kit and 1 box of .357 ammo. The kit allows you to convert your revolver to fire lethal rounds or vice versa, modification is nearly perfect and will not result in catastrophic failure."
|
||||||
|
item = /obj/item/weapon/storage/box/syndie_kit/conversion
|
||||||
|
cost = 6
|
||||||
|
job = "Detective"
|
||||||
|
|
||||||
|
//Chef
|
||||||
|
/datum/uplink_item/jobspecific/conversionkit
|
||||||
|
name = "Chef Excellence's Special Sauce"
|
||||||
|
desc = "A custom made sauce made from the toxin glands of 1000 space carp, if somebody ingests enough they'll be dead in 3 minutes or less guaranteed."
|
||||||
|
item = /obj/item/weapon/reagent_containers/food/condiment/syndisauce
|
||||||
|
cost = 2
|
||||||
|
job = "Chef"
|
||||||
|
|
||||||
// POINTLESS BADASSERY
|
// POINTLESS BADASSERY
|
||||||
|
|
||||||
/datum/uplink_item/badass
|
/datum/uplink_item/badass
|
||||||
|
|||||||
@@ -520,7 +520,7 @@
|
|||||||
item_state = ""
|
item_state = ""
|
||||||
throw_speed = 4
|
throw_speed = 4
|
||||||
throw_range = 20
|
throw_range = 20
|
||||||
|
/*unused
|
||||||
/obj/item/weapon/camera_bug/attack_self(mob/usr as mob)
|
/obj/item/weapon/camera_bug/attack_self(mob/usr as mob)
|
||||||
var/list/cameras = new/list()
|
var/list/cameras = new/list()
|
||||||
for (var/obj/machinery/camera/C in cameranet.cameras)
|
for (var/obj/machinery/camera/C in cameranet.cameras)
|
||||||
@@ -545,7 +545,7 @@
|
|||||||
if (usr.stat == 2) return
|
if (usr.stat == 2) return
|
||||||
|
|
||||||
usr.client.eye = target
|
usr.client.eye = target
|
||||||
|
*/
|
||||||
|
|
||||||
/obj/item/weapon/syntiflesh
|
/obj/item/weapon/syntiflesh
|
||||||
name = "syntiflesh"
|
name = "syntiflesh"
|
||||||
|
|||||||
@@ -678,9 +678,10 @@
|
|||||||
|
|
||||||
if(!(usr)) //BS12 EDIT
|
if(!(usr)) //BS12 EDIT
|
||||||
return
|
return
|
||||||
if((!istype(usr, /mob/living/carbon)) || (istype(usr, /mob/living/carbon/brain))|| !isMoMMI(usr))//Is humanoid, and is not a brain
|
if(!istype(usr, /mob/living/carbon) && !isMoMMI(usr))//Is not a carbon being or MoMMI
|
||||||
usr << "\red You can't pick things up!"
|
usr << "You can't pick things up!"
|
||||||
return
|
if(istype(usr, /mob/living/carbon/brain))//Is a brain
|
||||||
|
usr << "You can't pick things up!"
|
||||||
if( usr.stat || usr.restrained() )//Is not asleep/dead and is not restrained
|
if( usr.stat || usr.restrained() )//Is not asleep/dead and is not restrained
|
||||||
usr << "\red You can't pick things up!"
|
usr << "\red You can't pick things up!"
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
|||||||
var/list/purchase_log = list()
|
var/list/purchase_log = list()
|
||||||
var/show_description = null
|
var/show_description = null
|
||||||
var/active = 0
|
var/active = 0
|
||||||
|
var/job = null
|
||||||
|
|
||||||
/obj/item/device/uplink/New()
|
/obj/item/device/uplink/New()
|
||||||
..()
|
..()
|
||||||
@@ -20,8 +21,9 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
|||||||
uses = ticker.mode.uplink_uses
|
uses = ticker.mode.uplink_uses
|
||||||
|
|
||||||
//Let's build a menu!
|
//Let's build a menu!
|
||||||
/obj/item/device/uplink/proc/generate_menu()
|
/obj/item/device/uplink/proc/generate_menu(mob/user as mob)
|
||||||
|
if(!job)
|
||||||
|
job = user.job
|
||||||
var/dat = "<B>[src.welcome]</B><BR>"
|
var/dat = "<B>[src.welcome]</B><BR>"
|
||||||
|
|
||||||
// AUTOFIXED BY fix_string_idiocy.py
|
// AUTOFIXED BY fix_string_idiocy.py
|
||||||
@@ -45,8 +47,15 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
|||||||
// Loop through items in category
|
// Loop through items in category
|
||||||
for(var/datum/uplink_item/item in buyable_items[category])
|
for(var/datum/uplink_item/item in buyable_items[category])
|
||||||
i++
|
i++
|
||||||
|
|
||||||
var/cost_text = ""
|
var/cost_text = ""
|
||||||
var/desc = "[item.desc]"
|
var/desc = "[item.desc]"
|
||||||
|
if(item.job)
|
||||||
|
if(item.job != job)
|
||||||
|
world.log << "Skipping job item that doesn't match"
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
world.log << "Found matching job item"
|
||||||
if(item.cost > 0)
|
if(item.cost > 0)
|
||||||
cost_text = "([item.cost])"
|
cost_text = "([item.cost])"
|
||||||
if(item.cost <= uses)
|
if(item.cost <= uses)
|
||||||
@@ -71,7 +80,7 @@ A list of items and costs is stored under the datum of every game mode, alongsid
|
|||||||
/obj/item/device/uplink/interact(mob/user as mob)
|
/obj/item/device/uplink/interact(mob/user as mob)
|
||||||
|
|
||||||
var/dat = "<body link='yellow' alink='white' bgcolor='#601414'><font color='white'>"
|
var/dat = "<body link='yellow' alink='white' bgcolor='#601414'><font color='white'>"
|
||||||
dat += src.generate_menu()
|
dat += src.generate_menu(user)
|
||||||
|
|
||||||
// AUTOFIXED BY fix_string_idiocy.py
|
// AUTOFIXED BY fix_string_idiocy.py
|
||||||
// C:\Users\Rob\Documents\Projects\vgstation13\code\game\objects\items\devices\uplinks.dm:72: dat += "<A href='byond://?src=\ref[src];lock=1'>Lock</a>"
|
// C:\Users\Rob\Documents\Projects\vgstation13\code\game\objects\items\devices\uplinks.dm:72: dat += "<A href='byond://?src=\ref[src];lock=1'>Lock</a>"
|
||||||
|
|||||||
96
code/game/objects/items/weapons/grenades/clowngrenade.dm
Normal file
96
code/game/objects/items/weapons/grenades/clowngrenade.dm
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
/obj/item/weapon/grenade/clown_grenade
|
||||||
|
name = "Banana Grenade"
|
||||||
|
desc = "HONK! brand Bananas. In a special applicator for rapid slipping of wide areas."
|
||||||
|
icon_state = "chemg"
|
||||||
|
item_state = "flashbang"
|
||||||
|
w_class = 2.0
|
||||||
|
force = 2.0
|
||||||
|
var/stage = 0
|
||||||
|
var/state = 0
|
||||||
|
var/path = 0
|
||||||
|
var/affected_area = 2
|
||||||
|
|
||||||
|
New()
|
||||||
|
icon_state = initial(icon_state) +"_locked"
|
||||||
|
|
||||||
|
prime()
|
||||||
|
..()
|
||||||
|
playsound(src.loc, 'sound/items/bikehorn.ogg', 25, -3)
|
||||||
|
/*
|
||||||
|
for(var/turf/simulated/floor/T in view(affected_area, src.loc))
|
||||||
|
if(prob(75))
|
||||||
|
banana(T)
|
||||||
|
*/
|
||||||
|
var/i = 0
|
||||||
|
var/number = 0
|
||||||
|
for(var/direction in alldirs)
|
||||||
|
for(i = 0; i < 2; i++)
|
||||||
|
number++
|
||||||
|
var/obj/item/weapon/bananapeel/traitorpeel/peel = new /obj/item/weapon/bananapeel/traitorpeel(get_turf(src.loc))
|
||||||
|
/* var/direction = pick(alldirs)
|
||||||
|
var/spaces = pick(1;150, 2)
|
||||||
|
var/a = 0
|
||||||
|
for(a = 0; a < spaces; a++)
|
||||||
|
step(peel,direction)*/
|
||||||
|
var/a = 1
|
||||||
|
if(number & 2)
|
||||||
|
for(a = 1; a <= 2; a++)
|
||||||
|
sleep(1)
|
||||||
|
step(peel,direction)
|
||||||
|
else
|
||||||
|
sleep(1)
|
||||||
|
step(peel,direction)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
proc/banana(turf/T as turf)
|
||||||
|
if(!T || !istype(T))
|
||||||
|
return
|
||||||
|
if(locate(/obj/structure/grille) in T)
|
||||||
|
return
|
||||||
|
if(locate(/obj/structure/window) in T)
|
||||||
|
return
|
||||||
|
new /obj/item/weapon/bananapeel/traitorpeel(T)
|
||||||
|
|
||||||
|
/obj/item/weapon/bananapeel/traitorpeel
|
||||||
|
name = "banana peel"
|
||||||
|
desc = "A peel from a banana."
|
||||||
|
icon = 'icons/obj/items.dmi'
|
||||||
|
icon_state = "banana_peel"
|
||||||
|
item_state = "banana_peel"
|
||||||
|
w_class = 1.0
|
||||||
|
throwforce = 0
|
||||||
|
throw_speed = 4
|
||||||
|
throw_range = 20
|
||||||
|
|
||||||
|
HasEntered(AM as mob|obj)
|
||||||
|
var/burned = rand(2,5)
|
||||||
|
if(istype(AM, /mob/living))
|
||||||
|
var/mob/living/M = AM
|
||||||
|
if(ishuman(M))
|
||||||
|
if(isobj(M:shoes))
|
||||||
|
if(M:shoes.flags&NOSLIP)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
M << "\red Your feet feel like they're on fire!"
|
||||||
|
M.take_overall_damage(0, max(0, (burned - 2)))
|
||||||
|
|
||||||
|
if(!istype(M, /mob/living/carbon/slime))
|
||||||
|
M.stop_pulling()
|
||||||
|
step(M, M.dir)
|
||||||
|
spawn(1) step(M, M.dir)
|
||||||
|
spawn(2) step(M, M.dir)
|
||||||
|
spawn(3) step(M, M.dir)
|
||||||
|
spawn(4) step(M, M.dir)
|
||||||
|
M.take_organ_damage(2) // Was 5 -- TLE
|
||||||
|
M << "\blue You slipped on \the [name]!"
|
||||||
|
playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3)
|
||||||
|
M.Weaken(10)
|
||||||
|
M.take_overall_damage(0, burned)
|
||||||
|
|
||||||
|
throw_impact(atom/hit_atom)
|
||||||
|
var/burned = rand(1,3)
|
||||||
|
if(istype(hit_atom ,/mob/living))
|
||||||
|
var/mob/living/M = hit_atom
|
||||||
|
M.take_organ_damage(0, burned)
|
||||||
|
return ..()
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
* Bucher's cleaver
|
* Bucher's cleaver
|
||||||
*/
|
*/
|
||||||
/obj/item/weapon/butch
|
/obj/item/weapon/butch
|
||||||
name = "butcher's Cleaver"
|
name = "Butcher's Cleaver"
|
||||||
icon = 'icons/obj/kitchen.dmi'
|
icon = 'icons/obj/kitchen.dmi'
|
||||||
icon_state = "butch"
|
icon_state = "butch"
|
||||||
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
|
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
|
||||||
@@ -192,6 +192,15 @@
|
|||||||
origin_tech = "materials=1"
|
origin_tech = "materials=1"
|
||||||
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||||
|
|
||||||
|
/obj/item/weapon/butch/meatcleaver
|
||||||
|
name = "Meat Cleaver"
|
||||||
|
icon_state = "mcleaver"
|
||||||
|
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
|
||||||
|
force = 25.0
|
||||||
|
throwforce = 15.0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
/obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -124,4 +124,13 @@
|
|||||||
..()
|
..()
|
||||||
new /obj/item/device/handtv(src)
|
new /obj/item/device/handtv(src)
|
||||||
new /obj/item/weapon/storage/box/surveillance(src)
|
new /obj/item/weapon/storage/box/surveillance(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/item/weapon/storage/box/syndie_kit/conversion
|
||||||
|
name = "box (CK)"
|
||||||
|
|
||||||
|
/obj/item/weapon/storage/box/syndie_kit/conversion/New()
|
||||||
|
..()
|
||||||
|
new /obj/item/weapon/conversion_kit(src)
|
||||||
|
new /obj/item/ammo_magazine/a357(src)
|
||||||
return
|
return
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
* Wirecutters
|
* Wirecutters
|
||||||
* Welding Tool
|
* Welding Tool
|
||||||
* Crowbar
|
* Crowbar
|
||||||
|
* Revolver Conversion Kit(made sense)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -460,3 +461,25 @@
|
|||||||
user << "Nothing to fix!"
|
user << "Nothing to fix!"
|
||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/obj/item/weapon/conversion_kit
|
||||||
|
name = "\improper Revolver Conversion Kit"
|
||||||
|
desc = "A professional conversion kit used to convert any knock off revolver into the real deal capable of shooting lethal .357 rounds without the possibility of catastrophic failure"
|
||||||
|
icon = 'icons/obj/weapons.dmi'
|
||||||
|
icon_state = "kit"
|
||||||
|
flags = FPRINT | TABLEPASS | CONDUCT
|
||||||
|
w_class = 2.0
|
||||||
|
origin_tech = "combat=2"
|
||||||
|
var/open = 0
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
update_icon()
|
||||||
|
icon_state = "[initial(icon_state)]_[open]"
|
||||||
|
|
||||||
|
attack_self(mob/user as mob)
|
||||||
|
open = !open
|
||||||
|
user << "\blue You [open?"open" : "close"] the conversion kit."
|
||||||
|
update_icon()
|
||||||
|
|||||||
@@ -228,13 +228,14 @@
|
|||||||
if(istype(used_weapon,/obj/item/weapon))
|
if(istype(used_weapon,/obj/item/weapon))
|
||||||
var/obj/item/weapon/W = used_weapon //Sharp objects will always embed if they do enough damage.
|
var/obj/item/weapon/W = used_weapon //Sharp objects will always embed if they do enough damage.
|
||||||
if( (damage > (10*W.w_class)) && ( (sharp && !ismob(W.loc)) || prob(damage/W.w_class) ) )
|
if( (damage > (10*W.w_class)) && ( (sharp && !ismob(W.loc)) || prob(damage/W.w_class) ) )
|
||||||
organ.implants += W
|
if(!istype(W, /obj/item/weapon/butch/meatcleaver))
|
||||||
visible_message("<span class='danger'>\The [W] sticks in the wound!</span>")
|
organ.implants += W
|
||||||
W.add_blood(src)
|
visible_message("<span class='danger'>\The [W] sticks in the wound!</span>")
|
||||||
if(ismob(W.loc))
|
W.add_blood(src)
|
||||||
var/mob/living/H = W.loc
|
if(ismob(W.loc))
|
||||||
H.drop_item()
|
var/mob/living/H = W.loc
|
||||||
W.loc = src
|
H.drop_item()
|
||||||
|
W.loc = src
|
||||||
|
|
||||||
else if(istype(used_weapon,/obj/item/projectile)) //We don't want to use the actual projectile item, so we spawn some shrapnel.
|
else if(istype(used_weapon,/obj/item/projectile)) //We don't want to use the actual projectile item, so we spawn some shrapnel.
|
||||||
if(prob(75) && damagetype == BRUTE)
|
if(prob(75) && damagetype == BRUTE)
|
||||||
|
|||||||
@@ -116,10 +116,24 @@ emp_act
|
|||||||
var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src)
|
var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src)
|
||||||
if(user == src) // Attacking yourself can't miss
|
if(user == src) // Attacking yourself can't miss
|
||||||
target_zone = user.zone_sel.selecting
|
target_zone = user.zone_sel.selecting
|
||||||
if(!target_zone)
|
if(!target_zone && !src.stat)
|
||||||
visible_message("\red <B>[user] misses [src] with \the [I]!")
|
visible_message("\red <B>[user] misses [src] with \the [I]!")
|
||||||
return
|
return
|
||||||
|
if(istype(I, /obj/item/weapon/butch/meatcleaver) && src.stat == DEAD && user.a_intent == "hurt")
|
||||||
|
var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/weapon/reagent_containers/food/snacks/meat/human(get_turf(src.loc))
|
||||||
|
newmeat.name = src.real_name + newmeat.name
|
||||||
|
newmeat.subjectname = src.real_name
|
||||||
|
newmeat.subjectjob = src.job
|
||||||
|
newmeat.reagents.add_reagent ("nutriment", (src.nutrition / 15) / 3)
|
||||||
|
src.reagents.trans_to (newmeat, round ((src.reagents.total_volume) / 3, 1))
|
||||||
|
src.loc.add_blood(src)
|
||||||
|
--src.meatleft
|
||||||
|
user << "\red You hack off a chunk of meat from [src.name]"
|
||||||
|
if(!src.meatleft)
|
||||||
|
src.attack_log += "\[[time_stamp()]\] Was chopped up into meat by <b>[user]/[user.ckey]</b>"
|
||||||
|
user.attack_log += "\[[time_stamp()]\] Chopped up <b>[src]/[src.ckey]</b> into meat</b>"
|
||||||
|
msg_admin_attack("[user.name] ([user.ckey]) chopped up [src] ([src.ckey]) into meat (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
|
||||||
|
del(src)
|
||||||
var/datum/organ/external/affecting = get_organ(target_zone)
|
var/datum/organ/external/affecting = get_organ(target_zone)
|
||||||
if (!affecting)
|
if (!affecting)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -55,3 +55,5 @@
|
|||||||
var/xylophone = 0 //For the spoooooooky xylophone cooldown
|
var/xylophone = 0 //For the spoooooooky xylophone cooldown
|
||||||
|
|
||||||
var/mob/remoteview_target = null
|
var/mob/remoteview_target = null
|
||||||
|
|
||||||
|
var/meatleft = 3 //For chef item
|
||||||
@@ -35,4 +35,6 @@
|
|||||||
var/cameraFollow = null
|
var/cameraFollow = null
|
||||||
|
|
||||||
var/tod = null // Time of death
|
var/tod = null // Time of death
|
||||||
var/update_slimes = 1
|
var/update_slimes = 1
|
||||||
|
|
||||||
|
var/specialsauce = 0 //Has this person consumed enough special sauce? IF so they're a ticking time bomb of death.
|
||||||
@@ -6,12 +6,12 @@
|
|||||||
caliber = "38"
|
caliber = "38"
|
||||||
origin_tech = "combat=2;materials=2"
|
origin_tech = "combat=2;materials=2"
|
||||||
ammo_type = "/obj/item/ammo_casing/c38"
|
ammo_type = "/obj/item/ammo_casing/c38"
|
||||||
|
var/perfect = 0
|
||||||
|
|
||||||
special_check(var/mob/living/carbon/human/M)
|
special_check(var/mob/living/carbon/human/M)
|
||||||
if(caliber == initial(caliber))
|
if(caliber == initial(caliber))
|
||||||
return 1
|
return 1
|
||||||
if(prob(70 - (loaded.len * 10))) //minimum probability of 10, maximum of 60
|
if(!perfect && prob(70 - (loaded.len * 10))) //minimum probability of 10, maximum of 60
|
||||||
M << "<span class='danger'>[src] blows up in your face.</span>"
|
M << "<span class='danger'>[src] blows up in your face.</span>"
|
||||||
M.take_organ_damage(0,20)
|
M.take_organ_damage(0,20)
|
||||||
M.drop_item()
|
M.drop_item()
|
||||||
@@ -38,8 +38,14 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
attackby(var/obj/item/A as obj, mob/user as mob)
|
attackby(var/obj/item/A as obj, mob/user as mob)
|
||||||
|
var/obj/item/weapon/conversion_kit/CK
|
||||||
..()
|
..()
|
||||||
if(istype(A, /obj/item/weapon/screwdriver))
|
if(isscrewdriver(A) || istype(A, /obj/item/weapon/conversion_kit))
|
||||||
|
if(istype(A, /obj/item/weapon/conversion_kit))
|
||||||
|
CK = A
|
||||||
|
if(!CK.open)
|
||||||
|
user << "<span class='notice'>This [CK.name] is useless unless you open it first. </span>"
|
||||||
|
return
|
||||||
if(caliber == "38")
|
if(caliber == "38")
|
||||||
user << "<span class='notice'>You begin to reinforce the barrel of [src].</span>"
|
user << "<span class='notice'>You begin to reinforce the barrel of [src].</span>"
|
||||||
if(loaded.len)
|
if(loaded.len)
|
||||||
@@ -54,6 +60,8 @@
|
|||||||
caliber = "357"
|
caliber = "357"
|
||||||
desc = "The barrel and chamber assembly seems to have been modified."
|
desc = "The barrel and chamber assembly seems to have been modified."
|
||||||
user << "<span class='warning'>You reinforce the barrel of [src]! Now it will fire .357 rounds.</span>"
|
user << "<span class='warning'>You reinforce the barrel of [src]! Now it will fire .357 rounds.</span>"
|
||||||
|
if(CK && istype(CK))
|
||||||
|
perfect = 1
|
||||||
else
|
else
|
||||||
user << "<span class='notice'>You begin to revert the modifications to [src].</span>"
|
user << "<span class='notice'>You begin to revert the modifications to [src].</span>"
|
||||||
if(loaded.len)
|
if(loaded.len)
|
||||||
@@ -68,6 +76,7 @@
|
|||||||
caliber = "38"
|
caliber = "38"
|
||||||
desc = initial(desc)
|
desc = initial(desc)
|
||||||
user << "<span class='warning'>You remove the modifications on [src]! Now it will fire .38 rounds.</span>"
|
user << "<span class='warning'>You remove the modifications on [src]! Now it will fire .38 rounds.</span>"
|
||||||
|
perfect = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -363,6 +363,29 @@ datum
|
|||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
chefspecial
|
||||||
|
// Quiet and lethal, needs atleast 4 units in the person before they'll die
|
||||||
|
name = "Chef's Special"
|
||||||
|
id = "chefspecial"
|
||||||
|
description = "An extremely toxic chemical that will surely end in death."
|
||||||
|
reagent_state = LIQUID
|
||||||
|
color = "#CF3600" // rgb: 207, 54, 0
|
||||||
|
custom_metabolism = 0.39
|
||||||
|
|
||||||
|
on_mob_life(var/mob/living/M as mob)
|
||||||
|
var/random = rand(150,180)
|
||||||
|
if(!M) M = holder.my_atom
|
||||||
|
if(!data) data = 1
|
||||||
|
switch(data)
|
||||||
|
if(0 to 5)
|
||||||
|
..()
|
||||||
|
if(data >= random)
|
||||||
|
if(M.stat != DEAD)
|
||||||
|
M.death(0)
|
||||||
|
M.attack_log += "\[[time_stamp()]\]<font color='red'>Died a quick and painless death by <font color='green'>Chef Excellence's Special Sauce</font>.</font>"
|
||||||
|
data++
|
||||||
|
return
|
||||||
|
|
||||||
minttoxin
|
minttoxin
|
||||||
name = "Mint Toxin"
|
name = "Mint Toxin"
|
||||||
id = "minttoxin"
|
id = "minttoxin"
|
||||||
|
|||||||
@@ -126,6 +126,9 @@
|
|||||||
if("sugar")
|
if("sugar")
|
||||||
name = "Sugar"
|
name = "Sugar"
|
||||||
desc = "Tastey space sugar!"
|
desc = "Tastey space sugar!"
|
||||||
|
if("chefspecial")
|
||||||
|
name = "Chef Excellence's Special Sauce"
|
||||||
|
desc = "A potent sauce distilled from the toxin glands of 1000 Space Carp."
|
||||||
else
|
else
|
||||||
name = "Misc Condiment Bottle"
|
name = "Misc Condiment Bottle"
|
||||||
if (reagents.reagent_list.len==1)
|
if (reagents.reagent_list.len==1)
|
||||||
@@ -172,4 +175,13 @@
|
|||||||
volume = 20
|
volume = 20
|
||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
reagents.add_reagent("blackpepper", 20)
|
reagents.add_reagent("blackpepper", 20)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/food/condiment/syndisauce
|
||||||
|
name = "Chef Excellence's Special Sauce"
|
||||||
|
desc = "A potent sauce distilled from the toxin glands of 1000 Space Carp with an extra touch of LSD because why not?"
|
||||||
|
amount_per_transfer_from_this = 1
|
||||||
|
volume = 20
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
reagents.add_reagent("chefspecial", 20)
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 19 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 32 KiB |
Reference in New Issue
Block a user