Keeping up to date with ZomgPonies/Paradise

This commit is contained in:
DZD
2014-10-30 19:37:56 -04:00
56 changed files with 7131 additions and 6383 deletions
+1 -42
View File
@@ -1,6 +1,7 @@
/obj/item
name = "item"
icon = 'icons/obj/items.dmi'
var/discrete = 0 // used in item_attack.dm to make an item not show an attack message to viewers
var/icon/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
var/blood_overlay_color = null
var/abstract = 0
@@ -151,51 +152,9 @@
//canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N
if(!src.canremove)
return 0
if(istype(user,/mob/living/carbon/human))
if(istype(src, /obj/item/clothing/suit/space/rig)) // If the item to be unequipped is a rigid suit
if(user.delay_clothing_u_equip(src) == 0)
return 0
else
user.u_equip(src)
else
user.u_equip(src)
/*
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(istype(src, /obj/item/clothing/suit/space/rig)) // If the item to unequip item is a rigid suit
if(! istype(H.head, /obj/item/clothing/head/helmet/space/rig)) // If the person is NOT wearing a rigid suit helmet
var/tempX = H.x
var/tempY = H.y
H << "\blue You unfastening the seals and clambering out of the [src]. (This will take a while)."
var/obj/item/clothing/head/helmet/space/rig/this_rig = src
var/equip_time = round(this_rig.equip_time/10)
var/i
for(i=1; i<=equip_time; i++)
sleep (10) // Check if they've moved every 10 time units
if ((tempX != usr.x) || (tempY != usr.y))
H << "\red \The [src] is too fiddly to remove whilst moving."
return 0
H << "\blue You finish removing the [src]."
else
H << "\red You must remove \the [H.head] first."
return 0
if(istype(src, /obj/item/clothing/head/helmet/space/rig)) // If the item to unequip is a rigid suit helmet
var/tempX = H.x
var/tempY = H.y
H << "\blue You start unfastening the [src]. (This will take a while)."
var/obj/item/clothing/suit/space/rig/this_helmet = src
var/equip_time = round(this_helmet.equip_time/10)
var/i
for(i=1; i<=equip_time; i++)
sleep (10) // Check if they've moved every 10 time units
if ((tempX != usr.x) || (tempY != usr.y))
H << "\red \The [src] is too fiddly to remove whilst moving."
return 0
H << "\blue You finish removing the [src]."
*/
else
if(isliving(src.loc))
return 0
@@ -48,6 +48,18 @@
del(src)
return
/obj/item/device/radio/beacon/syndicate/bomb
name = "suspicious beacon"
desc = "A label on it reads: <i>Warning: Activating this device will send a high-ordinance explosive to your location</i>."
origin_tech = "bluespace=1;syndicate=7"
/obj/item/device/radio/beacon/syndicate/bomb/attack_self(mob/user as mob)
if(user)
user << "\blue Locked In"
new /obj/machinery/syndicatebomb( user.loc )
playsound(src, 'sound/effects/pop.ogg', 100, 1, 1)
del(src)
return
/obj/item/device/telepad_beacon
@@ -60,5 +60,92 @@ effective or pretty fucking useless.
icon_state = "battererburnt"
/*
The radioactive microlaser, a device disguised as a health analyzer used to irradiate people.
The strength of the radiation is determined by the 'intensity' setting, while the delay between
the scan and the irradiation kicking in is determined by the wavelength.
Each scan will cause the microlaser to have a brief cooldown period. Higher intensity will increase
the cooldown, while higher wavelength will decrease it.
Wavelength is also slightly increased by the intensity as well.
*/
/obj/item/device/rad_laser
name = "Health Analyzer"
icon_state = "health"
item_state = "analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject. A strange microlaser is hooked on to the scanning end."
flags = FPRINT | TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
discrete = 1 // Makes the item not give an attack log message for viewers.
throwforce = 3
w_class = 1.0
throw_speed = 5
throw_range = 10
m_amt = 200
origin_tech = "magnets=3;biotech=5;syndicate=3"
var/intensity = 5 // how much damage the radiation does
var/wavelength = 10 // time it takes for the radiation to kick in, in seconds
var/used = 0 // is it cooling down?
/obj/item/device/rad_laser/attack(mob/living/M as mob, mob/living/user as mob)
if(!used)
..()
user.visible_message("<span class='notice'> [user] has analyzed [M]'s vitals.","<span class='notice'> You have analyzed [M]'s vitals.")
var/cooldown = round(max(100,(((intensity*8)-(wavelength/2))+(intensity*2))*10))
used = 1
icon_state = "health1"
handle_cooldown(cooldown) // splits off to handle the cooldown while handling wavelength
spawn((wavelength+(intensity*4))*10)
if(M)
if(intensity >= 5)
M.apply_effect(round(intensity/1.5), PARALYZE)
M.apply_effect(intensity*10, IRRADIATE)
else
user << "<span class='danger'>The radioactive microlaser is still recharging.</span>"
/obj/item/device/rad_laser/proc/handle_cooldown(var/cooldown)
spawn(cooldown)
used = 0
icon_state = "health"
/obj/item/device/rad_laser/attack_self(mob/user as mob)
..()
interact(user)
/obj/item/device/rad_laser/interact(mob/user as mob)
user.set_machine(src)
var/cooldown = round(max(10,((intensity*8)-(wavelength/2))+(intensity*2)))
var/dat = {"
Radiation Intensity: <A href='?src=\ref[src];radint=-5'>-</A><A href='?src=\ref[src];radint=-1'>-</A> [intensity] <A href='?src=\ref[src];radint=1'>+</A><A href='?src=\ref[src];radint=5'>+</A><BR>
Radiation Wavelength: <A href='?src=\ref[src];radwav=-5'>-</A><A href='?src=\ref[src];radwav=-1'>-</A> [(wavelength+(intensity*4))] <A href='?src=\ref[src];radwav=1'>+</A><A href='?src=\ref[src];radwav=5'>+</A><BR>
Laser Cooldown: [cooldown] Seconds<BR>
"}
var/datum/browser/popup = new(user, "radlaser", "Radioactive Microlaser Interface", 400, 240)
popup.set_content(dat)
popup.open()
/obj/item/device/rad_laser/Topic(href, href_list)
if(!in_range(src, usr) || issilicon(usr) || !usr.canmove || usr.restrained())
return 1
usr.set_machine(src)
if(href_list["radint"])
var/amount = text2num(href_list["radint"])
amount += intensity
intensity = max(1,(min(10,amount)))
else if(href_list["radwav"])
var/amount = text2num(href_list["radwav"])
amount += wavelength
wavelength = max(1,(min(120,amount)))
//updateUsrDialog()
interact(usr)
add_fingerprint(usr)
return
@@ -0,0 +1,47 @@
/obj/item/weapon/dnascrambler
name = "dna scrambler"
desc = "An illegal genetic serum designed to randomize the user's identity."
icon = 'icons/obj/syringe.dmi'
item_state = "syringe_0"
icon_state = "b10"
var/used = null
update_icon()
if(used)
icon_state = "b0"
else
icon_state = "b10"
attack(mob/M as mob, mob/user as mob)
if(!M || !user)
return
if(!ishuman(M) || !ishuman(user))
return
if(src.used)
return
if(M == user)
user.visible_message("\red <b>[user.name] injects \himself with [src]!</b>")
src.injected(user,user)
else
user.visible_message("\red <b>[user.name] is trying to inject [M.name] with [src]!</b>")
if (do_mob(user,M,30))
user.visible_message("\red <b>[user.name] injects [M.name] with [src].</b>")
src.injected(M, user)
else
user << "\red You failed to inject [M.name]."
proc/injected(var/mob/living/carbon/target, var/mob/living/carbon/user)
target.generate_name()
target.real_name = target.name
scramble(1, target, 100)
log_attack("[key_name(user)] injected [key_name(target)] with the [name]")
log_game("[key_name_admin(user)] injected [key_name_admin(target)] with the [name]")
src.used = 1
src.update_icon()
src.name = "used " + src.name
@@ -35,7 +35,7 @@
/obj/item/weapon/grenade/spawnergrenade/manhacks
name = "manhack delivery grenade"
spawner_type = /mob/living/simple_animal/hostile/viscerator
deliveryamt = 3
deliveryamt = 5
origin_tech = "materials=3;magnets=4;syndicate=4"
/obj/item/weapon/grenade/spawnergrenade/spesscarp
@@ -0,0 +1,12 @@
/obj/item/weapon/grenade/syndieminibomb
desc = "A syndicate manufactured explosive used to sow destruction and chaos"
name = "syndicate minibomb"
icon = 'icons/obj/grenade.dmi'
icon_state = "syndicate"
item_state = "flashbang"
origin_tech = "materials=3;magnets=4;syndicate=4"
/obj/item/weapon/grenade/syndieminibomb/prime()
update_mob()
explosion(src.loc,1,2,4)
del(src)
+33 -69
View File
@@ -14,64 +14,43 @@
origin_tech = "materials=1"
var/dispenser = 0
var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes
var/cuff_sound = 'sound/weapons/handcuffs.ogg'
/obj/item/weapon/handcuffs/attack(mob/living/carbon/C as mob, mob/user as mob)
if (!istype(user, /mob/living/carbon/human))
user << "\red You don't have the dexterity to do this!"
return
if ((M_CLUMSY in usr.mutations) && prob(50))
user << "\red Uh ... how do those things work?!"
place_handcuffs(user, user)
return
if(!C.handcuffed)
if (C == user)
place_handcuffs(user, user)
/obj/item/weapon/handcuffs/attack(mob/living/carbon/C, mob/user)
if(M_CLUMSY in user.mutations && prob(50))
user << "<span class='warning'>Uh... how do those things work?!</span>"
if(!C.handcuffed)
user.drop_item()
loc = C
C.handcuffed = src
C.update_inv_handcuffed()
return
//check for an aggressive grab
for (var/obj/item/weapon/grab/G in C.grabbed_by)
if (G.loc == user && G.state >= GRAB_AGGRESSIVE)
place_handcuffs(C, user)
var/cable = 0
if(istype(src, /obj/item/weapon/handcuffs/cable))
cable = 1
if(!C.handcuffed)
C.visible_message("<span class='danger'>[user] is trying to put handcuffs on [C]!</span>", \
"<span class='danger'>[user] is trying to put handcuffs on [C]!</span>")
if(cable)
playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
else
playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2)
if(do_mob(user, C, 30))
if(C.handcuffed)
return
user << "\red You need to have a firm grip on [C] before you can put \the [src] on!"
user.drop_item()
loc = C
C.handcuffed = src
C.update_inv_handcuffed()
if(cable)
feedback_add_details("handcuffs","C")
else
feedback_add_details("handcuffs","H")
/obj/item/weapon/handcuffs/proc/place_handcuffs(var/mob/living/carbon/target, var/mob/user)
playsound(src.loc, cuff_sound, 30, 1, -2)
if (ishuman(target))
var/mob/living/carbon/human/H = target
H.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been handcuffed (attempt) by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to handcuff [H.name] ([H.ckey])</font>")
msg_admin_attack("[key_name(user)] attempted to handcuff [key_name(H)]")
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
O.source = user
O.target = H
O.item = user.get_active_hand()
O.s_loc = user.loc
O.t_loc = H.loc
O.place = "handcuff"
H.requests += O
spawn( 0 )
feedback_add_details("handcuffs","H")
O.process()
return
if (ismonkey(target))
var/mob/living/carbon/monkey/M = target
var/obj/effect/equip_e/monkey/O = new /obj/effect/equip_e/monkey( )
O.source = user
O.target = M
O.item = user.get_active_hand()
O.s_loc = user.loc
O.t_loc = M.loc
O.place = "handcuff"
M.requests += O
spawn( 0 )
O.process()
return
add_logs(user, C, "handcuffed")
var/last_chew = 0
/mob/living/carbon/human/RestrainedClickOn(var/atom/A)
@@ -105,7 +84,6 @@ var/last_chew = 0
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff_red"
breakouttime = 300 //Deciseconds = 30s
cuff_sound = 'sound/weapons/cablecuff.ogg'
/obj/item/weapon/handcuffs/cable/red
icon_state = "cuff_red"
@@ -150,17 +128,3 @@ var/last_chew = 0
user << "<span class='notice'>You wrap the cable restraint around the top of the rod.</span>"
del(src)
/obj/item/weapon/handcuffs/cyborg
dispenser = 1
/obj/item/weapon/handcuffs/cyborg/attack(mob/living/carbon/C as mob, mob/user as mob)
if(!C.handcuffed)
var/turf/p_loc = user.loc
var/turf/p_loc_m = C.loc
playsound(src.loc, cuff_sound, 30, 1, -2)
user.visible_message("\red <B>[user] is trying to put handcuffs on [C]!</B>")
spawn(30)
if(!C) return
if(p_loc == user.loc && p_loc_m == C.loc)
C.handcuffed = new /obj/item/weapon/handcuffs(C)
C.update_inv_handcuffed()
@@ -138,3 +138,14 @@
src.imp = new /obj/item/weapon/implant/death_alarm( src )
..()
return
/obj/item/weapon/implantcase/freedom
name = "Glass Case- 'Freedom'"
desc = "A case containing a freedom implant."
icon = 'icons/obj/items.dmi'
icon_state = "implantcase-b"
New()
src.imp = new /obj/item/weapon/implant/freedom( src )
..()
return
@@ -38,11 +38,6 @@
if(crit_fail)
user << "\red The Bluespace generator isn't working."
return
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
user << "\red The Bluespace interfaces of the two devices conflict and malfunction."
del(W)
return
//BoH+BoH=Singularity, commented out.
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
investigate_log("has become a singularity. Caused by [user.key]","singulo")
user << "\red The Bluespace interfaces of the two devices catastrophically malfunction!"
@@ -167,6 +167,21 @@
new /obj/item/ammo_casing/shotgun/birdshot(src)
/obj/item/weapon/storage/box/gauge
name = "box of 12 gauge slugs"
desc = "It has a picture of a gun and several warning symbols on the front."
m_amt = 50000
New()
..()
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/shotgun(src)
/obj/item/weapon/storage/box/flashbangs
name = "box of flashbangs (WARNING)"
@@ -21,7 +21,6 @@
new /obj/item/weapon/cell/high(src)
new /obj/item/weapon/card/id/syndicate(src)
new /obj/item/device/multitool(src)
new /obj/item/weapon/shield/energy(src)
new /obj/item/clothing/shoes/magboots(src)