Massive traitor item overhaul

This commit is contained in:
ZomgPonies
2013-09-23 05:41:53 -04:00
parent 3720a8d690
commit b0aff645a3
52 changed files with 1530 additions and 647 deletions
@@ -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++)
step(peel,direction)
else
step(peel,direction)
new /obj/item/weapon/bananapeel/traitorpeel(get_turf(src.loc))
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) && !isrobot(M))
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 ..()
@@ -311,6 +311,60 @@ the implant may become unstable and either pre-maturely inject the subject or si
H << "\blue You feel a surge of loyalty towards Nanotrasen."
return 1
/obj/item/weapon/implant/traitor
name = "Greytide Implant"
desc = "Greytide Station wide"
icon_state = "implant_evil"
get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Greytide Mind-Slave Implant<BR>
<b>Life:</b> ??? <BR>
<b>Important Notes:</b> Any humanoid injected with this implant will become loyal to the injector and the greytide, unless of course the host is already loyal to someone else.<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's mental functions.<BR>
<b>Special Features:</b> Glory to the Greytide!<BR>
<b>Integrity:</b> Implant will last so long as the nanobots are inside the bloodstream."}
return dat
implanted(mob/M, mob/user)
var/list/implanters
var/ref = "\ref[user.mind]"
if(!ishuman(M)) return 0
if(!M.mind) return 0
var/mob/living/carbon/human/H = M
if(locate(/obj/item/weapon/implant/traitor) in H.contents || locate(/obj/item/weapon/implant/traitor) in H.contents)
H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.")
return 0
else if(H.mind in ticker.mode.traitors)
H.visible_message("[H] seems to resist the implant!", "You feel a familiar sensation in your head that quickly dissipates.")
return 0
H.implanting = 1
H << "\blue You feel a surge of loyalty towards [user.name]."
if(!(user.mind in ticker.mode:implanter))
ticker.mode:implanter[ref] = list()
implanters = ticker.mode:implanter[ref]
implanters.Add(H.mind)
ticker.mode.implanted.Add(H.mind)
ticker.mode.implanted[H.mind] = user.mind
//ticker.mode:implanter[user.mind] += H.mind
ticker.mode:implanter[ref] = implanters
ticker.mode.traitors += H.mind
H.mind.special_role = "traitor"
H << "<B>\red You've been shown the Greytide by [user.name]!</B> You now must lay down your life to protect them and assist in their goals at any cost."
var/datum/objective/protect/p = new
p.owner = H.mind
p.target = user:mind
p.explanation_text = "Protect [user:real_name], the [user:mind:assigned_role=="MODE" ? (user:mind:special_role) : (user:mind:assigned_role)]."
H.mind.objectives += p
for(var/datum/objective/objective in H.mind.objectives)
H << "<B>Objective #1</B>: [objective.explanation_text]"
ticker.mode.update_traitor_icons_added(H.mind)
ticker.mode.update_traitor_icons_added(user.mind)
log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
return 1
/obj/item/weapon/implant/adrenalin
name = "adrenalin"
@@ -37,7 +37,7 @@
msg_admin_attack("[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
user.show_message("\red You implanted the implant into [M].")
if(src.imp.implanted(M))
if(src.imp.implanted(M, user))
src.imp.loc = M
src.imp.imp_in = M
src.imp.implanted = 1
@@ -47,11 +47,20 @@
affected.implants += src.imp
imp.part = affected
M:implanting = 0
src.imp = null
update()
return
/obj/item/weapon/implanter/traitor
name = "implanter-greytide"
desc = "Greytide Stationwide."
New()
src.imp = new /obj/item/weapon/implant/traitor(src)
..()
update()
return
/obj/item/weapon/implanter/loyalty
name = "implanter-loyalty"
@@ -193,6 +193,13 @@
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 ..()
@@ -26,6 +26,21 @@
item_state = "syringe_kit"
foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/box/surveillance/
name = "\improper DromedaryCo packet"
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
icon = 'icons/obj/cigarettes.dmi'
icon_state = "Dpacket"
item_state = "Dpacket"
w_class = 1
foldable = null
New()
..()
contents = list()
sleep(1)
for(var/i = 1 to 5)
new /obj/item/device/camera_bug(src)
/obj/item/weapon/storage/box/survival/
New()
..()
@@ -9,7 +9,6 @@
new /obj/item/clothing/shoes/syndigaloshes(src)
return
if ("stealth")
if("stealth")
new /obj/item/weapon/gun/energy/crossbow(src)
new /obj/item/weapon/pen/paralysis(src)
@@ -117,3 +116,42 @@
new /obj/item/clothing/suit/space/syndicate(src)
new /obj/item/clothing/head/helmet/space/syndicate(src)
return
/obj/item/weapon/storage/box/syndie_kit/surveillance
name = "box (S)"
/obj/item/weapon/storage/box/syndie_kit/surveillance/New()
..()
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
/obj/item/weapon/storage/box/syndie_kit/greytide
name = "box (GT)"
New()
..()
var/obj/item/weapon/implanter/O = new(src)
O.imp = new /obj/item/weapon/implant/traitor(O)
O.update()
/obj/item/weapon/storage/box/syndie_kit/boolets
name = "Shotgun shells"
New()
..()
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
new /obj/item/ammo_casing/shotgun/fakebeanbag(src)
+24
View File
@@ -9,6 +9,7 @@
* Wirecutters
* Welding Tool
* Crowbar
* Revolver Conversion Kit
*/
/*
@@ -460,3 +461,26 @@
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()