Merge remote-tracking branch 'upstream/master' into dev

Conflicts:
	code/__HELPERS/text.dm
	code/game/machinery/podmen.dm
	code/game/machinery/vending.dm
	code/game/objects/items/candle.dm
	code/game/objects/items/devices/PDA/cart.dm
	code/modules/clothing/suits/jobs.dm
This commit is contained in:
Mloc-Argent
2014-09-10 22:14:37 +01:00
48 changed files with 5832 additions and 5753 deletions

View File

@@ -476,7 +476,6 @@
#include "code\game\objects\items\apc_frame.dm"
#include "code\game\objects\items\blueprints.dm"
#include "code\game\objects\items\bodybag.dm"
#include "code\game\objects\items\candle.dm"
#include "code\game\objects\items\contraband.dm"
#include "code\game\objects\items\crayons.dm"
#include "code\game\objects\items\latexballoon.dm"
@@ -531,6 +530,7 @@
#include "code\game\objects\items\stacks\tiles\plasteel.dm"
#include "code\game\objects\items\stacks\tiles\tile_types.dm"
#include "code\game\objects\items\weapons\AI_modules.dm"
#include "code\game\objects\items\weapons\candle.dm"
#include "code\game\objects\items\weapons\cards_ids.dm"
#include "code\game\objects\items\weapons\cigs_lighters.dm"
#include "code\game\objects\items\weapons\clown_items.dm"

View File

@@ -232,7 +232,7 @@
var/obj/structure/closet/crate/secure/gear/C = new(src.loc)
var/num = rand(2,6)
for(var/i=0,i<num,i++)
var/spawn_type = pick(/obj/item/device/flashlight/flare, /obj/item/trash/candle, /obj/item/candle/, /obj/item/weapon/storage/box/matches)
var/spawn_type = pick(/obj/item/device/flashlight/flare, /obj/item/trash/candle, /obj/item/weapon/flame/candle/, /obj/item/weapon/storage/box/matches)
new spawn_type(C)
if("engineering")
var/obj/structure/closet/crate/secure/gear/C = new(src.loc)

View File

@@ -17,7 +17,7 @@
/obj/item/ashtray/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (health < 1)
return
if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/weapon/match))
if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/weapon/flame/match))
if (contents.len >= max_butts)
user << "This ashtray is full."
return

View File

@@ -83,7 +83,7 @@
H.equip_to_slot_or_del(CIG, slot_wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)

View File

@@ -178,10 +178,10 @@
post_status(href_list["statdisp"])
if("setmsg1" in href_list)
stat_msg1 = reject_bad_text(input("Line 1", "Enter Message Text", stat_msg1) as text|null, 40)
stat_msg1 = reject_bad_text(trim(copytext(sanitize(input("Line 1", "Enter Message Text", stat_msg1) as text|null), 1, 40)), 40)
computer.updateDialog()
if("setmsg2" in href_list)
stat_msg2 = reject_bad_text(input("Line 2", "Enter Message Text", stat_msg2) as text|null, 40)
stat_msg2 = reject_bad_text(trim(copytext(sanitize(input("Line 2", "Enter Message Text", stat_msg2) as text|null), 1, 40)), 40)
computer.updateDialog()
// OMG CENTCOMM LETTERHEAD

View File

