Commiting what i've got so far for the new traitor items

This commit is contained in:
d3athrow
2013-09-06 23:24:23 -05:00
parent a95b639402
commit 165c8ab75d
19 changed files with 274 additions and 26 deletions

View File

@@ -571,6 +571,7 @@
#include "code\game\objects\items\weapons\weaponry.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\clowngrenade.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\grenade.dm"

View File

@@ -32,7 +32,8 @@
spawn(0)
var/obj/effect/expl_particles/expl = new /obj/effect/expl_particles(src.location)
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)
step(expl,direct)

View File

@@ -1,6 +1,6 @@
var/list/uplink_items = list()
/proc/get_uplink_items()
/proc/get_uplink_items(var/job = null)
// If not already initialized..
if(!uplink_items.len)
@@ -25,7 +25,6 @@ var/list/uplink_items = list()
uplink_items[I.category] += I
for(var/datum/uplink_item/I in last)
if(!uplink_items[I.category])
uplink_items[I.category] = list()
@@ -45,6 +44,7 @@ var/list/uplink_items = list()
var/last = 0 // Appear last
var/abstract = 0
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)
U.uses -= max(cost, 0)
@@ -297,6 +297,42 @@ var/list/uplink_items = list()
item = /obj/item/weapon/storage/box/syndie_kit/imp_compress
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
/datum/uplink_item/badass

View File

@@ -520,7 +520,7 @@
item_state = ""
throw_speed = 4
throw_range = 20
/*unused
/obj/item/weapon/camera_bug/attack_self(mob/usr as mob)
var/list/cameras = new/list()
for (var/obj/machinery/camera/C in cameranet.cameras)
@@ -545,7 +545,7 @@
if (usr.stat == 2) return
usr.client.eye = target
*/
/obj/item/weapon/syntiflesh
name = "syntiflesh"

View File

@@ -678,9 +678,10 @@
if(!(usr)) //BS12 EDIT
return
if((!istype(usr, /mob/living/carbon)) || (istype(usr, /mob/living/carbon/brain))|| !isMoMMI(usr))//Is humanoid, and is not a brain
usr << "\red You can't pick things up!"
return
if(!istype(usr, /mob/living/carbon) && !isMoMMI(usr))//Is not a carbon being or MoMMI
usr << "You can't pick things up!"
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
usr << "\red You can't pick things up!"
return

View File

@@ -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/show_description = null
var/active = 0
var/job = null
/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
//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>"
// 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
for(var/datum/uplink_item/item in buyable_items[category])
i++
var/cost_text = ""
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)
cost_text = "([item.cost])"
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)
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
// 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>"

View 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 ..()

View File

@@ -178,7 +178,7 @@
* Bucher's cleaver
*/
/obj/item/weapon/butch
name = "butcher's Cleaver"
name = "Butcher's Cleaver"
icon = 'icons/obj/kitchen.dmi'
icon_state = "butch"
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"
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)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()

View File

@@ -124,4 +124,13 @@
..()
new /obj/item/device/handtv(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

View File

@@ -9,6 +9,7 @@
* Wirecutters
* Welding Tool
* Crowbar
* Revolver Conversion Kit(made sense)
*/
/*
@@ -460,3 +461,25 @@
user << "Nothing to fix!"
else
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()

View File

@@ -228,13 +228,14 @@
if(istype(used_weapon,/obj/item/weapon))
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) ) )
organ.implants += W
visible_message("<span class='danger'>\The [W] sticks in the wound!</span>")
W.add_blood(src)
if(ismob(W.loc))
var/mob/living/H = W.loc
H.drop_item()
W.loc = src
if(!istype(W, /obj/item/weapon/butch/meatcleaver))
organ.implants += W
visible_message("<span class='danger'>\The [W] sticks in the wound!</span>")
W.add_blood(src)
if(ismob(W.loc))
var/mob/living/H = W.loc
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.
if(prob(75) && damagetype == BRUTE)

View File

@@ -116,10 +116,24 @@ emp_act
var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src)
if(user == src) // Attacking yourself can't miss
target_zone = user.zone_sel.selecting
if(!target_zone)
if(!target_zone && !src.stat)
visible_message("\red <B>[user] misses [src] with \the [I]!")
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)
if (!affecting)
return

View File

@@ -55,3 +55,5 @@
var/xylophone = 0 //For the spoooooooky xylophone cooldown
var/mob/remoteview_target = null
var/meatleft = 3 //For chef item

View File

@@ -35,4 +35,6 @@
var/cameraFollow = null
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.

View File

@@ -6,12 +6,12 @@
caliber = "38"
origin_tech = "combat=2;materials=2"
ammo_type = "/obj/item/ammo_casing/c38"
var/perfect = 0
special_check(var/mob/living/carbon/human/M)
if(caliber == initial(caliber))
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.take_organ_damage(0,20)
M.drop_item()
@@ -38,8 +38,14 @@
return 1
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")
user << "<span class='notice'>You begin to reinforce the barrel of [src].</span>"
if(loaded.len)
@@ -54,6 +60,8 @@
caliber = "357"
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>"
if(CK && istype(CK))
perfect = 1
else
user << "<span class='notice'>You begin to revert the modifications to [src].</span>"
if(loaded.len)
@@ -68,6 +76,7 @@
caliber = "38"
desc = initial(desc)
user << "<span class='warning'>You remove the modifications on [src]! Now it will fire .38 rounds.</span>"
perfect = 0

View File

@@ -363,6 +363,29 @@ datum
..()
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
name = "Mint Toxin"
id = "minttoxin"

View File

@@ -126,6 +126,9 @@
if("sugar")
name = "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
name = "Misc Condiment Bottle"
if (reagents.reagent_list.len==1)
@@ -172,4 +175,13 @@
volume = 20
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