Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into OrganRefactor

This commit is contained in:
Aurorablade
2016-01-26 21:17:25 -05:00
146 changed files with 1231 additions and 720 deletions
@@ -57,7 +57,9 @@
return ..()
/obj/item/device/radio/headset/receive_range(freq, level)
/obj/item/device/radio/headset/receive_range(freq, level, aiOverride = 0)
if(aiOverride)
return ..(freq, level)
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
if(H.l_ear == src || H.r_ear == src)
+12 -12
View File
@@ -20,13 +20,13 @@ var/list/world_uplinks = list()
var/purchase_log = ""
var/uplink_owner = null//text-only
var/used_TC = 0
var/job = null
var/show_descriptions = 0
/obj/item/device/uplink/nano_host()
return loc
return loc
/obj/item/device/uplink/New()
..()
welcome = ticker.mode.uplink_welcome
@@ -48,7 +48,7 @@ var/list/world_uplinks = list()
/obj/item/device/uplink/proc/generate_menu(mob/user as mob)
if(!job)
job = user.mind.assigned_role
var/dat = "<B>[src.welcome]</B><BR>"
dat += "Telecrystals left: [src.uses]<BR>"
dat += "<HR>"
@@ -82,7 +82,7 @@ var/list/world_uplinks = list()
/obj/item/device/uplink/proc/generate_item_lists(mob/user as mob)
if(!job)
job = user.mind.assigned_role
var/list/nano = new
var/list/reference = new
@@ -92,7 +92,7 @@ var/list/world_uplinks = list()
if(I.job && I.job.len)
if(!(I.job.Find(job)))
continue
nano[nano.len]["items"] += list(list("Name" = I.name, "Description" = I.description(),"Cost" = I.cost, "obj_path" = I.reference))
nano[nano.len]["items"] += list(list("Name" = sanitize(I.name), "Description" = sanitize(I.description()),"Cost" = I.cost, "obj_path" = I.reference))
reference[I.reference] = I
var/datum/nano_item_lists/result = new
@@ -130,7 +130,7 @@ var/list/world_uplinks = list()
return
UI.buy(src,usr)
nanomanager.update_uis(src)
/* var/list/L = UI.spawn_item(get_turf(usr),src)
if(ishuman(usr))
var/mob/living/carbon/human/A = usr
@@ -244,7 +244,7 @@ var/list/world_uplinks = list()
update_nano_data(href_list["id"])
if(href_list["descriptions"])
show_descriptions = !show_descriptions
update_nano_data()
update_nano_data()
nanomanager.update_uis(src)
return 1
@@ -253,7 +253,7 @@ var/list/world_uplinks = list()
if(nanoui_menu == 1)
var/permanentData[0]
for(var/datum/data/record/L in sortRecord(data_core.general))
permanentData[++permanentData.len] = list(Name = L.fields["name"],"id" = L.fields["id"])
permanentData[++permanentData.len] = list(Name = sanitize(L.fields["name"]),"id" = L.fields["id"])
nanoui_data["exploit_records"] = permanentData
if(nanoui_menu == 11)
@@ -283,7 +283,7 @@ var/list/world_uplinks = list()
src.hidden_uplink.trigger(user)
return 1
return 0
//Refund proc for the borg teleporter (later I'll make a general refund proc if there is demand for it)
/obj/item/device/radio/uplink/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/antag_spawner/borg_tele))
@@ -293,8 +293,8 @@ var/list/world_uplinks = list()
qdel(S)
user << "<span class='notice'>Teleporter refunded.</span>"
else
user << "<span class='notice'>This teleporter is already used, or is currently being used.</span>"
user << "<span class='notice'>This teleporter is already used, or is currently being used.</span>"
// PRESET UPLINKS
// A collection of preset uplinks.
//
@@ -91,8 +91,7 @@
//Step one - dehairing.
/obj/item/stack/sheet/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if( istype(W, /obj/item/weapon/kitchenknife) || \
istype(W, /obj/item/weapon/kitchen/utensil/knife) || \
if( istype(W, /obj/item/weapon/kitchen/knife) || \
istype(W, /obj/item/weapon/twohanded/fireaxe) || \
istype(W, /obj/item/weapon/hatchet) )
@@ -45,7 +45,7 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \
new/datum/stack_recipe("plastic ashtray", /obj/item/ashtray/plastic, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("plastic fork", /obj/item/weapon/kitchen/utensil/pfork, 1, on_floor = 1), \
new/datum/stack_recipe("plastic spoon", /obj/item/weapon/kitchen/utensil/pspoon, 1, on_floor = 1), \
new/datum/stack_recipe("plastic knife", /obj/item/weapon/kitchen/utensil/pknife, 1, on_floor = 1), \
new/datum/stack_recipe("plastic knife", /obj/item/weapon/kitchen/knife/plastic, 1, on_floor = 1), \
new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1), \
new/datum/stack_recipe("bear mould", /obj/item/weapon/kitchen/mould/bear, 1, on_floor = 1), \
new/datum/stack_recipe("worm mould", /obj/item/weapon/kitchen/mould/worm, 1, on_floor = 1), \
+39 -76
View File
@@ -92,110 +92,73 @@
/*
* Knives
*/
/obj/item/weapon/kitchen/utensil/knife
name = "knife"
desc = "Can cut through any food."
icon_state = "knife"
force = 10.0
throwforce = 10.0
sharp = 1
edge = 1
suicide_act(mob/user)
viewers(user) << pick("<span class='suicide'>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
"<span class='suicide'>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
"<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>")
return (BRUTELOSS)
/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
if ((CLUMSY in user.mutations) && prob(50))
user << "\red You accidentally cut yourself with the [src]."
user.take_organ_damage(20)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return
return ..()
/obj/item/weapon/kitchen/utensil/pknife
name = "plastic knife"
desc = "The bluntest of blades."
icon_state = "pknife"
force = 10.0
throwforce = 10.0
/*
* Kitchen knives
*/
/obj/item/weapon/kitchenknife
/obj/item/weapon/kitchen/knife
name = "kitchen knife"
icon = 'icons/obj/kitchen.dmi'
icon_state = "knife"
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
flags = CONDUCT
sharp = 1
edge = 1
force = 10.0
w_class = 3.0
throwforce = 6.0
force = 10
w_class = 2
throwforce = 10
hitsound = 'sound/weapons/bladeslice.ogg'
throw_speed = 3
throw_range = 6
materials = list(MAT_METAL=12000)
origin_tech = "materials=1"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
no_embed = 1
sharp = 1
edge = 1
suicide_act(mob/user)
viewers(user) << pick("<span class='suicide'>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
"<span class='suicide'>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
"<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>")
return (BRUTELOSS)
/obj/item/weapon/kitchen/knife/suicide_act(mob/user)
user.visible_message(pick("<span class='suicide'>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
"<span class='suicide'>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
"<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>"))
return (BRUTELOSS)
/obj/item/weapon/kitchenknife/combat
name = "combat knife"
force = 15.0
throwforce = 10.0
w_class = 2
origin_tech = "materials=2;combat=2"
desc = "A razor sharp knife, built from advanced alloys, designed for quick, melee killing. Also not half bad as a kitchen knife."
slot_flags = SLOT_BELT
icon = 'icons/obj/weapons.dmi'
icon_state = "combatknife"
/obj/item/weapon/kitchen/knife/plastic
name = "plastic knife"
desc = "The bluntest of blades."
icon_state = "pknife"
item_state = "knife"
sharp = 0
edge = 0
/obj/item/weapon/kitchenknife/ritual
/obj/item/weapon/kitchen/knife/ritual
name = "ritual knife"
desc = "The unearthly energies that once powered this blade are now dormant."
icon = 'icons/obj/wizard.dmi'
icon_state = "render"
w_class = 3
/*
* Bucher's cleaver
*/
/obj/item/weapon/butch
name = "butcher's Cleaver"
icon = 'icons/obj/kitchen.dmi'
/obj/item/weapon/kitchen/knife/butcher
name = "butcher's cleaver"
icon_state = "butch"
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
flags = CONDUCT
force = 15.0
w_class = 3.0
throwforce = 8.0
throw_speed = 3
throw_range = 6
materials = list(MAT_METAL=12000)
origin_tech = "materials=1"
force = 15
throwforce = 8
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
sharp = 1
edge = 1
w_class = 3
/obj/item/weapon/butch/meatcleaver
/obj/item/weapon/kitchen/knife/butcher/meatcleaver
name = "Meat Cleaver"
icon_state = "mcleaver"
item_state = "butch"
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
force = 25.0
throwforce = 15.0
no_embed = 1
/obj/item/weapon/kitchen/knife/combat
name = "combat knife"
icon_state = "combatknife"
item_state = "knife"
desc = "A military combat utility survival knife."
force = 20
throwforce = 20
origin_tech = "materials=2;combat=4"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut")
/*
* Rolling Pins
*/
@@ -159,6 +159,7 @@
"/obj/item/ammo_box",
"/obj/item/weapon/reagent_containers/food/snacks/donut/normal",
"/obj/item/weapon/reagent_containers/food/snacks/donut/jelly",
"/obj/item/weapon/kitchen/knife/combat",
"/obj/item/weapon/melee/baton",
"/obj/item/weapon/melee/classic_baton",
"/obj/item/device/flashlight/seclite",
@@ -172,7 +173,7 @@
/obj/item/weapon/storage/belt/security/response_team/New()
..()
new /obj/item/weapon/kitchenknife/combat(src)
new /obj/item/weapon/kitchen/knife/combat(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/device/flash(src)
new /obj/item/weapon/melee/classic_baton/telescopic(src)
@@ -215,6 +216,13 @@
icon_state = "militarybelt"
item_state = "military"
/obj/item/weapon/storage/belt/military/assault
name = "assault belt"
desc = "A tactical assault belt."
icon_state = "assaultbelt"
item_state = "assault"
storage_slots = 6
/obj/item/weapon/storage/belt/janitor
name = "janibelt"
desc = "A belt used to hold most janitorial supplies."
@@ -245,7 +253,7 @@
desc = "A bandolier for holding shotgun ammunition."
icon_state = "bandolier"
item_state = "bandolier"
storage_slots = 6
storage_slots = 8
can_hold = list(
"/obj/item/ammo_casing/shotgun"
)
@@ -258,6 +266,8 @@
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/shotgun/beanbag(src)
/obj/item/weapon/storage/belt/holster
name = "shoulder holster"
+25 -2
View File
@@ -26,6 +26,7 @@
throw_range = 4
throwforce = 10
w_class = 1
var/transformed = 0
suicide_act(mob/user)
viewers(user) << "<span class='suicide'>[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.</span>"
@@ -57,6 +58,28 @@
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
..()
/obj/item/weapon/nullrod/afterattack(var/obj/item/I as obj, mob/user as mob, proximity)
if(!proximity)
return
if(istype(I, /obj/item/clothing/suit/armor/riot/knight/templar)) //Only the Chaplain's holy armor is capable fo performing this feat.
if(!transformed) // can't turn a sword into a sword.
user << "<span class='notice'>You sheath the [src] into the [I]'s scabbard, transforming it into a holy sword.</span>"
user.unEquip(src)
qdel(src)
var/obj/item/weapon/nullrod/sword/S = new /obj/item/weapon/nullrod/sword
user.put_in_hands(S)
/obj/item/weapon/nullrod/sword
name = "holy sword"
desc = "A sword imbued with holy power, its very presence disrupts and dampens the powers of paranormal phenomenae."
icon_state = "claymore"
item_state = "claymore"
hitsound = 'sound/weapons/bladeslice.ogg'
w_class = 3 //transforming it is not without its downsides.
sharp = 1
edge = 1
transformed = 1
/obj/item/weapon/sord
name = "\improper SORD"
desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
@@ -159,7 +182,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params)
..()
if(istype(I, /obj/item/weapon/shard))
var/obj/item/weapon/twohanded/spear/S = new /obj/item/weapon/twohanded/spear
if(!remove_item_from_storage(user))
user.unEquip(src)
user.unEquip(I)
@@ -173,7 +196,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params)
var/obj/item/weapon/melee/baton/cattleprod/P = new /obj/item/weapon/melee/baton/cattleprod
if(!remove_item_from_storage(user))
user.unEquip(src)
user.unEquip(src)
user.unEquip(I)
user.put_in_hands(P)
@@ -0,0 +1,33 @@
/obj/structure/closet/secure_closet/chaplain
name = "chapel wardrobe"
desc = "A lockable storage unit for Nanotrasen-approved religious attire."
req_access = list(access_chapel_office)
icon_state = "chaplainsecure1"
icon_closed = "chaplainsecure"
icon_locked = "chaplainsecure1"
icon_opened = "chaplainsecureopen"
icon_broken = "chaplainsecurebroken"
icon_off = "chaplainsecureoff"
/obj/structure/closet/secure_closet/chaplain/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/chaplain(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/suit/nun(src)
new /obj/item/clothing/head/nun_hood(src)
new /obj/item/clothing/suit/chaplain_hoodie(src)
new /obj/item/clothing/head/chaplain_hood(src)
new /obj/item/clothing/suit/holidaypriest(src)
new /obj/item/clothing/under/wedding/bride_white(src)
new /obj/item/weapon/storage/backpack/cultpack (src)
new /obj/item/clothing/head/helmet/knight/templar(src)
new /obj/item/clothing/suit/armor/riot/knight/templar(src)
new /obj/item/weapon/storage/fancy/candle_box/eternal(src)
new /obj/item/weapon/storage/fancy/candle_box/eternal(src)
new /obj/item/weapon/storage/fancy/candle_box/eternal(src)
new /obj/item/clothing/gloves/ring/silver(src)
new /obj/item/clothing/gloves/ring/silver(src)
new /obj/item/clothing/gloves/ring/gold(src)
new /obj/item/clothing/gloves/ring/gold(src)
return
@@ -249,6 +249,7 @@
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/glasses/hud/health/health_advanced
new /obj/item/clothing/head/beret/centcom/officer(src)
new /obj/item/clothing/head/beret/centcom/officer/navy(src)
new /obj/item/clothing/suit/armor/vest/blueshield(src)
new /obj/item/clothing/suit/storage/blueshield(src)
new /obj/item/clothing/shoes/centcom(src)
@@ -111,35 +111,6 @@
new /obj/item/clothing/head/soft/black(src)
return
/obj/structure/closet/wardrobe/chaplain_black
name = "chapel wardrobe"
desc = "It's a storage unit for Nanotrasen-approved religious attire."
icon_state = "black"
icon_closed = "black"
/obj/structure/closet/wardrobe/chaplain_black/New()
..()
sleep(2)
new /obj/item/clothing/under/rank/chaplain(src)
new /obj/item/clothing/shoes/black(src)
new /obj/item/clothing/suit/nun(src)
new /obj/item/clothing/head/nun_hood(src)
new /obj/item/clothing/suit/chaplain_hoodie(src)
new /obj/item/clothing/head/chaplain_hood(src)
new /obj/item/clothing/suit/holidaypriest(src)
new /obj/item/clothing/under/wedding/bride_white(src)
new /obj/item/weapon/storage/backpack/cultpack (src)
new /obj/item/weapon/storage/fancy/candle_box/eternal(src)
new /obj/item/weapon/storage/fancy/candle_box/eternal(src)
new /obj/item/weapon/storage/fancy/candle_box/eternal(src)
new /obj/item/clothing/gloves/ring/silver(src)
new /obj/item/clothing/gloves/ring/silver(src)
new /obj/item/clothing/gloves/ring/gold(src)
new /obj/item/clothing/gloves/ring/gold(src)
return
/obj/structure/closet/wardrobe/green
name = "green wardrobe"
icon_state = "green"
@@ -314,6 +314,7 @@
if(dir != NORTH)
layer = 5
flipped = 1
smooth = SMOOTH_FALSE
flags |= ON_BORDER
for(var/D in list(turn(direction, 90), turn(direction, -90)))
if(locate(/obj/structure/table,get_step(src,D)))
@@ -339,6 +340,7 @@
layer = initial(layer)
flipped = 0
smooth = initial(smooth)
flags &= ~ON_BORDER
for(var/D in list(turn(dir, 90), turn(dir, -90)))
if(locate(/obj/structure/table,get_step(src,D)))