Merge pull request #7 from tgstation/master

Merge with upstream
This commit is contained in:
nullquery
2015-06-28 07:08:28 +02:00
95 changed files with 614 additions and 156 deletions
+7 -2
View File
@@ -9,6 +9,7 @@ var/datum/subsystem/objects/SSobj
priority = 12
var/list/processing = list()
var/list/burning = list()
/datum/subsystem/objects/New()
NEW_SS_GLOBAL(SSobj)
@@ -37,5 +38,9 @@ var/datum/subsystem/objects/SSobj
++i
continue
SSobj.processing.Cut(i, i+1)
for(var/obj/burningobj in SSobj.burning)
if(burningobj && (burningobj.burn_state == 1))
if(burningobj.burn_world_time < world.time)
burningobj.burn()
else
SSobj.burning -= burningobj
+3 -2
View File
@@ -664,9 +664,10 @@ var/list/uplink_items = list()
/datum/uplink_item/implants/microbomb
name = "Microbomb Implant"
desc = "An implant injected into the body, and later activated either manually or automatically upon death. The more implants inside of you, the higher the explosive power."
desc = "An implant injected into the body, and later activated either manually or automatically upon death. The more implants inside of you, the higher the explosive power. \
Will permanently destroy your body, however."
item = /obj/item/weapon/storage/box/syndie_kit/imp_microbomb
cost = 1
cost = 2
//CYBERNETIC IMPLANTS
+3
View File
@@ -47,6 +47,9 @@
M.update_canmove()
post_buckle_mob(M)
M.throw_alert("buckled", new_master = src)
if(burn_state == 1) //Sets the mob on fire if you buckle them to a burning object
M.adjust_fire_stacks(1)
M.IgniteMob()
return 1
/obj/proc/unbuckle_mob()
@@ -19,6 +19,9 @@
/obj/effect/decal/cleanable/ash/New()
..()
reagents.add_reagent("ash", 30)
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
/obj/effect/decal/cleanable/greenglow
name = "green glow"
@@ -71,6 +74,8 @@
layer = 3
icon = 'icons/effects/effects.dmi'
icon_state = "cobweb1"
burn_state = 0 //Burnable
burntime = 1
/obj/effect/decal/cleanable/molten_item
name = "gooey grey mass"
@@ -142,4 +147,18 @@
gender = PLURAL
icon = 'icons/obj/objects.dmi'
icon_state = "ash"
anchored = 1
anchored = 1
/obj/effect/decal/cleanable/shreds
name = "shreds"
desc = "The shredded remains of what appears to be clothing."
icon = 'icons/effects/effects.dmi'
icon_state = "shreds"
gender = PLURAL
density = 0
anchored = 1
layer = 2
/obj/effect/decal/cleanable/shreds/New()
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
+19
View File
@@ -1,3 +1,5 @@
var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_state" = "fire")
/obj/item
name = "item"
icon = 'icons/obj/items.dmi'
@@ -158,6 +160,23 @@
/obj/item/attack_hand(mob/user as mob)
if (!user) return
if(burn_state == 1)
var/mob/living/carbon/human/H = user
if(istype(H))
if(H.gloves && (H.gloves.max_heat_protection_temperature > 360))
extinguish()
user << "<span class='notice'>You put out the fire on [src].</span>"
else
user << "<span class='warning'>You burn your hand on [src]!</span>"
var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
if(affecting.take_damage( 0, 5 )) // 5 burn damage
H.update_damage_overlays(0)
H.updatehealth()
return
else
extinguish()
if (istype(src.loc, /obj/item/weapon/storage))
//If the item is in a storage item, take it out
var/obj/item/weapon/storage/S = src.loc
+4 -1
View File
@@ -6,7 +6,6 @@
icon_state = "candle1"
item_state = "candle1"
w_class = 1
var/wax = 200
var/lit = 0
proc
@@ -46,6 +45,10 @@
if(M.lit)
light()
/obj/item/candle/fire_act()
if(!src.lit)
light() //honk
return
/obj/item/candle/light(var/flavor_text = "<span class='danger'>[usr] lights the [name].</span>")
if(!src.lit)
@@ -1,6 +1,8 @@
//copy pasta of the space piano, don't hurt me -Pete
/obj/item/device/instrument
name = "generic instrument"
burn_state = 0 //Burnable
burntime = 20
var/datum/song/handheld/song
var/instrumentId = "generic"
var/instrumentExt = "ogg"
@@ -3,6 +3,7 @@
desc = "A box suited for pizzas."
icon = 'icons/obj/food/containers.dmi'
icon_state = "pizzabox1"
burn_state = 0 //Burnable
var/timer = 10 //Adjustable timer
var/timer_set = 0
var/primed = 0
@@ -54,6 +55,10 @@
sleep(timer)
return go_boom()
/obj/item/device/pizza_bomb/burn() //Instead of burning to ashes, it will just explode
go_boom()
return
/obj/item/device/pizza_bomb/proc/go_boom()
if(disarmed)
visible_message("<span class='danger'>\icon[src] Sparks briefly jump out of the [correct_wire] wire on \the [src], but it's disarmed!")
@@ -56,6 +56,9 @@
mytape = null
update_icon()
/obj/item/device/taperecorder/fire_act()
mytape.ruin() //Fires destroy the tape
return()
/obj/item/device/taperecorder/attack_hand(mob/user)
if(loc == user)
@@ -264,6 +267,8 @@
var/list/timestamp = list()
var/ruined = 0
/obj/item/device/tape/fire_act()
ruin()
/obj/item/device/tape/attack_self(mob/user)
if(!ruined)
+1
View File
@@ -10,6 +10,7 @@
throw_speed = 2
throw_range = 2
w_class = 1.0
burn_state = 0 //Burnable
/obj/item/stack/spacecash/c10
icon_state = "spacecash10"
@@ -7,6 +7,8 @@
w_class = 1
throw_speed = 3
throw_range = 7
burn_state = 0 //Burnable
burntime = 5
var/heal_brute = 0
var/heal_burn = 0
var/stop_bleeding = 0
@@ -108,6 +108,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
icon = 'icons/obj/items.dmi'
origin_tech = "materials=1;biotech=1"
sheettype = "wood"
burn_state = 0 //Burnable
/obj/item/stack/sheet/mineral/wood/New(var/loc, var/amount=null)
recipes = wood_recipes
@@ -122,6 +123,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
singular_name = "cloth roll"
icon_state = "sheet-cloth"
origin_tech = "materials=2"
burn_state = 0 //Burnable
/*
* Cardboard
@@ -143,6 +145,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
singular_name = "cardboard sheet"
icon_state = "sheet-card"
origin_tech = "materials=1"
burn_state = 0 //Burnable
/obj/item/stack/sheet/cardboard/New(var/loc, var/amount=null)
recipes = cardboard_recipes
@@ -84,6 +84,7 @@
max_amount = 60
origin_tech = "biotech=1"
turf_type = /turf/simulated/floor/fancy/grass
burn_state = 0 //Burnable
/*
* Wood
@@ -101,6 +102,7 @@
max_amount = 60
origin_tech = "biotech=1"
turf_type = /turf/simulated/floor/wood
burn_state = 0 //Burnable
/*
* Carpets
@@ -117,6 +119,7 @@
throw_range = 7
max_amount = 60
turf_type = /turf/simulated/floor/fancy/carpet
burn_state = 0 //Burnable
/*
* High-traction
+11 -1
View File
@@ -271,6 +271,7 @@
item_state = "arm_blade"
attack_verb = list("pricked", "absorbed", "gored")
w_class = 2
burn_state = 0 //Burnable
/*
@@ -527,6 +528,10 @@
icon_state = "snappop"
w_class = 1
/obj/item/toy/snappop/fire_act()
throw_impact()
return
/obj/item/toy/snappop/throw_impact(atom/hit_atom)
..()
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
@@ -710,6 +715,8 @@
/obj/item/toy/cards
burn_state = 0 //Burnable
burntime = 5
var/parentdeck = null
var/deckstyle = "nanotrasen"
var/card_hitsound = null
@@ -949,7 +956,8 @@
newobj.card_throw_speed = sourceobj.card_throw_speed
newobj.card_throw_range = sourceobj.card_throw_range
newobj.card_attack_verb = sourceobj.card_attack_verb
if(sourceobj.burn_state == -1)
newobj.burn_state = -1
/obj/item/toy/cards/singlecard
name = "card"
@@ -1065,6 +1073,7 @@
card_throw_speed = 3
card_throw_range = 7
card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut")
burn_state = -1 //Not Burnable
/*
* Fake nuke
@@ -1123,6 +1132,7 @@
icon_state = "carpplushie"
w_class = 2.0
attack_verb = list("bitten", "eaten", "fin slapped")
burn_state = 0 //Burnable
var/bitesound = 'sound/weapons/bite.ogg'
// Attack mob
+3
View File
@@ -3,6 +3,7 @@
icon = 'icons/obj/janitor.dmi'
desc = "This is rubbish."
w_class = 1.0
burn_state = 0 //Burnable
/obj/item/trash/raisins
name = "\improper 4no raisins"
@@ -51,6 +52,7 @@
/obj/item/trash/tray
name = "tray"
icon_state = "tray"
burn_state = -1 //Not Burnable
/obj/item/trash/candle
name = "candle"
@@ -60,6 +62,7 @@
/obj/item/trash/can
name = "crushed can"
icon_state = "cola"
burn_state = -1 //Not Burnable
/obj/item/trash/attack(mob/M, mob/living/user)
return
@@ -11,6 +11,7 @@
throwforce = 6.0
w_class = 2.0
attack_verb = list("bashed", "battered", "judged", "whacked")
burn_state = 0 //Burnable
/obj/item/weapon/gavelhammer/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.</span>")
@@ -25,6 +26,7 @@
force = 2.0
throwforce = 2.0
w_class = 1.0
burn_state = 0 //Burnable
/obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/gavelhammer))
@@ -151,6 +151,9 @@
if(isliving(atm)) //For extinguishing mobs on fire
var/mob/living/M = atm
M.ExtinguishMob()
if(istype(atm,/obj/item))
var/obj/item/Item = atm
Item.extinguish()
if(W.loc == my_target) break
sleep(2)
@@ -13,7 +13,7 @@
icon = 'icons/obj/storage.dmi'
icon_state = "giftcrate3"
item_state = "gift1"
burn_state = 0 //Burnable
/obj/item/weapon/a_gift/New()
..()
@@ -86,6 +86,7 @@
flags = NOBLUDGEON
amount = 25
max_amount = 25
burn_state = 0 //Burnable
/obj/item/stack/wrapping_paper/attack_self(mob/user)
user << "<span class='warning'>You need to use it on a package that has already been wrapped!</span>"
@@ -9,10 +9,15 @@
throw_range = 7
flags = CONDUCT
slot_flags = SLOT_BELT
burn_state = 0 //Burnable
burntime = 5
var/active = 0
var/det_time = 50
var/display_timer = 1
/obj/item/weapon/grenade/burn()
prime()
/obj/item/weapon/grenade/proc/clown_check(var/mob/living/carbon/human/user)
if(user.disabilities & CLUMSY && prob(50))
user << "<span class='warning'>Huh? How does this thing work?</span>"
@@ -82,6 +82,10 @@
name = "microbomb implant"
desc = "And boom goes the weasel."
icon_state = "explosive"
var/weak = 1.6
var/medium = 0.8
var/heavy = 0.4
var/delay = 7
/obj/item/weapon/implant/explosive/get_data()
var/dat = {"<b>Implant Specifications:</b><BR>
@@ -103,33 +107,69 @@
if(!cause || !imp_in) return 0
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your microbomb implant? This will cause you to explode!", "Microbomb Implant Confirmation", "Yes", "No") != "Yes")
return 0
var/light = 1
var/medium = 0.5
var/heavy = 0.25
for(var/obj/item/weapon/implant/explosive/E in imp_in)
heavy += 0.25
medium += 0.5
light += 1
heavy += 0.4
medium += 0.8
weak += 1.6
delay += 7
if(E != src)
qdel(E)
heavy = round(heavy)
medium = round(medium)
light = round(light)
weak = round(weak)
imp_in << "<span_class='notice'>You activate your microbomb implant.</span>"
//If the delay is short, just blow up already jeez
if(delay <= 7)
imp_in.gib()
explosion(src,heavy,medium,weak,weak, flame_range = weak)
qdel(src)
imp_in.visible_message("<span class = 'warning'>[imp_in] starts beeping ominously!</span>")
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
if(imp_in.stat)
imp_in.visible_message("<span class = 'warning'>[imp_in] doubles over in pain!</span>")
imp_in.Weaken(7)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
imp_in.gib()
explosion(src,heavy,medium,light,light, flame_range = light)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
qdel(src)
/obj/item/weapon/implant/explosive/macro
name = "macrobomb implant"
desc = "And boom goes the weasel. And everything else nearby."
icon_state = "explosive"
weak = 16
medium = 8
heavy = 4
delay = 70
/obj/item/weapon/implant/explosive/macro/activate(var/cause)
if(!cause || !imp_in) return 0
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your macrobomb implant? This will cause you to explode and gib!", "Macrobomb Implant Confirmation", "Yes", "No") != "Yes")
return 0
for(var/obj/item/weapon/implant/explosive/macro/E in imp_in)
if(E != src)
qdel(E)
imp_in << "<span_class='notice'>You activate your macrobomb implant.</span>"
imp_in.visible_message("<span class = 'warning'>[imp_in] starts beeping ominously!</span>")
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
if(imp_in.stat)
imp_in.visible_message("<span class = 'warning'>[imp_in] doubles over in pain!</span>")
imp_in.Weaken(7)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
playsound(loc, 'sound/items/timer.ogg', 30, 0)
sleep(delay/4)
imp_in.gib()
explosion(src,5,10,20,20, flame_range = 20)
explosion(src,heavy,medium,weak,weak, flame_range = weak)
qdel(src)
/obj/item/weapon/implant/chem
+1
View File
@@ -11,6 +11,7 @@
throw_range = 7
w_class = 3.0
attack_verb = list("mopped", "bashed", "bludgeoned", "whacked")
burn_state = 0 //Burnable
var/mopping = 0
var/mopcount = 0
var/mopcap = 5
+2
View File
@@ -10,6 +10,8 @@
item_color = "FFFFFF"
item_state = "paintcan"
w_class = 3.0
burn_state = 0 //Burnable
burntime = 5
var/paintleft = 10
/obj/item/weapon/paint/red
@@ -9,6 +9,7 @@
throw_speed = 3
throw_range = 7
origin_tech = "bluespace=4"
burn_state = 0 //Burnable
/obj/item/weapon/teleportation_scroll/apprentice
name = "lesser scroll of teleportation"
+1
View File
@@ -5,6 +5,7 @@
force = 5
w_class = 4.0
attack_verb = list("bashed","smacked")
burn_state = 0 //Burnable
var/label = ""
var/last_wave = 0
@@ -18,6 +18,8 @@
slot_flags = SLOT_BACK //ERROOOOO
max_w_class = 3
max_combined_w_class = 21
burn_state = 0 //Burnable
burntime = 20
/obj/item/weapon/storage/backpack/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
playsound(src.loc, "rustle", 50, 1, -5)
@@ -34,6 +36,9 @@
icon_state = "holdingpack"
max_w_class = 5
max_combined_w_class = 35
burn_state = -1 // NotBurnable
var/pshoom = 'sound/items/PSHOOM.ogg'
var/alt_sound = 'sound/items/PSHOOM_2.ogg'
/obj/item/weapon/storage/backpack/holding/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is jumping into [src]! It looks like \he's trying to commit suicide.</span>")
@@ -50,6 +55,20 @@
return
return ..()
/obj/item/weapon/storage/backpack/holding/content_can_dump(atom/dest_object, mob/user)
if(Adjacent(user))
if(get_dist(user, dest_object) < 8)
if(dest_object.storage_contents_dump_act(src, user))
if(alt_sound && prob(1))
playsound(src, alt_sound, 40, 1)
else
playsound(src, pshoom, 40, 1)
user.Beam(dest_object,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5)
return 1
user << "The [src.name] buzzes."
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
return 0
/obj/item/weapon/storage/backpack/holding/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user)
if(istype(W, /obj/item/weapon/storage/backpack/holding) && !W.crit_fail)
var/safety = alert(user, "You feel this may not be the best idea.", "Put in [name]?", "Proceed", "Abort")
@@ -129,12 +148,14 @@
desc = "It's a special backpack made exclusively for Nanotrasen officers."
icon_state = "captainpack"
item_state = "captainpack"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/industrial
name = "industrial backpack"
desc = "It's a tough backpack for the daily grind of station life."
icon_state = "engiepack"
item_state = "engiepack"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/botany
name = "botany backpack"
@@ -159,6 +180,7 @@
desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma."
icon_state = "toxpack"
item_state = "toxpack"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/virology
name = "virology backpack"
@@ -175,6 +197,7 @@
name = "leather satchel"
desc = "It's a very fancy satchel made with fine leather."
icon_state = "satchel"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/satchel/withwallet/New()
..()
@@ -190,6 +213,7 @@
desc = "A tough satchel with extra pockets."
icon_state = "satchel-eng"
item_state = "engiepack"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/satchel_med
name = "medical satchel"
@@ -220,6 +244,7 @@
desc = "Useful for holding research materials."
icon_state = "satchel-tox"
item_state = "satchel-tox"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/satchel_hyd
name = "botanist satchel"
@@ -238,6 +263,7 @@
desc = "An exclusive satchel for Nanotrasen officers."
icon_state = "satchel-cap"
item_state = "captainpack"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/satchel_flat
name = "smuggler's satchel"
@@ -310,6 +336,7 @@
desc = "A large dufflebag for holding extra captainly goods."
icon_state = "duffle-captain"
item_state = "duffle-captain"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/dufflebag/med
name = "medical dufflebag"
@@ -328,6 +355,7 @@
desc = "A large dufflebag for holding extra tools and supplies."
icon_state = "duffle-eng"
item_state = "duffle-eng"
burn_state = -1 //Not Burnable
/obj/item/weapon/storage/backpack/dufflebag/clown
name = "clown's dufflebag"
@@ -103,6 +103,7 @@
max_w_class = 3
w_class = 1
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/weapon/grown)
burn_state = 0 //Burnable
////////
@@ -280,6 +281,7 @@
max_w_class = 3
w_class = 4 //Bigger than a book because physics
can_hold = list(/obj/item/weapon/book, /obj/item/weapon/storage/book, /obj/item/weapon/spellbook)
burn_state = 0 //Burnable
/*
* Trays - Agouri
@@ -349,3 +351,4 @@
w_class = 1
preposition = "in"
can_hold = list(/obj/item/weapon/reagent_containers/pill, /obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
burn_state = 0 //Burnable
@@ -6,6 +6,7 @@
throw_speed = 2
throw_range = 5
w_class = 3.0
burn_state = 0 //Burnable
var/title = "book"
/obj/item/weapon/storage/book/attack_self(mob/user)
user << "<span class='notice'>The pages of [title] have been cut out!</span>"
@@ -24,6 +24,7 @@
desc = "It's just an ordinary box."
icon_state = "box"
item_state = "syringe_kit"
burn_state = 0 //Burnable
var/foldable = /obj/item/stack/sheet/cardboard
@@ -11,6 +11,8 @@
max_w_class = 3
max_combined_w_class = 21
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
burn_state = 0 //Burnable
burntime = 20
/obj/item/weapon/storage/briefcase/New()
..()
@@ -17,6 +17,7 @@
icon = 'icons/obj/food/containers.dmi'
icon_state = "donutbox6"
name = "donut box"
burn_state = 0 //Burnable
var/icon_type = "donut"
var/spawn_type = null
@@ -4,6 +4,7 @@
storage_slots = 4
icon_state = "wallet"
w_class = 2
burn_state = 0 //Burnable
can_hold = list(
/obj/item/stack/spacecash,
/obj/item/weapon/card,
@@ -362,6 +362,8 @@
V.visible_message("<span class='danger'>[V] was frozen shut!</span>")
for(var/mob/living/L in T)
L.ExtinguishMob()
for(var/obj/item/Item in T)
Item.extinguish()
return
/datum/effect/effect/system/freezing_smoke_spread
@@ -242,6 +242,7 @@
w_class = 2
flags = NOSHIELD
attack_verb = list("bludgeoned", "whacked", "disciplined")
burn_state = 0 //Burnable
/obj/item/weapon/staff/broom
name = "broom"
+27 -1
View File
@@ -9,6 +9,10 @@
var/damtype = "brute"
var/force = 0
var/burn_state = -1 // -1=fireproof | 0=will burn in fires | 1=currently on fire
var/burntime = 10 //How long it takes to burn to ashes, in seconds
var/burn_world_time //What world time the object will burn up completely
/obj/Destroy()
if(!istype(src, /obj/machinery))
SSobj.processing.Remove(src) // TODO: Have a processing bitflag to reduce on unnecessary loops through the processing lists
@@ -155,4 +159,26 @@
/obj/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
var/turf/T = get_turf(src)
return T.storage_contents_dump_act(src_object, user)
return T.storage_contents_dump_act(src_object, user)
/obj/fire_act(var/global_overlay=1)
if(!burn_state)
burn_state = 1
SSobj.burning += src
burn_world_time = world.time + burntime*10
if(global_overlay)
overlays += fire_overlay
return 1
/obj/proc/burn()
for(var/obj/item/Item in contents) //Empty out the contents
Item.loc = src.loc
Item.fire_act() //Set them on fire, too
new /obj/effect/decal/cleanable/ash(src.loc)
qdel(src)
/obj/proc/extinguish()
if(burn_state == 1)
burn_state = 0
overlays -= fire_overlay
SSobj.burning -= src
+3
View File
@@ -9,6 +9,8 @@
icon = 'icons/obj/artstuff.dmi'
icon_state = "easel"
density = 1
burn_state = 0 //Burnable
burntime = 15
var/obj/item/weapon/canvas/painting = null
@@ -50,6 +52,7 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES]
desc = "draw out your soul on this canvas!"
icon = 'icons/obj/artstuff.dmi'
icon_state = "11x11"
burn_state = 0 //Burnable
var/whichGlobalBackup = 1 //List index
/obj/item/weapon/canvas/nineteenXnineteen
@@ -17,6 +17,7 @@ LINEN BINS
throw_range = 2
w_class = 1.0
item_color = "white"
burn_state = 0 //Burnable
/obj/item/weapon/bedsheet/attack(mob/living/M, mob/user)
@@ -170,6 +171,8 @@ LINEN BINS
icon = 'icons/obj/structures.dmi'
icon_state = "linenbin-full"
anchored = 1
burn_state = 0 //Burnable
burntime = 20
var/amount = 10
var/list/sheets = list()
var/obj/item/hidden = null
@@ -191,6 +194,16 @@ LINEN BINS
if(1 to 5) icon_state = "linenbin-half"
else icon_state = "linenbin-full"
/obj/structure/bedsheetbin/fire_act()
if(!amount)
return
..()
/obj/structure/bedsheetbin/burn()
amount = 0
extinguish()
update_icon()
return
/obj/structure/bedsheetbin/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/weapon/bedsheet))
+5
View File
@@ -1,3 +1,7 @@
/obj/structure/flora
burn_state = 0 //Burnable
burntime = 30
//trees
/obj/structure/flora/tree
name = "tree"
@@ -217,6 +221,7 @@
icon_state = "rock1"
icon = 'icons/obj/flora/rocks.dmi'
anchored = 1
burn_state = -1 //Not Burnable
/obj/structure/flora/rock/New()
..()
@@ -242,6 +242,8 @@
hardness = 1
openSound = 'sound/effects/doorcreaky.ogg'
closeSound = 'sound/effects/doorcreaky.ogg'
burn_state = 0 //Burnable
burntime = 30
/obj/structure/mineral_door/wood/Dismantle(devastated = 0)
if(!devastated)
@@ -13,6 +13,8 @@
icon_state = "bed"
can_buckle = 1
buckle_lying = 1
burn_state = 0 //Burnable
burntime = 30
/obj/structure/stool/bed/alien
name = "resting contraption"
@@ -59,6 +61,7 @@
icon = 'icons/obj/rollerbed.dmi'
icon_state = "down"
anchored = 0
burn_state = -1 //Not Burnable
/obj/structure/stool/bed/roller/post_buckle_mob(mob/living/M)
if(M == buckled_mob)
@@ -3,6 +3,7 @@
desc = "You sit in this. Either by will or force."
icon_state = "chair"
buckle_lying = 0 //you sit in a chair, not lay
burn_state = -1 //Not Burnable
/obj/structure/stool/bed/chair/New()
..()
@@ -73,6 +74,10 @@
// Chair types
/obj/structure/stool/bed/chair/wood
burn_state = 0 //Burnable
burntime = 20
/obj/structure/stool/bed/chair/wood/normal
icon_state = "wooden_chair"
name = "wooden chair"
@@ -96,6 +101,8 @@
desc = "It looks comfy."
icon_state = "comfychair"
color = rgb(255,255,255)
burn_state = 0 //Burnable
burntime = 30
var/image/armrest = null
/obj/structure/stool/bed/chair/comfy/New()
@@ -75,6 +75,7 @@
icon_state = "wood_frame"
framestack = /obj/item/stack/sheet/mineral/wood
framestackamount = 2
burn_state = 0 //Burnable
/obj/structure/table_frame/wood/attackby(var/obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/wrench))
@@ -432,6 +432,8 @@
frame = /obj/structure/table_frame/wood
framestack = /obj/item/stack/sheet/mineral/wood
buildstack = /obj/item/stack/sheet/mineral/wood
burn_state = 0 //Burnable
burntime = 20
/obj/structure/table/wood/poker //No specialties, Just a mapping object.
name = "gambling table"
+8 -1
View File
@@ -229,6 +229,7 @@
//Yes, showers are super powerful as far as washing goes.
/obj/machinery/shower/proc/wash(atom/movable/O)
if(!on) return
if(ismob(O))
mobpresent += 1
check_heat(O)
@@ -303,6 +304,13 @@
else
O.clean_blood()
else
O.clean_blood()
if(istype(O,/obj/item))
var/obj/item/Item = O
Item.extinguish()
if(isturf(loc))
var/turf/tile = loc
loc.clean_blood()
@@ -310,7 +318,6 @@
if(is_cleanable(E))
qdel(E)
/obj/machinery/shower/process()
if(!on || !mobpresent) return
for(var/mob/living/carbon/C in loc)
+40 -36
View File
@@ -1,38 +1,7 @@
/client/var/adminhelptimerid = 0
/proc/keywords_lookup(var/msg)
/client/proc/giveadminhelpverb()
src.verbs |= /client/verb/adminhelp
adminhelptimerid = 0
//This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE!
var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as")
/client/verb/adminhelp(msg as text)
set category = "Admin"
set name = "Adminhelp"
if(say_disabled) //This is here to try to identify lag problems
usr << "<span class='danger'>Speech is currently admin-disabled.</span>"
return
//handle muting and automuting
if(prefs.muted & MUTE_ADMINHELP)
src << "<span class='danger'>Error: Admin-PM: You cannot send adminhelps (Muted).</span>"
return
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
//clean the input msg
if(!msg) return
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
if(!msg) return
var/original_msg = msg
//remove out adminhelp verb temporarily to prevent spamming of admins.
src.verbs -= /client/verb/adminhelp
adminhelptimerid = addtimer(src,"giveadminhelpverb",1200) //2 minute cooldown of admin helps
//This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE!
var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as", "i")
//explode the input msg into a list
var/list/msglist = text2list(msg, " ")
@@ -83,15 +52,50 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
mobs_found += found
if(!ai_found && isAI(found))
ai_found = 1
msg += "<b><font color='black'>[original_word] (<A HREF='?_src_=holder;adminmoreinfo=\ref[found]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[found]'>FLW</A>)</font></b> "
msg += "[original_word]<font size='1' color='black'>(<A HREF='?_src_=holder;adminmoreinfo=\ref[found]'>?</A>|<A HREF='?_src_=holder;adminplayerobservefollow=\ref[found]'>F</A>)</font> "
continue
msg += "[original_word] "
return msg
/client/var/adminhelptimerid = 0
/client/proc/giveadminhelpverb()
src.verbs |= /client/verb/adminhelp
adminhelptimerid = 0
/client/verb/adminhelp(msg as text)
set category = "Admin"
set name = "Adminhelp"
if(say_disabled) //This is here to try to identify lag problems
usr << "<span class='danger'>Speech is currently admin-disabled.</span>"
return
//handle muting and automuting
if(prefs.muted & MUTE_ADMINHELP)
src << "<span class='danger'>Error: Admin-PM: You cannot send adminhelps (Muted).</span>"
return
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
//clean the input msg
if(!msg) return
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
if(!msg) return
var/original_msg = msg
//remove our adminhelp verb temporarily to prevent spamming of admins.
src.verbs -= /client/verb/adminhelp
adminhelptimerid = addtimer(src,"giveadminhelpverb",1200) //2 minute cooldown of admin helps
msg = keywords_lookup(msg)
if(!mob) return //this doesn't happen
var/ref_mob = "\ref[mob]"
var/ref_client = "\ref[src]"
msg = "<span class='adminnotice'><b><font color=red>HELP: </font>[key_name_admin(src)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=[ref_mob]'>FLW</A>) (<A HREF='?_src_=holder;traitor=[ref_mob]'>TP</A>)[ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""] (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>):</b> [msg]</span>"
msg = "<span class='adminnotice'><b><font color=red>HELP: </font><A HREF='?priv_msg=[ckey];ahelp_reply=1'>[key_name(src)]</A> (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=[ref_mob]'>FLW</A>) (<A HREF='?_src_=holder;traitor=[ref_mob]'>TP</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>):</b> [msg]</span>"
//send this msg to all admins
+25 -4
View File
@@ -32,6 +32,26 @@
cmd_admin_pm(targets[target],null)
feedback_add_details("admin_verb","APM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_ahelp_reply(whom)
if(prefs.muted & MUTE_ADMINHELP)
src << "<font color='red'>Error: Admin-PM: You are unable to use admin PM-s (muted).</font>"
return
var/client/C
if(istext(whom))
if(cmptext(copytext(whom,1,2),"@"))
whom = findStealthKey(whom)
C = directory[whom]
else if(istype(whom,/client))
C = whom
if(!C)
if(holder) src << "<font color='red'>Error: Admin-PM: Client not found.</font>"
return
message_admins("[key_name_admin(src)] has started replying to [key_name(C, 0, 0)]'s admin help.")
var/msg = input(src,"Message:", "Private message to [key_name(C, 0, 0)]") as text|null
if (!msg)
message_admins("[key_name_admin(src)] has cancelled their reply to [key_name(C, 0, 0)]'s admin help.")
return
cmd_admin_pm(whom, msg)
//takes input from cmd_admin_pm_context, cmd_admin_pm_panel or /client/Topic and sends them a PM.
//Fetching a message if needed. src is the sender and C is the target client
@@ -71,14 +91,15 @@
if(!msg) return
msg = emoji_parse(msg)
var/keywordparsedmsg = keywords_lookup(msg)
if(C.holder)
if(holder) //both are admins
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [msg]</font>"
C << "<font color='red'>Admin PM from-<b>[key_name(src, C, 1)]</b>: [keywordparsedmsg]</font>"
src << "<font color='blue'>Admin PM to-<b>[key_name(C, src, 1)]</b>: [keywordparsedmsg]</font>"
else //recipient is an admin but sender is not
C << "<font color='red'>Reply PM from-<b>[key_name(src, C, 1)]</b>: [msg]</font>"
C << "<font color='red'>Reply PM from-<b>[key_name(src, C, 1)]</b>: [keywordparsedmsg]</font>"
src << "<font color='blue'>PM to-<b>Admins</b>: [msg]</font>"
//play the recieving admin the adminhelp sound (if they have them enabled)
@@ -117,4 +138,4 @@
//we don't use message_admins here because the sender/receiver might get it too
for(var/client/X in admins)
if(X.key!=key && X.key!=C.key) //check client/X is an admin and isn't the sender or recipient
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;[key_name(C, X, 0)]:</B> \blue [msg]</font>" //inform X
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]-&gt;[key_name(C, X, 0)]:</B> \blue [keywordparsedmsg]</font>" //inform X
+1 -1
View File
@@ -8,7 +8,7 @@
if(!msg) return
log_admin("[key_name(src)] : [msg]")
msg = keywords_lookup(msg)
if(check_rights(R_ADMIN,0))
msg = "<span class='admin'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, 1)]</EM> (<a href='?_src_=holder;adminplayerobservefollow=\ref[mob]'>FLW</A>): <span class='message'>[msg]</span></span>"
admins << msg
+3
View File
@@ -31,6 +31,9 @@
//Admin PM
if(href_list["priv_msg"])
if (href_list["ahelp_reply"])
cmd_ahelp_reply(href_list["priv_msg"])
return
cmd_admin_pm(href_list["priv_msg"],null)
return
+6 -2
View File
@@ -1,5 +1,6 @@
/obj/item/clothing
name = "clothing"
burn_state = 0 //Burnable
var/flash_protect = 0 //Malk: What level of bright light protection item has. 1 = Flashers, Flashes, & Flashbangs | 2 = Welding | -1 = OH GOD WELDING BURNT OUT MY RETINAS
var/tint = 0 //Malk: Sets the item's level of visual impairment tint, normally set to the same as flash_protect
var/up = 0 // but seperated to allow items to protect but not impair vision, like space helmets
@@ -23,6 +24,7 @@
w_class = 1.0
throwforce = 0
slot_flags = SLOT_EARS
burn_state = -1 //Not Burnable
/obj/item/clothing/ears/earmuffs
name = "earmuffs"
@@ -32,7 +34,7 @@
flags = EARBANGPROTECT
strip_delay = 15
put_on_delay = 25
burn_state = 0 //Burnable
//Glasses
/obj/item/clothing/glasses
@@ -48,7 +50,7 @@
var/list/icon/current = list() //the current hud icons
strip_delay = 20
put_on_delay = 25
burn_state = -1 //Not Burnable
/*
SEE_SELF // can see self, no matter what
SEE_MOBS // can see all mobs, no matter what
@@ -180,6 +182,7 @@ BLIND // can't see anything
strip_delay = 50
put_on_delay = 50
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
burn_state = -1 //Not Burnable
/obj/item/clothing/suit/space
name = "space suit"
@@ -201,6 +204,7 @@ BLIND // can't see anything
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
strip_delay = 80
put_on_delay = 80
burn_state = -1 //Not Burnable
//Under clothing
/obj/item/clothing/under
+4 -1
View File
@@ -6,6 +6,7 @@
siemens_coefficient = 0
permeability_coefficient = 0.05
item_color="yellow"
burn_state = -1 //Won't burn in fires
/obj/item/clothing/gloves/color/yellow/fake
desc = "These gloves will protect the wearer from electric shock. They don't feel like rubber..."
@@ -19,6 +20,7 @@
siemens_coefficient = 1 //Set to a default of 1, gets overridden in New()
permeability_coefficient = 0.05
item_color="yellow"
burn_state = -1 //Won't burn in fires
/obj/item/clothing/gloves/color/fyellow/New()
siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5)
@@ -33,7 +35,7 @@
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
burn_state = -1 //Won't burn in fires
/obj/item/clothing/gloves/color/black/hos
item_color = "hosred" //Exists for washing machines. Is not different from black gloves in any way.
@@ -148,6 +150,7 @@
permeability_coefficient = 0.01
item_color="white"
transfer_prints = TRUE
burn_state = -1 //Won't burn in fires
/obj/item/clothing/gloves/color/latex/nitrile
name = "nitrile gloves"
@@ -21,6 +21,7 @@
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
burn_state = -1 //Not Burnable
/obj/item/clothing/gloves/combat
name = "combat gloves"
@@ -33,4 +34,5 @@
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
burn_state = -1 //Won't burn in fires
+4 -1
View File
@@ -58,6 +58,7 @@
desc = "A collectable welding helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this helmet is done so at the owner's own risk!"
icon_state = "welding"
item_state = "welding"
burn_state = -1 //Won't burn in fires
/obj/item/clothing/head/collectable/slime
name = "collectable slime hat"
@@ -110,9 +111,11 @@
desc = "Go Red! I mean Green! I mean Red! No Green!"
icon_state = "thunderdome"
item_state = "thunderdome"
burn_state = -1 //Won't burn in fires
/obj/item/clothing/head/collectable/swat
name = "collectable SWAT helmet"
desc = "That's not real blood. That's red paint." //Reference to the actual description
icon_state = "swat"
item_state = "swat"
item_state = "swat"
burn_state = -1 //Won't burn in fires
+1
View File
@@ -9,6 +9,7 @@
armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
flags_inv = 0
action_button_name = "Toggle Helmet Light"
burn_state = -1 //Won't burn in fires
attack_self(mob/user)
if(!isturf(user.loc))
+1
View File
@@ -11,6 +11,7 @@
heat_protection = HEAD
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
strip_delay = 60
burn_state = -1 //Won't burn in fires
var/obj/machinery/camera/portable/helmetCam = null
var/spawnWithHelmetCam = 0
var/canAttachCam = 0
+1 -7
View File
@@ -57,13 +57,6 @@
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
/obj/item/clothing/head/that
name = "sturdy top-hat"
desc = "It's an amish looking armored top hat."
icon_state = "tophat"
item_state = "that"
flags_inv = 0
/obj/item/clothing/head/cardborg
name = "cardborg helmet"
desc = "A helmet made out of a box."
@@ -215,6 +208,7 @@
throw_range = 5
w_class = 2.0
attack_verb = list("warned", "cautioned", "smashed")
burn_state = -1 //Won't burn in fires
/obj/item/clothing/head/santa
name = "santa hat"
@@ -27,6 +27,7 @@
action_button_name = "Toggle Welding Helmet"
visor_flags = HEADCOVERSEYES | HEADCOVERSMOUTH
visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
burn_state = -1 //Won't burn in fires
/obj/item/clothing/head/welding/attack_self()
toggle()
+1
View File
@@ -12,6 +12,7 @@
action_button_name = "Adjust Breath Mask"
ignore_maskadjust = 0
flags_cover = MASKCOVERSMOUTH
burn_state = -1 //Won't burn in fires
/obj/item/clothing/mask/breath/attack_self(var/mob/user)
adjustmask(user)
+9 -1
View File
@@ -9,6 +9,7 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
burn_state = -1 //Won't burn in fires
// **** Welding gas mask ****
@@ -228,6 +229,7 @@
icon_state = "clown"
item_state = "clown_hat"
flags_cover = MASKCOVERSEYES
burn_state = 0 //Burnable
/obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user)
@@ -252,6 +254,7 @@
icon_state = "sexyclown"
item_state = "sexyclown"
flags_cover = MASKCOVERSEYES
burn_state = 0 //Burnable
/obj/item/clothing/mask/gas/mime
name = "mime mask"
@@ -260,6 +263,7 @@
icon_state = "mime"
item_state = "mime"
flags_cover = MASKCOVERSEYES
burn_state = 0 //Burnable
/obj/item/clothing/mask/gas/monkeymask
name = "monkey mask"
@@ -268,6 +272,7 @@
icon_state = "monkeymask"
item_state = "monkeymask"
flags_cover = MASKCOVERSEYES
burn_state = 0 //Burnable
/obj/item/clothing/mask/gas/sexymime
name = "sexy mime mask"
@@ -276,6 +281,7 @@
icon_state = "sexymime"
item_state = "sexymime"
flags_cover = MASKCOVERSEYES
burn_state = 0 //Burnable
/obj/item/clothing/mask/gas/death_commando
name = "Death Commando Mask"
@@ -286,10 +292,12 @@
name = "cyborg visor"
desc = "Beep boop."
icon_state = "death"
burn_state = 0 //Burnable
/obj/item/clothing/mask/gas/owl_mask
name = "owl mask"
desc = "Twoooo!"
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
icon_state = "owl"
flags_cover = MASKCOVERSEYES
flags_cover = MASKCOVERSEYES
burn_state = 0 //Burnable
+1 -1
View File
@@ -8,7 +8,7 @@
action_button_name = "Toggle Magboots"
strip_delay = 70
put_on_delay = 70
burn_state = -1 //Won't burn in fires
/obj/item/clothing/shoes/magboots/verb/toggle()
set name = "Toggle Magboots"
@@ -15,6 +15,7 @@
permeability_coefficient = 0.05
flags = NOSLIP
origin_tech = "syndicate=3"
burn_state = -1 //Won't burn in fires
/obj/item/clothing/shoes/sneakers/mime
name = "mime shoes"
@@ -35,6 +36,7 @@
permeability_coefficient = 0.01
flags = NOSLIP
armor = list(melee = 40, bullet = 30, laser = 25, energy = 25, bomb = 50, bio = 30, rad = 30)
burn_state = -1 //Won't burn in fires
/obj/item/clothing/shoes/sandal
desc = "A pair of rather plain, wooden sandals."
@@ -58,6 +60,7 @@
slowdown = SHOES_SLOWDOWN+1
strip_delay = 50
put_on_delay = 50
burn_state = -1 //Won't burn in fires
/obj/item/clothing/shoes/clown_shoes
desc = "The prankster's standard-issue clowning shoes. Damn, they're huge!"
+3 -1
View File
@@ -7,6 +7,7 @@
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
strip_delay = 60
put_on_delay = 40
burn_state = -1 //Won't burn in fires
/obj/item/clothing/suit/armor/vest
name = "armor"
@@ -45,6 +46,7 @@
cold_protection = CHEST|GROIN|ARMS|HANDS
heat_protection = CHEST|GROIN|ARMS|HANDS
strip_delay = 70
burn_state = 0 //Burnable
/obj/item/clothing/suit/armor/vest/warden/alt
name = "warden's armored jacket"
@@ -112,7 +114,7 @@
desc = "An armored vest with a detective's badge on it."
icon_state = "detective-armor"
allowed = list(/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
burn_state = 0 //Burnable
//Reactive armor
+2
View File
@@ -8,6 +8,7 @@
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
unacidable = 1
burn_state = -1 //Not Burnable
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/suit/bio_suit
@@ -27,6 +28,7 @@
strip_delay = 70
put_on_delay = 70
unacidable = 1
burn_state = -1 //Not Burnable
//Standard biosuit, orange stripe
/obj/item/clothing/head/bio_hood/general
+1
View File
@@ -100,6 +100,7 @@
item_state = "hazard"
blood_overlay_type = "armor"
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/device/t_scanner,)
burn_state = -1 //Won't burn in fires
//Lawyer
/obj/item/clothing/suit/toggle/lawyer
+5 -2
View File
@@ -16,6 +16,7 @@
blood_overlay_type = "armor"
body_parts_covered = CHEST
allowed = list (/obj/item/weapon/gun/energy/laser/bluetag)
burn_state = -1 //Won't burn in fires
/obj/item/clothing/suit/redtag
name = "red laser tag armor"
@@ -25,6 +26,7 @@
blood_overlay_type = "armor"
body_parts_covered = CHEST
allowed = list (/obj/item/weapon/gun/energy/laser/redtag)
burn_state = -1 //Won't burn in fires
/*
* Costume
@@ -88,7 +90,7 @@
w_class = 3
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/toy)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
burn_state = -1 //Won't burn in fires
/obj/item/clothing/suit/hastur
name = "\improper Hastur's robe"
@@ -236,7 +238,8 @@
desc = "Pompadour not included."
icon_state = "leatherjacket"
item_state = "hostrench"
burn_state = -1 //Not Burnable
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
/obj/item/clothing/suit/jacket/leather/overcoat
name = "leather overcoat"
+5 -3
View File
@@ -28,6 +28,7 @@
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
strip_delay = 60
put_on_delay = 60
burn_state = -1 //Not Burnable
/obj/item/clothing/suit/fire/firefighter
icon_state = "firesuit"
@@ -65,7 +66,7 @@
strip_delay = 70
put_on_delay = 70
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
burn_state = -1 //Not Burnable
/obj/item/clothing/suit/bomb_suit
name = "bomb suit"
@@ -86,7 +87,7 @@
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
strip_delay = 70
put_on_delay = 70
burn_state = -1 //Not Burnable
/obj/item/clothing/head/bomb_hood/security
@@ -111,7 +112,7 @@
strip_delay = 60
put_on_delay = 60
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
burn_state = -1 //Not Burnable
/obj/item/clothing/suit/radiation
name = "radiation suit"
@@ -129,3 +130,4 @@
strip_delay = 60
put_on_delay = 60
flags_inv = HIDEJUMPSUIT
burn_state = -1 //Not Burnable
+5 -1
View File
@@ -8,6 +8,7 @@
strip_delay = 50
put_on_delay = 50
unacidable = 1
burn_state = -1 //Won't burn in fires
/obj/item/clothing/head/wizard/red
name = "red wizard hat"
@@ -63,7 +64,7 @@
strip_delay = 50
put_on_delay = 50
unacidable = 1
burn_state = -1 //Won't burn in fires
/obj/item/clothing/suit/wizrobe/red
name = "red wizard robe"
@@ -117,6 +118,7 @@
permeability_coefficient = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
burn_state = 0 //Burnable
/obj/item/clothing/head/wizard/marisa/fake
name = "witch hat"
@@ -126,6 +128,7 @@
permeability_coefficient = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
burn_state = 0 //Burnable
/obj/item/clothing/suit/wizrobe/marisa/fake
name = "witch robe"
@@ -136,3 +139,4 @@
permeability_coefficient = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
burn_state = 0 //Burnable
+1
View File
@@ -9,6 +9,7 @@
origin_tech = "syndicate=3"
var/list/clothing_choices = list()
var/malfunctioning = 0
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/chameleon/New()
..()
+1
View File
@@ -16,6 +16,7 @@
icon_state = "black"
item_state = "bl_suit"
item_color = "black"
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/color/grey
name = "grey jumpsuit"
@@ -6,6 +6,7 @@
item_state = "gy_suit"
item_color = "chief"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/rank/atmospheric_technician
desc = "It's a jumpsuit worn by atmospheric technicians."
@@ -13,6 +14,7 @@
icon_state = "atmos"
item_state = "atmos_suit"
item_color = "atmos"
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/rank/engineer
desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding."
@@ -37,6 +37,7 @@
item_state = "armor"
can_adjust = 0
strip_delay = 100
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/waiter
name = "waiter's outfit"
@@ -115,6 +116,7 @@
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
can_adjust = 0
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/acj
name = "administrative cybernetic jumpsuit"
@@ -131,6 +133,7 @@
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
can_adjust = 0
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/owl
name = "owl uniform"
@@ -338,6 +341,7 @@
body_parts_covered = CHEST|GROIN|ARMS
fitted = NO_FEMALE_UNIFORM
can_adjust = 0
burn_state = -1 //Won't burn in fires
/obj/item/clothing/under/sundress
name = "sundress"
+1
View File
@@ -84,6 +84,7 @@
desc = "A bronze medal."
icon_state = "bronze"
item_color = "bronze"
burn_state = -1 //Won't burn in fires
//Pinning medals on people
/obj/item/clothing/tie/medal/attack(mob/living/carbon/human/M, mob/living/user)
@@ -10,6 +10,7 @@
var/gulp_size = 5 //This is now officially broken ... need to think of a nice way to fix it.
possible_transfer_amounts = list(5,10,25)
volume = 50
burn_state = -1
/obj/item/weapon/reagent_containers/food/drinks/New()
..()
@@ -6,6 +6,20 @@
icon_state = "glass_empty"
amount_per_transfer_from_this = 10
volume = 50
burn_state = 0 //Burnable
burntime = 5
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fire_act()
if(!reagents.total_volume)
return
..()
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/burn()
reagents.total_volume = 0 //Burns away all the alcohol :(
reagents.reagent_list.Cut()
on_reagent_change()
extinguish()
return
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/on_reagent_change()
overlays.Cut()
+1
View File
@@ -4,6 +4,7 @@
/obj/item/weapon/reagent_containers/food
possible_transfer_amounts = null
volume = 50 //Sets the default container amount for all food items.
burn_state = 0 //Burnable
/obj/item/weapon/reagent_containers/food/New()
..()
+1
View File
@@ -20,6 +20,7 @@
icon = 'icons/obj/hydroponics/harvest.dmi'
potency = -1
dried_type = -1 //bit different. saves us from having to define each stupid grown's dried_type as itself. If you don't want a plant to be driable (watermelons) set this to null in the time definition.
burn_state = 0 //Burnable
/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc, new_potency = 50)
..()
@@ -5,6 +5,7 @@
/obj/item/weapon/grown // Grown weapons
name = "grown_weapon"
icon = 'icons/obj/hydroponics/harvest.dmi'
burn_state = 0 //Burnable
var/seed = null
var/plantname = ""
var/product //a type path
+1
View File
@@ -7,6 +7,7 @@
icon = 'icons/obj/hydroponics/seeds.dmi'
icon_state = "seed" //Unknown plant seed - these shouldn't exist in-game.
w_class = 1 //Pocketable.
burn_state = 0 //Burnable
var/plantname = "Plants" //Name of plant when planted.
var/product //A type path. The thing that is created when the plant is harvested.
var/species = "" //Used to update icons. Should match the name in the sprites.
+3
View File
@@ -17,6 +17,8 @@
anchored = 0
density = 1
opacity = 0
burn_state = 0 //Burnable
burntime = 30
var/state = 0
var/list/allowed_books = list(/obj/item/weapon/book, /obj/item/weapon/spellbook, /obj/item/weapon/storage/book) //Things allowed in the bookcase
@@ -165,6 +167,7 @@
throw_range = 5
w_class = 3 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever)
attack_verb = list("bashed", "whacked", "educated")
burn_state = 0 //Burnable
var/dat //Actual page content
var/due_date = 0 //Game time in 1/10th seconds
var/author //Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
+2
View File
@@ -8,6 +8,8 @@
force = 10.0
throwforce = 0
w_class = 4.0
burn_state = 0 //Burnable
burntime = 20
/obj/item/weapon/moneybag/attack_hand(user as mob)
var/amt_gold = 0
@@ -116,17 +116,17 @@
gib()
return
else
shred_clothing(1,150)
var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src)))
throw_at(target, 200, 4)
//return
// var/atom/target = get_edge_target_turf(user, get_dir(src, get_step_away(user, src)))
//user.throw_at(target, 200, 4)
if (2.0)
b_loss += 60
f_loss += 60
shred_clothing(1,50)
if (prob(getarmor(null, "bomb")))
b_loss = b_loss/1.5
f_loss = f_loss/1.5
@@ -140,6 +140,8 @@
b_loss += 30
if (prob(getarmor(null, "bomb")))
b_loss = b_loss/2
else
shred_clothing(1,10)
if (!istype(ears, /obj/item/clothing/ears/earmuffs))
adjustEarDamage(15,60)
if (prob(50))
@@ -10,9 +10,10 @@
total_brute += O.brute_dam
total_burn += O.burn_dam
health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute
//TODO: fix husking
if( ((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD )
ChangeToHusk()
if(bodytemperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST)
shred_clothing()
med_hud_set_health()
med_hud_set_status()
return
@@ -390,3 +390,83 @@
src << "<span class='danger'>You are trying to equip this item to an unsupported inventory slot. Report this to a coder!</span>"
return
//Cycles through all clothing slots and tests them for destruction
/mob/living/carbon/human/proc/shred_clothing(var/bomb,var/shock)
var/covered_parts //The body parts that are protected by exterior clothing/armor
var/head_absorbed = 0 //How much of the shock the headgear absorbs when it is shredded. -1=it survives
var/suit_absorbed = 0 //How much of the shock the exosuit absorbs when it is shredded. -1=it survives
//Backpacks can never be protected but are annoying as fuck to lose, so they get a lower chance to be shredded
if(back)
back.shred(bomb,shock-30,src)
if(head)
covered_parts |= head.flags_inv
head_absorbed = head.shred(bomb,shock,src)
if(wear_mask)
var/absorbed = ((covered_parts & HIDEMASK) ? head_absorbed : 0) //Check if clothing covering this part absorbed any of the shock
if(!(absorbed < 0))
//Masks can be used to shield other parts, but are simplified to simply add their absorbsion to the head armor if it covers the face
var/mask_absorbed = wear_mask.shred(bomb,shock-absorbed,src)
if(wear_mask.flags_inv & HIDEFACE)
covered_parts |= wear_mask.flags_inv
if(mask_absorbed < 0) //If the mask didn't get shredded, everything else on the head is protected
head_absorbed = -1
else
head_absorbed += mask_absorbed
if(ears)
var/absorbed = ((covered_parts & HIDEEARS) ? head_absorbed : 0)
if(!(absorbed < 0))
ears.shred(bomb,shock-absorbed,src)
if(glasses)
var/absorbed = ((covered_parts & HIDEEYES) ? head_absorbed : 0)
if(!(absorbed < 0))
glasses.shred(bomb,shock-absorbed,src)
if(wear_suit)
covered_parts |= wear_suit.flags_inv
suit_absorbed = wear_suit.shred(bomb,shock,src)
if(gloves)
var/absorbed = ((covered_parts & HIDEGLOVES) ? suit_absorbed : 0)
if(!(absorbed < 0))
gloves.shred(bomb,shock-absorbed,src)
if(shoes)
var/absorbed = ((covered_parts & HIDESHOES) ? suit_absorbed : 0)
if(!(absorbed < 0))
shoes.shred(bomb,shock-absorbed,src)
if(w_uniform)
var/absorbed = ((covered_parts & HIDEJUMPSUIT) ? suit_absorbed : 0)
if(!(absorbed < 0))
w_uniform.shred(bomb,shock-absorbed,src)
/obj/item/proc/shred(var/bomb,var/shock,var/mob/living/carbon/human/Human)
var/shredded
if(!bomb)
if(burn_state != -1)
shredded = 1 //No heat protection, it burns
else
shredded = -1 //Heat protection = Fireproof
else if(shock > 0)
if(prob(min(90,max(10,shock))))
shredded = armor["bomb"] + 10 //It gets shredded, but it also absorbs the shock the clothes underneath would recieve by this amount
else
shredded = -1 //It survives explosion
if(shredded > 0)
if(Human) //Unequip if equipped
Human.unEquip(src)
if(bomb)
for(var/obj/item/Item in contents) //Empty out the contents
Item.loc = src.loc
spawn(1) //so the shreds aren't instantly deleted by the explosion
var/obj/effect/decal/cleanable/shreds/Shreds = new(loc)
Shreds.name = "shredded [src.name]"
Shreds.desc = "The sad remains of what used to be a glorious [src.name]."
qdel(src)
else
burn()
return shredded
+1 -1
View File
@@ -10,7 +10,7 @@
var/obj/item/weapon/pen/haspen //The stored pen.
var/obj/item/weapon/paper/toppaper //The topmost piece of paper.
slot_flags = SLOT_BELT
burn_state = 0 //Burnable
/obj/item/weapon/clipboard/New()
update_icon()
+1
View File
@@ -5,6 +5,7 @@
icon_state = "folder"
w_class = 2
pressure_resistance = 2
burn_state = 0 //Burnable
/obj/item/weapon/folder/blue
desc = "A blue folder."
+13 -24
View File
@@ -18,6 +18,8 @@
pressure_resistance = 0
slot_flags = SLOT_HEAD
body_parts_covered = HEAD
burn_state = 0 //Burnable
burntime = 5
var/info //What's actually written on the paper.
var/info_links //A different version of the paper which includes html links at fields and EOF
@@ -26,7 +28,6 @@
var/list/stamped
var/rigged = 0
var/spam_flag = 0
var/burning = 0 //Whether or not the paper is on fire
/obj/item/weapon/paper/New()
@@ -39,6 +40,9 @@
/obj/item/weapon/paper/update_icon()
if(burn_state == 1)
icon_state = "paper_onfire"
return
if(info)
icon_state = "paper_words"
return
@@ -89,15 +93,6 @@
spam_flag = 0
/obj/item/weapon/paper/attack_hand()
var/mob/living/carbon/M = usr
if(burning)
M << "<span class='danger'>Picking up a burning paper seems awfully stupid.</span>"
return //Doesn't make any sense to pick up a burning paper
else //Probably isn't necessary but it's safer
..()
/obj/item/weapon/paper/attack_ai(mob/living/silicon/ai/user)
var/dist
if(istype(user) && user.current) //is AI
@@ -278,7 +273,7 @@
/obj/item/weapon/paper/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params)
..()
if(burning)
if(burn_state == 1)
return
if(is_blind(user))
@@ -325,27 +320,21 @@
user.unEquip(src)
user.visible_message("<span class='danger'>[user] lights [src] ablaze with [P]!</span>", "<span class='danger'>You light [src] on fire!</span>")
burn(0, 100)
fire_act()
add_fingerprint(user)
/obj/item/weapon/paper/fire_act()
burn(1, 50)
/obj/item/weapon/paper/proc/burn(var/showmsg, var/burntime)
if (burning)
return
if(showmsg)
src.visible_message("<span class='warning'>[src] catches on fire.</span>")
burning = 1
..(0)
icon_state = "paper_onfire"
info = "[stars(info)]"
spawn(burntime) //7 seconds
src.visible_message("<span class='warning'>[src] burns away, leaving behind a pile of ashes.</span>")
new /obj/effect/decal/cleanable/ash(src.loc)
qdel(src)
/obj/item/weapon/paper/extinguish()
..()
update_icon()
/*
* Premade paper
+11
View File
@@ -8,9 +8,20 @@
throw_speed = 3
throw_range = 7
pressure_resistance = 8
burn_state = 0 //Burnable
var/amount = 30 //How much paper is in the bin.
var/list/papers = new/list() //List of papers put in the bin for reference.
/obj/item/weapon/paper_bin/fire_act()
if(!amount)
return
..()
/obj/item/weapon/paper_bin/burn()
amount = 0
extinguish()
update_icon()
return
/obj/item/weapon/paper_bin/MouseDrop(atom/over_object)
var/mob/M = usr
+4 -2
View File
@@ -17,7 +17,7 @@
icon_state = "film"
item_state = "electropack"
w_class = 1.0
burn_state = 0 //Burnable
/*
* Photo
@@ -28,6 +28,8 @@
icon_state = "photo"
item_state = "paper"
w_class = 1.0
burn_state = 0 //Burnable
burntime = 5
var/icon/img //Big photo image
var/scribble //Scribble on the back.
var/blueprints = 0 //Does it include the blueprints?
@@ -92,7 +94,7 @@
icon_state = "album"
item_state = "briefcase"
can_hold = list(/obj/item/weapon/photo)
burn_state = 0 //Burnable
/*
* Camera
@@ -144,6 +144,11 @@
/datum/reagent/water/reaction_obj(var/obj/O, var/volume)
src = null
if(istype(O,/obj/item))
var/obj/item/Item = O
Item.extinguish()
// Monkey cube
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube))
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
@@ -151,7 +156,7 @@
cube.Expand()
// Dehydrated carp
if(istype(O,/obj/item/toy/carpplushie/dehy_carp))
else if(istype(O,/obj/item/toy/carpplushie/dehy_carp))
var/obj/item/toy/carpplushie/dehy_carp/dehy = O
dehy.Swell() // Makes a carp
@@ -117,6 +117,7 @@
flags = NOBLUDGEON
amount = 25
max_amount = 25
burn_state = 0 //burnable
/obj/item/stack/packageWrap/afterattack(var/obj/target as obj, mob/user as mob, proximity)
+10
View File
@@ -42,6 +42,16 @@
pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/PSHOOM.ogg'
alt_sound = 'sound/items/PSHOOM_2.ogg'
/obj/item/weapon/storage/part_replacer/bluespace/content_can_dump(atom/dest_object, mob/user)
if(Adjacent(user))
if(get_dist(user, dest_object) < 8)
if(dest_object.storage_contents_dump_act(src, user))
play_rped_sound()
user.Beam(dest_object,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5)
return 1
user << "The [src.name] buzzes."
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
return 0
/obj/item/weapon/storage/part_replacer/proc/play_rped_sound()
//Plays the sound for RPED exhanging or installing parts.
+2 -1
View File
@@ -1,7 +1,8 @@
/obj/machinery/computer/telescience
name = "\improper Telepad Control Console"
desc = "Used to teleport objects to and from the telescience telepad."
icon_state = "teleport"
icon_screen = "teleport"
icon_keyboard = "teleport_key"
circuit = /obj/item/weapon/circuitboard/telesci_console
var/sending = 1
var/obj/machinery/telepad/telepad = null
+26
View File
@@ -55,6 +55,32 @@
-->
<div class="commit sansserif">
<h2 class="date">27 June 2015</h2>
<h3 class="author">Ikarrus updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Some objects can be burned now.</li>
<li class="rscadd">Bombs will shred your clothes, with respect to their layering and armor values. Exterior clothing will shield clothing underneath. Storage items will drop their contents when bombed this way.</li>
</ul>
<h3 class="author">Laharl Montogmmery updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Click and drag from a bag/stachel/Storage Object to dump his contents on a tile near you. You can do so into another storage item, a bin, or the ground/table if there's nothing else.</li>
<li class="rscadd">Storage Content Transfer : Bluespace Boogaloo! You can now transfer the content of the BoH/BRPED into tiles/bins/bags out of your reach. Range is 7 tiles.</li>
</ul>
<h3 class="author">MrStonedOne updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Admins will now receive a notification when one of them starts to reply to an adminhelp to cut down on multiple responses to adminhelps and let admins know when an adminhelp isn't getting replied to.</li>
<li class="rscadd">The keyword finder in admin helps (adds a (?) link next to player names in the text of adminhelps) has been added for all player to admin pms, as well as admin say.</li>
</ul>
<h3 class="author">NullQuery updated:</h3>
<ul class="changes bgimages16">
<li class="wip">Introduces html_interface, a module to streamline the management of browser windows.</li>
<li class="rscadd">Adds playing cards that utilize a new HTML window management system.</li>
</ul>
<h3 class="author">Vekter updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added a new military jacket to the Autodrobe and ClothesMate.</li>
</ul>
<h2 class="date">26 June 2015</h2>
<h3 class="author">Ikarrus updated:</h3>
<ul class="changes bgimages16">
+26
View File
@@ -2981,3 +2981,29 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
pudl:
- rscadd: You can now play games of mastermind to unlock abandoned crates found
throughout space.
2015-06-27:
Ikarrus:
- rscadd: Some objects can be burned now.
- rscadd: Bombs will shred your clothes, with respect to their layering and armor
values. Exterior clothing will shield clothing underneath. Storage items will
drop their contents when bombed this way.
Laharl Montogmmery:
- rscadd: Click and drag from a bag/stachel/Storage Object to dump his contents
on a tile near you. You can do so into another storage item, a bin, or the ground/table
if there's nothing else.
- rscadd: 'Storage Content Transfer : Bluespace Boogaloo! You can now transfer the
content of the BoH/BRPED into tiles/bins/bags out of your reach. Range is 7
tiles.'
MrStonedOne:
- tweak: Admins will now receive a notification when one of them starts to reply
to an adminhelp to cut down on multiple responses to adminhelps and let admins
know when an adminhelp isn't getting replied to.
- rscadd: The keyword finder in admin helps (adds a (?) link next to player names
in the text of adminhelps) has been added for all player to admin pms, as well
as admin say.
NullQuery:
- wip: Introduces html_interface, a module to streamline the management of browser
windows.
- rscadd: Adds playing cards that utilize a new HTML window management system.
Vekter:
- rscadd: Added a new military jacket to the Autodrobe and ClothesMate.
@@ -1,6 +0,0 @@
author: NullQuery
delete-after: True
changes:
- wip: "Introduces html_interface, a module to streamline the management of browser windows."
- rscadd: "Adds playing cards that utilize a new HTML window management system."
-36
View File
@@ -1,36 +0,0 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# spellcheck (typo fixes)
# experiment
# tgs (TG-ported fixes?)
#################################
# Your name.
author: Vekter
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Added a new military jacket to the Autodrobe and ClothesMate."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 KiB

After

Width:  |  Height:  |  Size: 288 KiB