@@ -16,7 +16,7 @@
// Run all strings to be used in an SQL query through this proc first to properly escape out injection attempts.
/proc/sanitizeSQL(var/t as text)
var/sqltext = dbcon.Quote(t);
return copytext(sqltext, 2, lentext(sqltext)-1);//Quote() adds quotes around input, we already do that
return copytext(sqltext, 2, lentext(sqltext));//Quote() adds quotes around input, we already do that
/*
* Text sanitization

View File

@@ -1236,12 +1236,12 @@ proc/is_hot(obj/item/W as obj)
return 3800
else
return 0
if(/obj/item/weapon/lighter)
if(/obj/item/weapon/flame/lighter)
if(W:lit)
return 1500
else
return 0
if(/obj/item/weapon/match)
if(/obj/item/weapon/flame/match)
if(W:lit)
return 1000
else
@@ -1282,8 +1282,8 @@ proc/is_hot(obj/item/W as obj)
istype(W, /obj/item/weapon/screwdriver) || \
istype(W, /obj/item/weapon/pen) || \
istype(W, /obj/item/weapon/weldingtool) || \
istype(W, /obj/item/weapon/lighter/zippo) || \
istype(W, /obj/item/weapon/match) || \
istype(W, /obj/item/weapon/flame/lighter/zippo) || \
istype(W, /obj/item/weapon/flame/match) || \
istype(W, /obj/item/clothing/mask/cigarette) || \
istype(W, /obj/item/weapon/shovel) \
)

View File

@@ -80,6 +80,9 @@
throw_item(A)
return
if(!istype(A,/obj/item/weapon/gun) && !isturf(A) && !istype(A,/obj/screen))
last_target_click = world.time
var/obj/item/W = get_active_hand()
if(W == A)

View File

@@ -115,7 +115,7 @@
else
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(H), slot_l_store)
H.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(H), slot_l_store)
if(H.backbag == 1)//Why cant some of these things spawn in his office?
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)

View File

@@ -175,10 +175,10 @@
post_status(href_list["statdisp"])
if("setmsg1")
stat_msg1 = input("Line 1", "Enter Message Text", stat_msg1) as text|null
stat_msg1 = reject_bad_text(trim(copytext(sanitize(input("Line 1", "Enter Message Text", stat_msg1) as text|null), 1, 40)), 40)
src.updateDialog()
if("setmsg2")
stat_msg2 = input("Line 2", "Enter Message Text", stat_msg2) as text|null
stat_msg2 = reject_bad_text(trim(copytext(sanitize(input("Line 2", "Enter Message Text", stat_msg2) as text|null), 1, 40)), 40)
src.updateDialog()
// OMG CENTCOMM LETTERHEAD

View File

@@ -788,10 +788,10 @@
product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
vend_delay = 34
icon_state = "cigs"
products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/lighter/random = 4)
contraband = list(/obj/item/weapon/lighter/zippo = 4)
products = list(/obj/item/weapon/storage/fancy/cigarettes = 10,/obj/item/weapon/storage/box/matches = 10,/obj/item/weapon/flame/lighter/random = 4)
contraband = list(/obj/item/weapon/flame/lighter/zippo = 4)
premium = list(/obj/item/weapon/storage/fancy/cigar = 5)
prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15,/obj/item/weapon/storage/box/matches = 1,/obj/item/weapon/lighter/random = 2)
prices = list(/obj/item/weapon/storage/fancy/cigarettes = 15,/obj/item/weapon/storage/box/matches = 1,/obj/item/weapon/flame/lighter/random = 2)
/obj/machinery/vending/medical

View File

@@ -721,8 +721,13 @@
return 0
var/result = 0
var/obj/item/stack/sheet/res = new type(src)
// amount available to take out
var/total_amount = round(resources[mat_string]/res.perunit)
res.amount = min(total_amount,amount)
// number of stacks we're going to take out
res.amount = round(min(total_amount,amount))
if(res.amount>0)
resources[mat_string] -= res.amount*res.perunit
res.Move(src.loc)
@@ -783,6 +788,7 @@
if(istype(W, /obj/item/weapon/card/emag))
emag()
return
var/material
switch(W.type)
if(/obj/item/stack/sheet/mineral/gold)
@@ -805,14 +811,17 @@
if(src.being_built)
user << "The fabricator is currently processing. Please wait until completion."
return
var/obj/item/stack/sheet/stack = W
var/sname = "[stack.name]"
var/amnt = stack.perunit
if(src.resources[material] < res_max_amount)
var/count = 0
src.overlays += "fab-load-[material]"//loading animation is now an overlay based on material type. No more spontaneous conversion of all ores to metal. -vey
sleep(10)
if(stack && stack.amount)
if(stack && stack.amount >= 1)
var/count = 0
src.overlays += "fab-load-[material]"//loading animation is now an overlay based on material type. No more spontaneous conversion of all ores to metal. -vey
sleep(10)
while(src.resources[material] < res_max_amount && stack)
src.resources[material] += amnt
stack.use(1)
@@ -820,6 +829,9 @@
src.overlays -= "fab-load-[material]"
user << "You insert [count] [sname] into the fabricator."
src.updateUsrDialog()
else
user << "The fabricator can only accept full sheets of [sname]."
return
else
user << "The fabricator cannot hold more [sname]."
return

View File

@@ -18,7 +18,7 @@
new /obj/item/weapon/gun/energy/ionrifle(src)
new /obj/item/weapon/gun/energy/gun/nuclear(src)
new /obj/item/clothing/glasses/thermal(src)
new /obj/item/weapon/lighter/zippo(src)
new /obj/item/weapon/flame/lighter/zippo(src)
new /obj/item/weapon/pinpointer(src)
return

View File

@@ -22,6 +22,12 @@
return
return
/obj/effect/portal/attack_hand(mob/user as mob)
spawn(0)
src.teleport(user)
return
return
/obj/effect/portal/New()
spawn(300)
del(src)

View File

@@ -1,87 +0,0 @@
/obj/item/candle
name = "red candle"
desc = "a candle"
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
item_state = "candle1"
w_class = 1
var/wax = 2000
var/lit = 0
proc
light(var/flavor_text = "\red [usr] lights the [name].")
update_icon()
var/i
if(wax>1500)
i = 1
else if(wax>800)
i = 2
else i = 3
icon_state = "candle[i][lit ? "_lit" : ""]"
attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
light("\red [user] casually lights the [name] with [W].")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit)
light()
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
light()
else if(istype(W, /obj/item/candle))
var/obj/item/candle/C = W
if(C.lit)
light()
light(var/flavor_text = "\red [usr] lights the [name].")
if(!src.lit)
src.lit = 1
//src.damtype = "fire"
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
SetLuminosity(CANDLE_LUM)
processing_objects.Add(src)
process()
if(!lit)
return
wax--
if(!wax)
new/obj/item/trash/candle(src.loc)
if(istype(src.loc, /mob))
src.dropped()
del(src)
update_icon()
if(istype(loc, /turf)) //start a fire if possible
var/turf/T = loc
T.hotspot_expose(700, 5)
attack_self(mob/user as mob)
if(lit)
lit = 0
update_icon()
SetLuminosity(0)
user.SetLuminosity(user.luminosity - CANDLE_LUM)
pickup(mob/user)
if(lit)
SetLuminosity(0)
user.SetLuminosity(user.luminosity + CANDLE_LUM)
dropped(mob/user)
if(lit)
user.SetLuminosity(user.luminosity - CANDLE_LUM)
SetLuminosity(CANDLE_LUM)

View File

@@ -583,10 +583,10 @@
if("alert")
post_status("alert", href_list["alert"])
if("setmsg1")
message1 = input("Line 1", "Enter Message Text", message1) as text|null
message1 = reject_bad_text(trim(copytext(sanitize(input("Line 1", "Enter Message Text", message1) as text|null), 1, 40)), 40)
updateSelfDialog()
if("setmsg2")
message2 = input("Line 2", "Enter Message Text", message2) as text|null
message2 = reject_bad_text(trim(copytext(sanitize(input("Line 2", "Enter Message Text", message2) as text|null), 1, 40)), 40)
updateSelfDialog()
else
post_status(href_list["statdisp"])

View File

@@ -0,0 +1,83 @@
/obj/item/weapon/flame/candle
name = "red candle"
desc = "a candle"
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
item_state = "candle1"
w_class = 1
var/wax = 200
/obj/item/weapon/flame/candle/update_icon()
var/i
if(wax>150)
i = 1
else if(wax>80)
i = 2
else i = 3
icon_state = "candle[i][lit ? "_lit" : ""]"
/obj/item/weapon/flame/candle/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
light("\red [user] casually lights the [name] with [W].")
else if(istype(W, /obj/item/weapon/flame/lighter))
var/obj/item/weapon/flame/lighter/L = W
if(L.lit)
light()
else if(istype(W, /obj/item/weapon/flame/match))
var/obj/item/weapon/flame/match/M = W
if(M.lit)
light()
else if(istype(W, /obj/item/weapon/flame/candle))
var/obj/item/weapon/flame/candle/C = W
if(C.lit)
light()
/obj/item/weapon/flame/candle/proc/light(var/flavor_text = "\red [usr] lights the [name].")
if(!src.lit)
src.lit = 1
//src.damtype = "fire"
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
SetLuminosity(CANDLE_LUM)
processing_objects.Add(src)
/obj/item/weapon/flame/candle/process()
if(!lit)
return
wax--
if(!wax)
new/obj/item/trash/candle(src.loc)
if(istype(src.loc, /mob))
src.dropped()
del(src)
update_icon()
if(istype(loc, /turf)) //start a fire if possible
var/turf/T = loc
T.hotspot_expose(700, 5)
/obj/item/weapon/flame/candle/attack_self(mob/user as mob)
if(lit)
lit = 0
update_icon()
SetLuminosity(0)
user.SetLuminosity(user.luminosity - CANDLE_LUM)
/obj/item/weapon/flame/candle/pickup(mob/user)
if(lit)
SetLuminosity(0)
user.SetLuminosity(user.luminosity + CANDLE_LUM)
/obj/item/weapon/flame/candle/dropped(mob/user)
if(lit)
user.SetLuminosity(user.luminosity - CANDLE_LUM)
SetLuminosity(CANDLE_LUM)

View File

@@ -12,22 +12,25 @@ ZIPPO
CIGARETTE PACKETS ARE IN FANCY.DM
*/
//For anything that can light stuff on fire
/obj/item/weapon/flame
var/lit = 0
///////////
//MATCHES//
///////////
/obj/item/weapon/match
/obj/item/weapon/flame/match
name = "match"
desc = "A simple match stick, used for lighting fine smokables."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "match_unlit"
var/lit = 0
var/burnt = 0
var/smoketime = 5
w_class = 1.0
origin_tech = "materials=1"
attack_verb = list("burnt", "singed")
/obj/item/weapon/match/process()
/obj/item/weapon/flame/match/process()
var/turf/location = get_turf(src)
smoketime--
if(smoketime < 1)
@@ -37,12 +40,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
location.hotspot_expose(700, 5)
return
/obj/item/weapon/match/dropped(mob/user as mob)
/obj/item/weapon/flame/match/dropped(mob/user as mob)
if(lit)
burn_out()
return ..()
/obj/item/weapon/match/proc/burn_out()
/obj/item/weapon/flame/match/proc/burn_out()
lit = 0
burnt = 1
damtype = "brute"
@@ -89,18 +92,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool
light("<span class='notice'>[user] casually lights the [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
else if(istype(W, /obj/item/weapon/flame/lighter/zippo))
var/obj/item/weapon/flame/lighter/zippo/Z = W
if(Z.lit)
light("<span class='rose'>With a flick of their wrist, [user] lights their [name] with their [W].</span>")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
else if(istype(W, /obj/item/weapon/flame/lighter))
var/obj/item/weapon/flame/lighter/L = W
if(L.lit)
light("<span class='notice'>[user] manages to light their [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
else if(istype(W, /obj/item/weapon/flame/match))
var/obj/item/weapon/flame/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
@@ -258,18 +261,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(WT.isOn())
light("<span class='notice'>[user] insults [name] by lighting it with [W].</span>")
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
else if(istype(W, /obj/item/weapon/flame/lighter/zippo))
var/obj/item/weapon/flame/lighter/zippo/Z = W
if(Z.lit)
light("<span class='rose'>With a flick of their wrist, [user] lights their [name] with their [W].</span>")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
else if(istype(W, /obj/item/weapon/flame/lighter))
var/obj/item/weapon/flame/lighter/L = W
if(L.lit)
light("<span class='notice'>[user] manages to offend their [name] by lighting it with [W].</span>")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
else if(istype(W, /obj/item/weapon/flame/match))
var/obj/item/weapon/flame/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
@@ -340,18 +343,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(WT.isOn())//
light("<span class='notice'>[user] recklessly lights [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
else if(istype(W, /obj/item/weapon/flame/lighter/zippo))
var/obj/item/weapon/flame/lighter/zippo/Z = W
if(Z.lit)
light("<span class='rose'>With much care, [user] lights their [name] with their [W].</span>")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
else if(istype(W, /obj/item/weapon/flame/lighter))
var/obj/item/weapon/flame/lighter/L = W
if(L.lit)
light("<span class='notice'>[user] manages to light their [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
else if(istype(W, /obj/item/weapon/flame/match))
var/obj/item/weapon/flame/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
@@ -372,7 +375,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/////////
//ZIPPO//
/////////
/obj/item/weapon/lighter
/obj/item/weapon/flame/lighter
name = "cheap lighter"
desc = "A cheap-as-free lighter."
icon = 'icons/obj/items.dmi'
@@ -385,9 +388,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
flags = TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
attack_verb = list("burnt", "singed")
var/lit = 0
/obj/item/weapon/lighter/zippo
/obj/item/weapon/flame/lighter/zippo
name = "\improper Zippo lighter"
desc = "The zippo."
icon_state = "zippo"
@@ -395,20 +397,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_on = "zippoon"
icon_off = "zippo"
/obj/item/weapon/lighter/random
/obj/item/weapon/flame/lighter/random
New()
var/color = pick("r","c","y","g")
icon_on = "lighter-[color]-on"
icon_off = "lighter-[color]"
icon_state = icon_off
/obj/item/weapon/lighter/attack_self(mob/living/user)
/obj/item/weapon/flame/lighter/attack_self(mob/living/user)
if(user.r_hand == src || user.l_hand == src)
if(!lit)
lit = 1
icon_state = icon_on
item_state = icon_on
if(istype(src, /obj/item/weapon/lighter/zippo) )
if(istype(src, /obj/item/weapon/flame/lighter/zippo) )
user.visible_message("<span class='rose'>Without even breaking stride, [user] flips open and lights [src] in one smooth movement.</span>")
else
if(prob(95))
@@ -427,7 +429,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
lit = 0
icon_state = icon_off
item_state = icon_off
if(istype(src, /obj/item/weapon/lighter/zippo) )
if(istype(src, /obj/item/weapon/flame/lighter/zippo) )
user.visible_message("<span class='rose'>You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing.")
else
user.visible_message("<span class='notice'>[user] quietly shuts off the [src].")
@@ -439,7 +441,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return
/obj/item/weapon/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
/obj/item/weapon/flame/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
return
@@ -448,28 +450,28 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(M == user)
cig.attackby(src, user)
else
if(istype(src, /obj/item/weapon/lighter/zippo))
if(istype(src, /obj/item/weapon/flame/lighter/zippo))
cig.light("<span class='rose'>[user] whips the [name] out and holds it for [M].</span>")
else
cig.light("<span class='notice'>[user] holds the [name] out for [M], and lights the [cig.name].</span>")
else
..()
/obj/item/weapon/lighter/process()
/obj/item/weapon/flame/lighter/process()
var/turf/location = get_turf(src)
if(location)
location.hotspot_expose(700, 5)
return
/obj/item/weapon/lighter/pickup(mob/user)
/obj/item/weapon/flame/lighter/pickup(mob/user)
if(lit)
SetLuminosity(0)
user.SetLuminosity(user.luminosity+2)
return
/obj/item/weapon/lighter/dropped(mob/user)
/obj/item/weapon/flame/lighter/dropped(mob/user)
if(lit)
user.SetLuminosity(user.luminosity-2)
SetLuminosity(2)

View File

@@ -62,7 +62,7 @@
"/obj/item/weapon/reagent_containers/pill",
"/obj/item/weapon/reagent_containers/syringe",
"/obj/item/weapon/reagent_containers/glass/dispenser",
"/obj/item/weapon/lighter/zippo",
"/obj/item/weapon/flame/lighter/zippo",
"/obj/item/weapon/storage/fancy/cigarettes",
"/obj/item/weapon/storage/pill_bottle",
"/obj/item/stack/medical",
@@ -93,15 +93,14 @@
"/obj/item/weapon/reagent_containers/food/snacks/donut/jelly",
"/obj/item/weapon/melee/baton",
"/obj/item/weapon/gun/energy/taser",
"/obj/item/weapon/lighter/zippo",
"/obj/item/weapon/flame/lighter/zippo",
"/obj/item/weapon/cigpacket",
"/obj/item/clothing/glasses/hud/security",
"/obj/item/device/flashlight",
"/obj/item/device/pda",
"/obj/item/device/radio/headset",
"/obj/item/weapon/melee",
"/obj/item/taperoll/police",
"/obj/item/weapon/gun/energy/taser"
"/obj/item/taperoll/police"
)
/obj/item/weapon/storage/belt/soulstone
@@ -141,24 +140,4 @@
item_state = "swatbelt"
storage_slots = 9
max_w_class = 3
max_combined_w_class = 21
can_hold = list(
"/obj/item/weapon/grenade/flashbang",
"/obj/item/weapon/reagent_containers/spray/pepper",
"/obj/item/weapon/handcuffs",
"/obj/item/device/flash",
"/obj/item/clothing/glasses",
"/obj/item/ammo_casing/shotgun",
"/obj/item/ammo_magazine",
"/obj/item/weapon/reagent_containers/food/snacks/donut/normal",
"/obj/item/weapon/reagent_containers/food/snacks/donut/jelly",
"/obj/item/weapon/melee/baton",
"/obj/item/weapon/gun/energy/taser",
"/obj/item/weapon/lighter/zippo",
"/obj/item/weapon/cigpacket",
"/obj/item/clothing/glasses/hud/security",
"/obj/item/device/flashlight",
"/obj/item/device/pda",
"/obj/item/device/radio/headset",
"/obj/item/weapon/melee"
)
max_combined_w_class = 21

View File

@@ -446,14 +446,14 @@
w_class = 1
flags = TABLEPASS
slot_flags = SLOT_BELT
can_hold = list("/obj/item/weapon/match")
can_hold = list("/obj/item/weapon/flame/match")
New()
..()
for(var/i=1; i <= storage_slots; i++)
new /obj/item/weapon/match(src)
new /obj/item/weapon/flame/match(src)
attackby(obj/item/weapon/match/W as obj, mob/user as mob)
attackby(obj/item/weapon/flame/match/W as obj, mob/user as mob)
if(istype(W) && !W.lit && !W.burnt)
W.lit = 1
W.damtype = "burn"

View File

@@ -104,7 +104,7 @@
/obj/item/weapon/storage/fancy/candle_box/New()
..()
for(var/i=1; i <= storage_slots; i++)
new /obj/item/candle(src)
new /obj/item/weapon/flame/candle(src)
return
/*

View File

@@ -16,8 +16,8 @@
"/obj/item/weapon/dice",
"/obj/item/weapon/disk",
"/obj/item/weapon/implanter",
"/obj/item/weapon/lighter",
"/obj/item/weapon/match",
"/obj/item/weapon/flame/lighter",
"/obj/item/weapon/flame/match",
"/obj/item/weapon/paper",
"/obj/item/weapon/pen",
"/obj/item/weapon/photo",

View File

@@ -50,6 +50,8 @@
oxytanks.Add(I)
oxygentanks++
user << "<span class='notice'>You put [I] in [src].</span>"
if(oxygentanks < 5)
update_icon()
else
user << "<span class='notice'>[src] is full.</span>"
updateUsrDialog()
@@ -61,6 +63,8 @@
platanks.Add(I)
phorontanks++
user << "<span class='notice'>You put [I] in [src].</span>"
if(oxygentanks < 6)
update_icon()
else
user << "<span class='notice'>[src] is full.</span>"
updateUsrDialog()

View File

@@ -845,7 +845,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
var/obj/item/weapon/card/id/W = new(M)

View File

@@ -227,7 +227,7 @@
corpsehelmet = /obj/item/clothing/head/centhat
corpsegloves = /obj/item/clothing/gloves/swat
corpseshoes = /obj/item/clothing/shoes/swat
corpsepocket1 = /obj/item/weapon/lighter/zippo
corpsepocket1 = /obj/item/weapon/flame/lighter/zippo
corpseid = 1
corpseidjob = "Commander"
corpseidaccess = "Captain"

View File

@@ -78,7 +78,7 @@
item_state = "det_suit"
blood_overlay_type = "coat"
body_parts_covered = UPPER_TORSO|ARMS
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
armor = list(melee = 50, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
sprite_sheets = list("Vox" = 'icons/mob/species/vox/suit.dmi')

View File

@@ -216,7 +216,7 @@
icon_state = "johann_erzatz_1"
volume = 50
/obj/item/weapon/lighter/zippo/fluff/li_matsuda_1 //mangled: Li Matsuda
/obj/item/weapon/flame/lighter/zippo/fluff/li_matsuda_1 //mangled: Li Matsuda
name = "blue zippo lighter"
desc = "A zippo lighter made of some blue metal."
icon = 'icons/obj/custom_items.dmi'
@@ -224,7 +224,7 @@
icon_on = "bluezippoon"
icon_off = "bluezippo"
/obj/item/weapon/lighter/zippo/fluff/michael_guess_1 //Dragor23: Michael Guess
/obj/item/weapon/flame/lighter/zippo/fluff/michael_guess_1 //Dragor23: Michael Guess
name = "engraved lighter"
desc = "A golden lighter, engraved with some ornaments and a G."
icon = 'icons/obj/custom_items.dmi'
@@ -234,7 +234,7 @@
///////////////////////////// Ziepes - Janis Godmanis - Red Zippo //////////////////////
/obj/item/weapon/lighter/zippo/fluff/janis_godmanis
/obj/item/weapon/flame/lighter/zippo/fluff/janis_godmanis
name = "Red-White-Red Zippo"
desc = "A badass zippo that looks like the Austrian flag. Upon closer inspection it is revealed that it's a different shade of red than the Austrian flag.."
icon = 'icons/obj/custom_items.dmi'
@@ -244,7 +244,7 @@
////////////////////////////// Vivallion - Isaac Jachym - Butterfly Lighter ////////////
/obj/item/weapon/lighter/zippo/fluff/isaac_jachym
/obj/item/weapon/flame/lighter/zippo/fluff/isaac_jachym
name = "Butterfly lighter"
desc = "A custom-made zippo lighter, looks rather expensive. On one of it's sides, a clean inscription has been made, 'Butterfly, what is your wisdom?' And I looked down at it's majestic form, flexing it's wings as if to show it's strength. 'Fuck chechenya.' Had it whispered, before fluttering away, and so we went to war."
icon = 'icons/obj/custom_items.dmi'
@@ -252,7 +252,7 @@
icon_on = "che_zippoon"
icon_off = "che_zippo"
/obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1 //rawrtaicho: Riley Rohtin
/obj/item/weapon/flame/lighter/zippo/fluff/riley_rohtin_1 //rawrtaicho: Riley Rohtin
name = "Riley's black zippo"
desc = "A black zippo lighter, which holds some form of sentimental value."
icon = 'icons/obj/custom_items.dmi'
@@ -260,7 +260,7 @@
icon_on = "blackzippoon"
icon_off = "blackzippo"
/obj/item/weapon/lighter/zippo/fluff/fay_sullivan_1 //furohman: Fay Sullivan
/obj/item/weapon/flame/lighter/zippo/fluff/fay_sullivan_1 //furohman: Fay Sullivan
name = "Graduation Lighter"
desc = "A silver engraved lighter with 41 on one side and Tharsis University on the other. The lid reads Fay Sullivan, Cybernetic Engineering, 2541"
icon = 'icons/obj/custom_items.dmi'
@@ -268,7 +268,7 @@
icon_on = "gradzippoon"
icon_off = "gradzippo"
/obj/item/weapon/lighter/zippo/fluff/executivekill_1 //executivekill: Hunter Duke
/obj/item/weapon/flame/lighter/zippo/fluff/executivekill_1 //executivekill: Hunter Duke
name = "Gonzo Fist zippo"
desc = "A Zippo lighter with the iconic Gonzo Fist on a matte black finish."
icon = 'icons/obj/custom_items.dmi'
@@ -276,7 +276,7 @@
icon_on = "gonzozippoon"
icon_off = "gonzozippo"
/obj/item/weapon/lighter/zippo/fluff/naples_1 //naples: Russell Vierson
/obj/item/weapon/flame/lighter/zippo/fluff/naples_1 //naples: Russell Vierson
name = "Engraved zippo"
desc = "A intricately engraved Zippo lighter."
icon = 'icons/obj/custom_items.dmi'

View File

@@ -20,7 +20,7 @@
new/obj/item/weapon/reagent_containers/food/drinks/bottle/rum(src)
new/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(src)
new/obj/item/weapon/lighter/zippo(src)
new/obj/item/weapon/flame/lighter/zippo(src)
if(2)
new/obj/item/weapon/pickaxe/drill(src)
new/obj/item/device/taperecorder(src)

View File

@@ -299,7 +299,7 @@
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
var/obj/item/weapon/lighter/zippo/L = new /obj/item/weapon/lighter/zippo(src)
var/obj/item/weapon/flame/lighter/zippo/L = new /obj/item/weapon/flame/lighter/zippo(src)
L.lit = 1
src.modules += L

View File

@@ -444,6 +444,19 @@ datum/preferences
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-tox"), ICON_OVERLAY)
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(XENOBIOLOGIST)
clothes_s = new /icon('icons/mob/uniform.dmi', "sciencewhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
if(prob(1))
clothes_s.Blend(new /icon('icons/mob/head.dmi', "metroid"), ICON_OVERLAY)
switch(backbag)
if(2)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
if(3)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-tox"), ICON_OVERLAY)
if(4)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY)
if(CHEMIST)
clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)

View File

@@ -277,11 +277,11 @@
\[hr\] : Adds a horizontal rule.
</BODY></HTML>"}, "window=paper_help")
/obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/lighter/P, mob/user)
/obj/item/weapon/paper/proc/burnpaper(obj/item/weapon/flame/P, mob/user)
var/class = "<span class='warning'>"
if(P.lit && !user.restrained())
if(istype(P, /obj/item/weapon/lighter/zippo))
if(istype(P, /obj/item/weapon/flame/lighter/zippo))
class = "<span class='rose'>"
user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \
@@ -445,7 +445,7 @@
user << "<span class='notice'>You stamp the paper with your rubber stamp.</span>"
else if(istype(P, /obj/item/weapon/lighter))
else if(istype(P, /obj/item/weapon/flame))
burnpaper(P, user)
add_fingerprint(user)

View File

@@ -44,7 +44,7 @@
user << "<span class='notice'>You add [(W.name == "photo") ? "the photo" : W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name].</span>"
user.drop_from_inventory(W)
W.loc = src
else if(istype(W, /obj/item/weapon/lighter))
else if(istype(W, /obj/item/weapon/flame/lighter))
burnpaper(W, user)
else if(istype(W, /obj/item/weapon/paper_bundle))
user.drop_from_inventory(W)
@@ -69,11 +69,11 @@
return
/obj/item/weapon/paper_bundle/proc/burnpaper(obj/item/weapon/lighter/P, mob/user)
/obj/item/weapon/paper_bundle/proc/burnpaper(obj/item/weapon/flame/lighter/P, mob/user)
var/class = "<span class='warning'>"
if(P.lit && !user.restrained())
if(istype(P, /obj/item/weapon/lighter/zippo))
if(istype(P, /obj/item/weapon/flame/lighter/zippo))
class = "<span class='rose'>"
user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \

View File

@@ -54,8 +54,7 @@
/obj/item/weapon/handcuffs,\
/obj/item/weapon/hemostat,\
/obj/item/weapon/kitchenknife,\
/obj/item/weapon/lighter,\
/obj/item/weapon/lighter,\
/obj/item/weapon/flame/lighter,\
/obj/item/weapon/light/bulb,\
/obj/item/weapon/light/tube,\
/obj/item/weapon/pickaxe,\

View File

@@ -282,9 +282,8 @@ var/list/valid_secondary_effect_types = list(\
if(secondary_effect && secondary_effect.trigger == TRIGGER_ENERGY && prob(25))
secondary_effect.ToggleActivate(0)
else if (istype(W,/obj/item/weapon/match) && W:lit ||\
istype(W,/obj/item/weapon/weldingtool) && W:welding ||\
istype(W,/obj/item/weapon/lighter) && W:lit)
else if (istype(W,/obj/item/weapon/flame) && W:lit ||\
istype(W,/obj/item/weapon/weldingtool) && W:welding)
if(my_effect.trigger == TRIGGER_HEAT)
my_effect.ToggleActivate()
if(secondary_effect && secondary_effect.trigger == TRIGGER_HEAT && prob(25))

View File

@@ -3,6 +3,7 @@
/datum/artifact_effect/cellcharge
effecttype = "cellcharge"
effect_type = 3
var/last_message
/datum/artifact_effect/cellcharge/DoEffectTouch(var/mob/user)
if(user)
@@ -21,10 +22,12 @@
B.charge += 25
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge += 25
for (var/mob/living/silicon/robot/M in mob_list)
for (var/mob/living/silicon/robot/M in range(50, T))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge += 25
M << "\blue SYSTEM ALERT: Energy boost detected!"
if(world.time - last_message > 200)
M << "\blue SYSTEM ALERT: Energy boost detected!"
last_message = world.time
return 1
/datum/artifact_effect/cellcharge/DoEffectPulse()
@@ -35,8 +38,10 @@
B.charge += rand() * 100
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge += 250
for (var/mob/living/silicon/robot/M in mob_list)
for (var/mob/living/silicon/robot/M in range(100, T))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge += rand() * 100
M << "\blue SYSTEM ALERT: Energy boost detected!"
if(world.time - last_message > 200)
M << "\blue SYSTEM ALERT: Energy boost detected!"
last_message = world.time
return 1

View File

@@ -3,6 +3,7 @@
/datum/artifact_effect/celldrain
effecttype = "celldrain"
effect_type = 3
var/last_message
/datum/artifact_effect/celldrain/DoEffectTouch(var/mob/user)
if(user)
@@ -23,10 +24,12 @@
B.charge = max(B.charge - 50,0)
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge = max(S.charge - 100,0)
for (var/mob/living/silicon/robot/M in mob_list)
for (var/mob/living/silicon/robot/M in range(50, T))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge = max(D.charge - 50,0)
M << "\red SYSTEM ALERT: Energy drain detected!"
if(world.time - last_message > 200)
M << "\red SYSTEM ALERT: Energy drain detected!"
last_message = world.time
return 1
/datum/artifact_effect/celldrain/DoEffectPulse()
@@ -37,8 +40,10 @@
B.charge = max(B.charge - rand() * 150,0)
for (var/obj/machinery/power/smes/S in range (src.effectrange,src))
S.charge = max(S.charge - 250,0)
for (var/mob/living/silicon/robot/M in mob_list)
for (var/mob/living/silicon/robot/M in range(100, T))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge = max(D.charge - rand() * 150,0)
M << "\red SYSTEM ALERT: Energy drain detected!"
if(world.time - last_message > 200)
M << "\red SYSTEM ALERT: Energy drain detected!"
last_message = world.time
return 1

View File

@@ -1,6 +1,7 @@
/datum/artifact_effect/roboheal
effecttype = "roboheal"
var/last_message
/datum/artifact_effect/roboheal/New()
..()
@@ -19,8 +20,9 @@
if(holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(prob(10))
if(world.time - last_message > 200)
M << "\blue SYSTEM ALERT: Beneficial energy field detected!"
last_message = world.time
M.adjustBruteLoss(-1)
M.adjustFireLoss(-1)
M.updatehealth()
@@ -30,7 +32,9 @@
if(holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!"
if(world.time - last_message > 200)
M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!"
last_message = world.time
M.adjustBruteLoss(-10)
M.adjustFireLoss(-10)
M.updatehealth()

View File

@@ -1,6 +1,7 @@
/datum/artifact_effect/robohurt
effecttype = "robohurt"
var/last_message
/datum/artifact_effect/robohurt/New()
..()
@@ -19,7 +20,9 @@
if(holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
if(prob(10)) M << "\red SYSTEM ALERT: Harmful energy field detected!"
if(world.time - last_message > 200)
M << "\red SYSTEM ALERT: Harmful energy field detected!"
last_message = world.time
M.adjustBruteLoss(1)
M.adjustFireLoss(1)
M.updatehealth()
@@ -29,7 +32,9 @@
if(holder)
var/turf/T = get_turf(holder)
for (var/mob/living/silicon/robot/M in range(src.effectrange,T))
M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!"
if(world.time - last_message > 200)
M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!"
last_message = world.time
M.adjustBruteLoss(10)
M.adjustFireLoss(10)
M.updatehealth()

View File

@@ -194,7 +194,7 @@
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]."
if(10)
item_type = "[pick("cylinder","tank","chamber")]"
new_item = new /obj/item/weapon/lighter(src.loc)
new_item = new /obj/item/weapon/flame/lighter(src.loc)
additional_desc = "There is a tiny device attached."
if(prob(30))
apply_image_decorations = 1

View File

@@ -111,7 +111,7 @@
allowed_tools = list(
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/flame/lighter = 50, \
/obj/item/weapon/weldingtool = 25
)

View File

@@ -104,7 +104,7 @@
allowed_tools = list(
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/flame/lighter = 50, \
/obj/item/weapon/weldingtool = 25
)

View File

@@ -237,7 +237,7 @@
allowed_tools = list(
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/flame/lighter = 50, \
/obj/item/weapon/weldingtool = 25
)

View File

@@ -120,7 +120,7 @@
allowed_tools = list(
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/flame/lighter = 50, \
/obj/item/weapon/weldingtool = 25
)

View File

@@ -71,7 +71,7 @@
allowed_tools = list(
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/flame/lighter = 50, \
/obj/item/weapon/weldingtool = 25
)

View File

@@ -94,7 +94,7 @@
allowed_tools = list(
/obj/item/weapon/cautery = 100, \
/obj/item/clothing/mask/cigarette = 75, \
/obj/item/weapon/lighter = 50, \
/obj/item/weapon/flame/lighter = 50, \
/obj/item/weapon/weldingtool = 25
)

View File

@@ -162,7 +162,7 @@
prize.name = "electronic blink toy game"
prize.desc = "Blink. Blink. Blink."
if(3)
prize = new /obj/item/weapon/lighter/zippo( prize_location )
prize = new /obj/item/weapon/flame/lighter/zippo( prize_location )
prize.name = "Burno Lighter"
prize.desc = "Almost like a decent lighter!"
if(4)

View File

@@ -167,12 +167,21 @@ should be listed in the changelog upon commit though. Thanks. -->
</ul>
</div>
<div class='commit sansserif'>
<h2 class='date'>31 August 2014</h2>
<h3 class='author'>Whitellama updated:</h3>
<ul class='changes bgimages16'>
<li class='bugfix'>Matches and candles can be used to burn papers, too.</li>
<li class='bugfix'>Observers have a bit more time (20 seconds, instead of 7.5) before the Diona join prompt disappears.</li>
</ul>
</div>
<div class='commit sansserif'>
<h2 class='date'>2 August 2014</h2>
<h3 class='author'>Whitellama updated:</h3>
<ul class='changes bgimages16'>
<li class='bugfix'>Arcane tomes can now be stored on bookshelves.</li>
<li class='bugfix'>Dionaea players no longer crash on death, and now properly nymphs properly.</li>
<li class='bugfix'>Dionaea players no longer crash on death, and now become nymphs properly.</li>
</ul>
</div>
@@ -347,6 +356,31 @@ should be listed in the changelog upon commit though. Thanks. -->
</ul>
</div>
<div class='commit sansserif'>
<h2 class='date'>6 Mai 2014</h2>
<h3 class='author'>Hubble updated:</h3>
<ul class='changes bgimages16'>
<li class='rscadd'>Clip papers together by hitting a paper with a paper or photo</li>
<li class='imageadd'>Adds icons for copied stamps</li>
</ul>
</div>
<div class='commit sansserif'>
<h2 class='date'>23 Mai 2014</h2>
<h3 class='author'>Hubble updated:</h3>
<ul class='changes bgimages16'>
<li class='rscadd'>Personal lockers are now resettable</li>
<li class='rscadd'>Take off people's accessories or change their sensors in the drag and drop-interface</li>
<li class='rscadd'>Merge paper bundles by hitting one with another</li>
<li class='tweak'>Line breaks in Security, Medical and Employment Records</li>
<li class='tweak'>Record printouts will have names on it</li>
<li class='tweak'>Set other people's internals in belt and suit storage slots</li>
<li class='bugfix'>No longer changing suit sensors while cuffed</li>
<li class='bugfix'>No longer emptying other people's pockets when they are not full yet</li>
</ul>
</div>
<div class='commit sansserif'>
<h2 class='date'>6 Mai 2014</h2>
<h3 class='author'>Hubble updated:</h3>
@@ -372,6 +406,19 @@ should be listed in the changelog upon commit though. Thanks. -->
<div class='commit sansserif'>
<h2 class='date'>28 мая 2014</h2>
<h3 class='author'>Chinsky updated:</h3>
<ul class='changes bgimages16'>
<li class='rscadd'>Adds few new paperBBcode tags, to make up for HTML removal.</li>
<li class='rscadd'>[logo] tag draws NT logo image (one from wiki).</li>
<li class='rscadd'>[table] [/table] tags mark borders of tables. [grid] [/grid] are borderless tables, useful of making layouts. Inside tables following tags are used: [row] marks beginning of new table row, [cell] - beginning of new table cell.</li>
</ul>
</div>
<div class='commit sansserif'>
<div class='commit sansserif'>
<h2 class='date'>28 мая 2014</h2>
<h3 class='author'>Chinsky updated:</h3>

File diff suppressed because it is too large Load Diff