mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
Merge branch 'master' of https://github.com/tgstation/-tg-station into ERTcodes
This commit is contained in:
@@ -158,5 +158,5 @@
|
||||
desc = "A suspicious-looking spraycan modified to use special paint used by gangsters to mark territory."
|
||||
icon_state = "spraycan_gang_cap"
|
||||
gang = 1
|
||||
uses = 15
|
||||
uses = 20
|
||||
instant = -1
|
||||
|
||||
@@ -38,6 +38,11 @@
|
||||
sleep(6)
|
||||
// Make space carp
|
||||
var/mob/living/simple_animal/hostile/carp/C = new /mob/living/simple_animal/hostile/carp(get_turf(src))
|
||||
// Make carp non-hostile to user, yes this means
|
||||
C.faction |= "\ref[owner]"
|
||||
// Make carp non-hostile to user, and their allies
|
||||
if(owner)
|
||||
var/list/factions = owner.faction
|
||||
for(var/F in factions)
|
||||
if(F == "neutral")
|
||||
factions -= F
|
||||
C.faction = factions
|
||||
qdel(src)
|
||||
@@ -372,7 +372,7 @@
|
||||
signal.frequency = freqnum // Quick frequency set
|
||||
Broadcast_Message(M, voicemask,
|
||||
src, message, voice, jobname, real_name,
|
||||
4, signal.data["compression"], list(position.z, 0), freq, spans,
|
||||
5, signal.data["compression"], list(position.z, 0), freq, spans,
|
||||
verb_say, verb_ask, verb_exclaim, verb_yell)
|
||||
return
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/gang //Which gang uses this?
|
||||
var/boss = 1 //If it has the power to promote gang members
|
||||
var/recalling = 0
|
||||
var/promotion_cost = 20
|
||||
var/promotions = 0
|
||||
|
||||
/obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started
|
||||
if(!ticker.mode.gang_points)
|
||||
@@ -46,38 +46,45 @@
|
||||
dat += "Time until Influence grows: <B>[(points >= 100) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]</B><br>"
|
||||
dat += "<B>Purchase Items:</B><br>"
|
||||
|
||||
dat += "(10 Influence) "
|
||||
if(points >= 10)
|
||||
dat += "(10 Influence) <a href='?src=\ref[src];purchase=spraycan'>Territory Spraycan</a><br>"
|
||||
dat += "<a href='?src=\ref[src];purchase=spraycan'><b>Territory Spraycan</b></a><br>"
|
||||
else
|
||||
dat += "(10 Influence) Territory Spraycan<br>"
|
||||
dat += "<b>Territory Spraycan</b><br>"
|
||||
|
||||
dat += "(10 Influence) "
|
||||
if(points >= 10)
|
||||
dat += "<a href='?src=\ref[src];purchase=switchblade'>Switchblade</a><br>"
|
||||
else
|
||||
dat += "Switchblade<br>"
|
||||
|
||||
dat += "(25 Influence) "
|
||||
if(points >= 25)
|
||||
dat += "(25 Influence) <a href='?src=\ref[src];purchase=pistol'>10mm Pistol</a><br>"
|
||||
dat += "<a href='?src=\ref[src];purchase=pistol'>10mm Pistol</a><br>"
|
||||
else
|
||||
dat += "(25 Influence) 10mm Pistol<br>"
|
||||
dat += "10mm Pistol<br>"
|
||||
|
||||
dat += "(10 Influence) "
|
||||
if(points >= 10)
|
||||
dat += "(10 Influence) <a href='?src=\ref[src];purchase=ammo'>10mm Ammo</a><br>"
|
||||
dat += "<a href='?src=\ref[src];purchase=ammo'>10mm Ammo</a><br>"
|
||||
else
|
||||
dat += "(10 Influence) 10mm Ammo<br>"
|
||||
|
||||
if(points >= 10)
|
||||
dat += "(10 Influence) <a href='?src=\ref[src];purchase=switchblade'>Switchblade</a><br>"
|
||||
else
|
||||
dat += "(10 Influence) Switchblade<br>"
|
||||
dat += "10mm Ammo<br>"
|
||||
|
||||
dat += "(50 Influence) "
|
||||
if(points >= 50)
|
||||
dat += "(50 Influence) <a href='?src=\ref[src];purchase=pen'>Recruitment Pen</a><br>"
|
||||
dat += "<a href='?src=\ref[src];purchase=pen'>Recruitment Pen</a><br>"
|
||||
else
|
||||
dat += "(50 Influence) Recruitment Pen<br>"
|
||||
dat += "Recruitment Pen<br>"
|
||||
|
||||
if(boss)
|
||||
if(promotion_cost > 100)
|
||||
dat += "(Maximum Reached) Promote a Gangster<br>"
|
||||
else if(points >= promotion_cost)
|
||||
dat += "([promotion_cost] Influence) <a href='?src=\ref[src];purchase=gangtool'>Promote a Gangster</a><br>"
|
||||
if(promotions >= 3)
|
||||
dat += "(Out of stock) Promote a Gangster<br>"
|
||||
else
|
||||
dat += "([promotion_cost] Influence) Promote a Gangster<br>"
|
||||
dat += "([(promotions*20)+10] Influence, [3-promotions] left) "
|
||||
if(points >= (promotions*20)+10)
|
||||
dat += "<a href='?src=\ref[src];purchase=gangtool'>Promote a Gangster</a><br>"
|
||||
else
|
||||
dat += "Promote a Gangster<br>"
|
||||
|
||||
dat += "<br>"
|
||||
dat += "<a href='?src=\ref[src];choice=refresh'>Refresh</a><br>"
|
||||
@@ -100,6 +107,10 @@
|
||||
if(points >= 10)
|
||||
item_type = /obj/item/toy/crayon/spraycan/gang
|
||||
points = 10
|
||||
if("switchblade")
|
||||
if(points >= 10)
|
||||
item_type = /obj/item/weapon/switchblade
|
||||
points = 10
|
||||
if("pistol")
|
||||
if(points >= 25)
|
||||
item_type = /obj/item/weapon/gun/projectile/automatic/pistol
|
||||
@@ -108,19 +119,15 @@
|
||||
if(points >= 10)
|
||||
item_type = /obj/item/ammo_box/magazine/m10mm
|
||||
points = 10
|
||||
if("switchblade")
|
||||
if(points >= 10)
|
||||
item_type = /obj/item/weapon/switchblade
|
||||
points = 10
|
||||
if("pen")
|
||||
if(points >= 50)
|
||||
item_type = /obj/item/weapon/pen/gang
|
||||
points = 50
|
||||
if("gangtool")
|
||||
if(points >= promotion_cost)
|
||||
if((promotions < 3) && (points >= (promotions*20)+10))
|
||||
item_type = /obj/item/device/gangtool/lt
|
||||
points = promotion_cost
|
||||
promotion_cost += 30
|
||||
points = (promotions*20)+10
|
||||
promotions++
|
||||
|
||||
if(item_type)
|
||||
if(gang == "A")
|
||||
@@ -167,8 +174,10 @@
|
||||
if(promoted)
|
||||
ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "[user] has been promoted to Lieutenant.")
|
||||
user << "<FONT size=3 color=red><B>You have been promoted to Lieutenant!</B></FONT>"
|
||||
ticker.mode.forge_gang_objectives(user.mind)
|
||||
ticker.mode.greet_gang(user.mind,0)
|
||||
user << "The <b>Gangtool</b> you registered will allow you to use your gang's influence to purchase items and prevent the station from evacuating before your gang can take over. Use it to recall the emergency shuttle from anywhere on the station."
|
||||
user << "You may also now use recruitment pens to grow your gang membership. Use them on unsuspecting crew members to recruit them."
|
||||
user << "You may also now use <b>recruitment pens</b> to grow your gang membership. Use them on unsuspecting crew members to recruit them."
|
||||
if(!gang)
|
||||
usr << "<span class='warning'>ACCESS DENIED: Unauthorized user.</span>"
|
||||
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/restart
|
||||
name = "cyborg emergency restart module"
|
||||
desc = "Used to force a restart of a disabled-but-repaired cyborg, bringing it back online."
|
||||
name = "cyborg emergency reboot module"
|
||||
desc = "Used to force a reboot of a disabled-but-repaired cyborg, bringing it back online."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
|
||||
|
||||
|
||||
@@ -109,25 +109,21 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \
|
||||
//Step one - dehairing.
|
||||
|
||||
/obj/item/stack/sheet/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if( istype(W, /obj/item/weapon/kitchenknife) || \
|
||||
istype(W, /obj/item/weapon/kitchen/utensil/knife) || \
|
||||
istype(W, /obj/item/weapon/twohanded/fireaxe) || \
|
||||
istype(W, /obj/item/weapon/hatchet) )
|
||||
|
||||
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
|
||||
usr.visible_message("\the [usr] starts cutting hair off \the [src].", "<span class='notice'>You start cutting the hair off \the [src]...</span>", "<span class='italics'>You hear the sound of a knife rubbing against flesh.</span>")
|
||||
if(do_after(user,50))
|
||||
usr << "<span class='notice'>You cut the hair from this [src.singular_name].</span>"
|
||||
if(is_sharp(W))
|
||||
playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1)
|
||||
user.visible_message("[user] starts cutting hair off \the [src].", "<span class='notice'>You start cutting the hair off \the [src]...</span>", "<span class='italics'>You hear the sound of a knife rubbing against flesh.</span>")
|
||||
if(do_after(user,50, target = src))
|
||||
user << "<span class='notice'>You cut the hair from this [src.singular_name].</span>"
|
||||
//Try locating an exisitng stack on the tile and add to there if possible
|
||||
for(var/obj/item/stack/sheet/hairlesshide/HS in usr.loc)
|
||||
for(var/obj/item/stack/sheet/hairlesshide/HS in user.loc)
|
||||
if(HS.amount < 50)
|
||||
HS.amount++
|
||||
src.use(1)
|
||||
use(1)
|
||||
break
|
||||
//If it gets to here it means it did not find a suitable stack on the tile.
|
||||
var/obj/item/stack/sheet/hairlesshide/HS = new(usr.loc)
|
||||
var/obj/item/stack/sheet/hairlesshide/HS = new(user.loc)
|
||||
HS.amount = 1
|
||||
src.use(1)
|
||||
use(1)
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
@@ -148,13 +148,13 @@
|
||||
desc = "An aura of time-bluespace energy."
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "chronofield"
|
||||
density = 1
|
||||
density = 0
|
||||
anchored = 1
|
||||
unacidable = 1
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
var/mob/living/captured = null
|
||||
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
|
||||
var/tickstokill = 30
|
||||
var/tickstokill = 15
|
||||
var/image/mob_underlay = null
|
||||
var/preloaded = 0
|
||||
var/RPpos = null
|
||||
@@ -210,12 +210,8 @@
|
||||
qdel(src)
|
||||
else
|
||||
captured.Paralyse(4)
|
||||
if(captured.reagents)
|
||||
captured.reagents.del_reagent("synaptizine") //you pesky thing you
|
||||
if(captured.loc != src) //If they manage to escape, immediately kill them, this is so that even if there IS a way to get out, they won't use it
|
||||
if(captured.loc != src)
|
||||
captured.loc = src
|
||||
tickstokill = 0
|
||||
return .()
|
||||
update_icon()
|
||||
if(gun)
|
||||
if(gun.field_check(src))
|
||||
|
||||
@@ -359,13 +359,16 @@
|
||||
defib.cooldowncheck(user)
|
||||
return
|
||||
if(user.zone_sel && user.zone_sel.selecting == "chest")
|
||||
var/mob/dead/observer/ghost = H.get_ghost()
|
||||
if(ghost)
|
||||
ghost << "<span class='ghostalert'>Your heart is being defibrillated. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)"
|
||||
ghost << 'sound/effects/genetics.ogg'
|
||||
user.visible_message("<span class='warning'>[user] begins to place [src] on [M.name]'s chest.</span>", "<span class='warning'>You begin to place [src] on [M.name]'s chest...</span>")
|
||||
busy = 1
|
||||
update_icon()
|
||||
if(do_after(user, 30)) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process
|
||||
user.visible_message("<span class='notice'>[user] places [src] on [M.name]'s chest.</span>", "<span class='warning'>You place [src] on [M.name]'s chest.</span>")
|
||||
playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
var/mob/dead/observer/ghost = H.get_ghost()
|
||||
var/tplus = world.time - H.timeofdeath
|
||||
var/tlimit = 6000 //past this much time the patient is unrecoverable (in deciseconds)
|
||||
var/tloss = 3000 //brain damage starts setting in on the patient after some time left rotting
|
||||
@@ -390,6 +393,7 @@
|
||||
for(var/obj/item/organ/limb/O in H.organs)
|
||||
total_brute += O.brute_dam
|
||||
total_burn += O.burn_dam
|
||||
ghost = H.get_ghost()
|
||||
if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations))
|
||||
//If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit
|
||||
if (H.health > halfwaycritdeath)
|
||||
@@ -420,9 +424,6 @@
|
||||
user.visible_message("<span class='warning'>[defib] buzzes: Resuscitation failed - Severe tissue damage detected.</span>")
|
||||
else
|
||||
user.visible_message("<span class='warning'>[defib] buzzes: Resuscitation failed - No soul in patient body. Further attempts may be successful.</span>")
|
||||
if(ghost)
|
||||
ghost << "<span class='ghostalert'>Your heart is being defibrillated. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)"
|
||||
ghost << sound('sound/effects/genetics.ogg')
|
||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
defib.deductcharge(revivecost)
|
||||
update_icon()
|
||||
|
||||
@@ -1,22 +1,18 @@
|
||||
/* Kitchen tools
|
||||
* Contains:
|
||||
* Utensils
|
||||
* Spoons
|
||||
* Forks
|
||||
* Knives
|
||||
* Fork
|
||||
* Kitchen knives
|
||||
* Butcher's cleaver
|
||||
* Rolling Pins
|
||||
* Trays
|
||||
*/
|
||||
|
||||
/obj/item/weapon/kitchen
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
|
||||
/*
|
||||
* Utensils
|
||||
*/
|
||||
/obj/item/weapon/kitchen/utensil
|
||||
/obj/item/weapon/kitchen/fork
|
||||
name = "fork"
|
||||
desc = "Pointy."
|
||||
icon_state = "fork"
|
||||
force = 5.0
|
||||
w_class = 1.0
|
||||
throwforce = 0
|
||||
@@ -26,126 +22,68 @@
|
||||
origin_tech = "materials=1"
|
||||
attack_verb = list("attacked", "stabbed", "poked")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
var/datum/reagent/forkload //used to eat omelette
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/New()
|
||||
if (prob(60))
|
||||
src.pixel_y = rand(0, 4)
|
||||
return
|
||||
|
||||
/*
|
||||
* Spoons
|
||||
*/
|
||||
/obj/item/weapon/kitchen/utensil/spoon
|
||||
name = "spoon"
|
||||
desc = "SPOON!"
|
||||
icon_state = "spoon"
|
||||
attack_verb = list("attacked", "poked")
|
||||
|
||||
/*
|
||||
* Forks
|
||||
*/
|
||||
/obj/item/weapon/kitchen/utensil/fork
|
||||
name = "fork"
|
||||
desc = "Pointy."
|
||||
icon_state = "fork"
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/fork/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
/obj/item/weapon/kitchen/fork/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
|
||||
return ..()
|
||||
|
||||
if (src.icon_state == "forkloaded") //This is a poor way of handling it, but a proper rewrite of the fork to allow for a more varied foodening can happen when I'm in the mood. --NEO
|
||||
if(M == user)
|
||||
M.visible_message("<span class='notice'>[user] eats a delicious forkful of omelette!</span>")
|
||||
M.reagents.add_reagent("nutriment", 1)
|
||||
else
|
||||
M.visible_message("<span class='notice'>[user] feeds [M] a delicious forkful of omelette!</span>")
|
||||
M.reagents.add_reagent("nutriment", 1)
|
||||
src.icon_state = "fork"
|
||||
return
|
||||
else
|
||||
if(user.zone_sel.selecting == "mouth")
|
||||
if(forkload)
|
||||
if(M == user)
|
||||
M.visible_message("<span class='notice'>[user] eats a delicious forkful of omelette!</span>")
|
||||
M.reagents.add_reagent(forkload.id, 1)
|
||||
else
|
||||
M.visible_message("<span class='notice'>[user] feeds [M] a delicious forkful of omelette!</span>")
|
||||
M.reagents.add_reagent(forkload.id, 1)
|
||||
icon_state = "fork"
|
||||
forkload = null
|
||||
return
|
||||
else if(user.zone_sel.selecting == "eyes")
|
||||
if(user.disabilities & CLUMSY && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Knives
|
||||
*/
|
||||
/obj/item/weapon/kitchen/utensil/knife
|
||||
name = "knife"
|
||||
desc = "Can cut through any food."
|
||||
icon_state = "knife"
|
||||
force = 10.0
|
||||
throwforce = 10.0
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/knife/suicide_act(mob/user)
|
||||
user.visible_message(pick("<span class='suicide'>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/knife/attack(target, mob/living/carbon/human/user)
|
||||
if(istype(user) && user.disabilities & CLUMSY && prob(50))
|
||||
user << "<span class='danger'>You accidentally cut yourself with \the [src].</span>"
|
||||
user.take_organ_damage(20)
|
||||
return
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Kitchen knives
|
||||
*/
|
||||
/obj/item/weapon/kitchenknife
|
||||
/obj/item/weapon/kitchen/knife
|
||||
name = "kitchen knife"
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "knife"
|
||||
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
|
||||
flags = CONDUCT
|
||||
force = 10.0
|
||||
w_class = 3.0
|
||||
w_class = 2.0
|
||||
throwforce = 10.0
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
throw_speed = 3
|
||||
throw_range = 6
|
||||
m_amt = 12000
|
||||
origin_tech = "materials=1"
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
|
||||
/obj/item/weapon/kitchenknife/suicide_act(mob/user)
|
||||
/obj/item/weapon/kitchen/knife/suicide_act(mob/user)
|
||||
user.visible_message(pick("<span class='suicide'>[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.</span>", \
|
||||
"<span class='suicide'>[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.</span>"))
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/weapon/kitchenknife/ritual
|
||||
/obj/item/weapon/kitchen/knife/ritual
|
||||
name = "ritual knife"
|
||||
desc = "The unearthly energies that once powered this blade are now dormant."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "render"
|
||||
w_class = 3.0
|
||||
|
||||
/*
|
||||
* Bucher's cleaver
|
||||
*/
|
||||
/obj/item/weapon/kitchenknife/butcher
|
||||
/obj/item/weapon/kitchen/knife/butcher
|
||||
name = "butcher's cleaver"
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "butch"
|
||||
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
|
||||
flags = CONDUCT
|
||||
force = 15.0
|
||||
w_class = 3.0
|
||||
throwforce = 8.0
|
||||
throw_speed = 3
|
||||
throw_range = 6
|
||||
m_amt = 12000
|
||||
origin_tech = "materials=1"
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
|
||||
/*
|
||||
* Rolling Pins
|
||||
*/
|
||||
w_class = 3.0
|
||||
|
||||
/obj/item/weapon/kitchen/rollingpin
|
||||
name = "rolling pin"
|
||||
@@ -158,4 +96,4 @@
|
||||
w_class = 3.0
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
||||
|
||||
/* Trays moved to /obj/item/weapon/storage/bag */
|
||||
/* Trays moved to /obj/item/weapon/storage/bag */
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
/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")
|
||||
if(safety == "Abort" || !in_range(src, user) || !src || !W)
|
||||
if(safety == "Abort" || !in_range(src, user) || !src || !W || user.incapacitated())
|
||||
return
|
||||
investigate_log("has become a singularity. Caused by [user.key]","singulo")
|
||||
user << "<span class='danger'>The Bluespace interfaces of the two devices catastrophically malfunction!</span>"
|
||||
|
||||
@@ -35,8 +35,85 @@
|
||||
new /obj/item/stack/spacecash(src)
|
||||
new /obj/item/stack/spacecash(src)
|
||||
|
||||
/obj/item/weapon/storage/book/bible/attack_self(mob/user)
|
||||
return
|
||||
//Pretty bible names
|
||||
var/global/list/biblenames = list("Bible", "Quran", "Scrapbook", "Burning Bible", "Clown Bible", "Banana Bible", "Creeper Bible", "White Bible", "Holy Light", "The God Delusion", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "Melted Bible", "Necronomicon")
|
||||
|
||||
//Bible iconstates
|
||||
var/global/list/biblestates = list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon")
|
||||
|
||||
//Bible itemstates
|
||||
var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "bible", "bible", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon")
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/storage/book/bible/attack_self(mob/living/carbon/human/H)
|
||||
if(!istype(H))
|
||||
return
|
||||
if(ticker && !ticker.Bible_icon_state && H.job == "Chaplain")
|
||||
//Open bible selection
|
||||
var/dat = "<html><head><title>Pick Bible Style</title></head><body><center><h2>Pick a bible style</h2></center><table>"
|
||||
|
||||
var/i
|
||||
for(i = 1, i < biblestates.len, i++)
|
||||
var/icon/bibleicon = icon('icons/obj/storage.dmi', biblestates[i])
|
||||
|
||||
var/nicename = biblenames[i]
|
||||
H << browse_rsc(bibleicon, nicename)
|
||||
dat += {"<tr><td><img src="[nicename]"></td><td><a href="?src=\ref[src];seticon=[i]">[nicename]</a></td></tr>"}
|
||||
|
||||
dat += "</table></body></html>"
|
||||
|
||||
H << browse(dat, "window=editicon;can_close=0;can_minimize=0;size=250x650")
|
||||
|
||||
/obj/item/weapon/storage/book/bible/proc/setupbiblespecifics(var/obj/item/weapon/storage/book/bible/B, var/mob/living/carbon/human/H)
|
||||
switch(B.icon_state)
|
||||
if("honk1","honk2")
|
||||
new /obj/item/weapon/grown/bananapeel(B)
|
||||
new /obj/item/weapon/grown/bananapeel(B)
|
||||
|
||||
if(B.icon_state == "honk1")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
|
||||
if("bible")
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.dir = 2
|
||||
if("koran")
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.dir = 4
|
||||
if("scientology")
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.dir = 8
|
||||
if("athiest")
|
||||
for(var/area/chapel/main/A in world)
|
||||
for(var/turf/T in A.contents)
|
||||
if(T.icon_state == "carpetsymbol")
|
||||
T.dir = 10
|
||||
|
||||
/obj/item/weapon/storage/book/bible/Topic(href, href_list)
|
||||
if(href_list["seticon"])
|
||||
var/iconi = text2num(href_list["seticon"])
|
||||
|
||||
var/biblename = biblenames[iconi]
|
||||
var/obj/item/weapon/storage/book/bible/B = locate(href_list["src"])
|
||||
|
||||
B.icon_state = biblestates[iconi]
|
||||
B.item_state = bibleitemstates[iconi]
|
||||
|
||||
//Set biblespecific chapels
|
||||
setupbiblespecifics(B, usr)
|
||||
|
||||
if(ticker)
|
||||
ticker.Bible_icon_state = B.icon_state
|
||||
ticker.Bible_item_state = B.item_state
|
||||
feedback_set_details("religion_book","[biblename]")
|
||||
|
||||
usr << browse(null, "window=editicon") // Close window
|
||||
|
||||
/obj/item/weapon/storage/book/bible/proc/bless(mob/living/carbon/M as mob)
|
||||
if(ishuman(M))
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
new /obj/item/clothing/mask/gas/voice(src)
|
||||
new /obj/item/weapon/card/id/syndicate(src)
|
||||
new /obj/item/weapon/card/id/syndicate(src)
|
||||
new /obj/item/clothing/shoes/syndigaloshes(src)
|
||||
new /obj/item/clothing/shoes/sneakers/syndigaloshes(src)
|
||||
new /obj/item/device/camera_bug(src)
|
||||
return
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
new /obj/item/weapon/melee/energy/sword/saber(src)
|
||||
new /obj/item/clothing/glasses/thermal/syndi(src)
|
||||
new /obj/item/weapon/card/emag(src)
|
||||
new /obj/item/clothing/shoes/syndigaloshes(src)
|
||||
new /obj/item/clothing/shoes/sneakers/syndigaloshes(src)
|
||||
return
|
||||
|
||||
if("implant")
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#define TANK_MAX_RELEASE_PRESSURE (3*ONE_ATMOSPHERE)
|
||||
#define TANK_DEFAULT_RELEASE_PRESSURE (ONE_ATMOSPHERE*O2STANDARD)
|
||||
|
||||
/obj/item/weapon/tank
|
||||
name = "tank"
|
||||
icon = 'icons/obj/tank.dmi'
|
||||
@@ -90,24 +93,54 @@
|
||||
/obj/item/weapon/tank/attack_self(mob/user as mob)
|
||||
if (!(src.air_contents))
|
||||
return
|
||||
user.set_machine(src)
|
||||
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/weapon/tank/ui_interact(mob/user, ui_key = "main")
|
||||
var/mob/living/carbon/location = null
|
||||
|
||||
if(istype(loc, /mob/living/carbon))
|
||||
location = loc
|
||||
else if(istype(loc.loc, /mob/living/carbon))
|
||||
location = loc.loc
|
||||
|
||||
var/using_internal
|
||||
if(istype(loc,/mob/living/carbon))
|
||||
var/mob/living/carbon/location = loc
|
||||
if(istype(location))
|
||||
if(location.internal==src)
|
||||
using_internal = 1
|
||||
|
||||
var/message = {"
|
||||
<b>Tank</b><BR>
|
||||
<FONT color='blue'><b>Tank Pressure:</b> [air_contents.return_pressure()]</FONT><BR>
|
||||
<BR>
|
||||
<b>Mask Release Pressure:</b> <A href='?src=\ref[src];dist_p=-5'>-</A> <A href='?src=\ref[src];dist_p=-1'>-</A> [distribute_pressure] <A href='?src=\ref[src];dist_p=1'>+</A> <A href='?src=\ref[src];dist_p=5'>+</A><BR>
|
||||
<b>Mask Release Valve:</b> <A href='?src=\ref[src];stat=1'>[using_internal?("Open"):("Closed")]</A>
|
||||
"}
|
||||
user << browse(message, "window=tank;size=600x300")
|
||||
onclose(user, "tank")
|
||||
return
|
||||
// this is the data which will be sent to the ui
|
||||
var/data = list()
|
||||
data["tankPressure"] = round(air_contents.return_pressure() ? air_contents.return_pressure() : 0)
|
||||
data["releasePressure"] = round(distribute_pressure ? distribute_pressure : 0)
|
||||
data["defaultReleasePressure"] = round(TANK_DEFAULT_RELEASE_PRESSURE)
|
||||
data["maxReleasePressure"] = round(TANK_MAX_RELEASE_PRESSURE)
|
||||
data["valveOpen"] = using_internal ? 1 : 0
|
||||
|
||||
data["maskConnected"] = 0
|
||||
|
||||
if(istype(location))
|
||||
var/mask_check = 0
|
||||
|
||||
if(location.internal == src) // if tank is current internal
|
||||
mask_check = 1
|
||||
else if(src in location) // or if tank is in the mobs possession
|
||||
if(!location.internal) // and they do not have any active internals
|
||||
mask_check = 1
|
||||
|
||||
if(mask_check)
|
||||
if(location.wear_mask && (location.wear_mask.flags & MASKINTERNALS))
|
||||
data["maskConnected"] = 1
|
||||
|
||||
var/datum/nanoui/ui = SSnano.get_open_ui(user, src, ui_key)
|
||||
if (!ui)
|
||||
ui = new /datum/nanoui(user, src, ui_key, "tanks.tmpl", "Tank", 500, 300)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
else
|
||||
ui.push_data(data)
|
||||
|
||||
|
||||
/obj/item/weapon/tank/Topic(href, href_list)
|
||||
..()
|
||||
@@ -116,8 +149,13 @@
|
||||
if (src.loc == usr)
|
||||
usr.set_machine(src)
|
||||
if (href_list["dist_p"])
|
||||
var/cp = text2num(href_list["dist_p"])
|
||||
src.distribute_pressure += cp
|
||||
if (href_list["dist_p"] == "reset")
|
||||
src.distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE
|
||||
else if (href_list["dist_p"] == "max")
|
||||
src.distribute_pressure = TANK_MAX_RELEASE_PRESSURE
|
||||
else
|
||||
var/cp = text2num(href_list["dist_p"])
|
||||
src.distribute_pressure += cp
|
||||
src.distribute_pressure = min(max(round(src.distribute_pressure), 0), 3*ONE_ATMOSPHERE)
|
||||
if (href_list["stat"])
|
||||
if(istype(loc,/mob/living/carbon))
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
/obj/item/weapon/vending_refill/autodrobe
|
||||
machine_name = "AutoDrobe"
|
||||
icon_state = "refill_costume"
|
||||
charges = 26// of 77
|
||||
charges = 29// of 87
|
||||
|
||||
/obj/item/weapon/vending_refill/clothing
|
||||
machine_name = "ClothesMate"
|
||||
|
||||
Reference in New Issue
Block a user