mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 12:35:33 +01:00
Conflict fixing
This commit is contained in:
@@ -22,12 +22,12 @@
|
||||
F << "<small>[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z])</small> || [src] [message]<br>"
|
||||
|
||||
//ADMINVERBS
|
||||
/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity", "records", "cargo") )
|
||||
/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity", "records", "cargo", "supermatter") )
|
||||
set name = "Investigate"
|
||||
set category = "Admin"
|
||||
if(!holder) return
|
||||
switch(subject)
|
||||
if("singulo", "ntsl", "wires", "telesci", "gravity", "records", "cargo") //general one-round-only stuff
|
||||
if("singulo", "ntsl", "wires", "telesci", "gravity", "records", "cargo", "supermatter") //general one-round-only stuff
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
|
||||
@@ -847,7 +847,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
|
||||
if("centcom commander")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor(M), slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat/swat(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
|
||||
M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears)
|
||||
@@ -989,7 +989,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
spawn(30)
|
||||
for(var/obj/machinery/the_singularitygen/G in world)
|
||||
if(G.anchored)
|
||||
var/obj/machinery/singularity/S = new /obj/machinery/singularity(get_turf(G), 50)
|
||||
var/obj/singularity/S = new /obj/singularity(get_turf(G), 50)
|
||||
// qdel(G)
|
||||
S.energy = 1750
|
||||
S.current_size = 7
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set name = "Possess Obj"
|
||||
set category = "Object"
|
||||
|
||||
if(istype(O,/obj/machinery/singularity))
|
||||
if(istype(O,/obj/singularity))
|
||||
if(config.forbid_singulo_possession)
|
||||
usr << "It is forbidden to possess singularities."
|
||||
return
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
/obj/effect/landmark/corpse/commander
|
||||
name = "Commander"
|
||||
corpseuniform = /obj/item/clothing/under/rank/centcom_commander
|
||||
corpsesuit = /obj/item/clothing/suit/armor/bulletproof
|
||||
corpsesuit = /obj/item/clothing/suit/armor
|
||||
corpseradio = /obj/item/device/radio/headset/heads/captain
|
||||
corpseglasses = /obj/item/clothing/glasses/eyepatch
|
||||
corpsemask = /obj/item/clothing/mask/cigarette/cigar/cohiba
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
//SS13 Optimized Map loader
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
//global datum that will preload variables on atoms instanciation
|
||||
var/global/dmm_suite/preloader/_preloader = null
|
||||
|
||||
|
||||
/**
|
||||
* Construct the model map and control the loading process
|
||||
@@ -163,7 +166,7 @@
|
||||
//first instance the /area and remove it from the members list
|
||||
index = members.len
|
||||
var/atom/instance
|
||||
var/dmm_suite/preloader/_preloader = new(members_attributes[index])//preloader for assigning set variables on atom creation
|
||||
_preloader = new(members_attributes[index])//preloader for assigning set variables on atom creation
|
||||
|
||||
instance = locate(members[index])
|
||||
instance.contents.Add(locate(xcrd,ycrd,zcrd))
|
||||
@@ -191,34 +194,6 @@
|
||||
T = UT
|
||||
index++
|
||||
|
||||
|
||||
//Replace the previous part of the code with this if it's unsafe to assume tiles have ALWAYS an /area AND a /turf
|
||||
/*while(members.len > 0)
|
||||
var/length = members.len
|
||||
var/member = members[length]
|
||||
|
||||
if(ispath(member,/area))
|
||||
var/atom/instance
|
||||
var/dmm_suite/preloader/_preloader = new(members_attributes[length])
|
||||
|
||||
instance = locate(member)
|
||||
instance.contents.Add(locate(xcrd,ycrd,zcrd))
|
||||
|
||||
if(_preloader && instance)
|
||||
_preloader.load(instance)
|
||||
|
||||
members.Remove(member)
|
||||
continue
|
||||
|
||||
else if(ispath(member,/turf))
|
||||
instance_atom(member,members_attributes[length],xcrd,ycrd,zcrd)
|
||||
members.Remove(member)
|
||||
continue
|
||||
|
||||
else
|
||||
break
|
||||
*/
|
||||
|
||||
//finally instance all remainings objects/mobs
|
||||
for(index=1,index < first_turf_index,index++)
|
||||
instance_atom(members[index],members_attributes[index],xcrd,ycrd,zcrd)
|
||||
@@ -230,11 +205,11 @@
|
||||
//Instance an atom at (x,y,z) and gives it the variables in attributes
|
||||
/dmm_suite/proc/instance_atom(var/path,var/list/attributes, var/x, var/y, var/z)
|
||||
var/atom/instance
|
||||
var/dmm_suite/preloader/_preloader = new(attributes)
|
||||
_preloader = new(attributes, path)
|
||||
|
||||
instance = new path (locate(x,y,z), _preloader)//first preloader pass
|
||||
instance = new path (locate(x,y,z))//first preloader pass
|
||||
|
||||
if(_preloader && instance)//second preloader pass, as some variables may have been reset/changed by New()
|
||||
if(_preloader && instance)//second preloader pass, for those atoms that don't ..() in New()
|
||||
_preloader.load(instance)
|
||||
|
||||
return instance
|
||||
@@ -242,9 +217,9 @@
|
||||
//text trimming (both directions) helper proc
|
||||
//optionally removes quotes before and after the text (for variable name)
|
||||
/dmm_suite/proc/trim_text(var/what as text,var/trim_quotes=0)
|
||||
while(length(what) && (findtext(what," ",1,2)))// || findtext(what,quote,1,2)))
|
||||
while(length(what) && (findtext(what," ",1,2)))
|
||||
what=copytext(what,2,0)
|
||||
while(length(what) && (findtext(what," ",length(what),0)))// || findtext(what,quote,length(what),0)))
|
||||
while(length(what) && (findtext(what," ",length(what),0)))
|
||||
what=copytext(what,1,length(what))
|
||||
if(trim_quotes)
|
||||
while(length(what) && (findtext(what,quote,1,2)))
|
||||
@@ -298,14 +273,18 @@
|
||||
else if(isnum(text2num(trim_right)))
|
||||
trim_right = text2num(trim_right)
|
||||
|
||||
//Check for file
|
||||
else if(copytext(trim_right,1,2) == "'")
|
||||
trim_right = file(copytext(trim_right,2,length(trim_right)))
|
||||
//Check for null
|
||||
else if(trim_right == "null")
|
||||
trim_right = null
|
||||
|
||||
//Check for list
|
||||
else if(copytext(trim_right,1,5) == "list")
|
||||
trim_right = text2list(copytext(trim_right,6,length(trim_right)))
|
||||
|
||||
//Check for file
|
||||
else if(copytext(trim_right,1,2) == "'")
|
||||
trim_right = file(copytext(trim_right,2,length(trim_right)))
|
||||
|
||||
to_return[trim_left] = trim_right
|
||||
|
||||
else//simple var
|
||||
@@ -323,10 +302,11 @@
|
||||
placed.opacity = 1
|
||||
placed.underlays += turfs_underlays
|
||||
|
||||
//atom creation method that preloads variables before creation
|
||||
/atom/New(atom/loc, dmm_suite/preloader/_dmm_preloader)
|
||||
if(istype(_dmm_preloader, /dmm_suite/preloader))
|
||||
_dmm_preloader.load(src)
|
||||
//atom creation method that preloads variables at creation
|
||||
/atom/New()
|
||||
if(_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
|
||||
_preloader.load(src)
|
||||
|
||||
. = ..()
|
||||
|
||||
//////////////////
|
||||
@@ -336,12 +316,15 @@
|
||||
/dmm_suite/preloader
|
||||
parent_type = /datum
|
||||
var/list/attributes
|
||||
var/target_path
|
||||
|
||||
/dmm_suite/preloader/New(list/the_attributes)
|
||||
/dmm_suite/preloader/New(var/list/the_attributes, var/path)
|
||||
.=..()
|
||||
if(!the_attributes.len)
|
||||
Del()
|
||||
return
|
||||
attributes = the_attributes
|
||||
target_path = path
|
||||
|
||||
/dmm_suite/preloader/proc/load(atom/what)
|
||||
for(var/attribute in attributes)
|
||||
|
||||
@@ -22,15 +22,15 @@
|
||||
|
||||
//Academy Items
|
||||
|
||||
/obj/machinery/singularity/academy
|
||||
/obj/singularity/academy
|
||||
dissipate = 0
|
||||
move_self = 0
|
||||
grav_pull = 1
|
||||
|
||||
/obj/machinery/singularity/academy/admin_investigate_setup()
|
||||
/obj/singularity/academy/admin_investigate_setup()
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/academy/process()
|
||||
/obj/singularity/academy/process()
|
||||
eat()
|
||||
if(prob(1))
|
||||
mezzer()
|
||||
|
||||
@@ -159,21 +159,21 @@ var/sc_safecode5 = "[rand(0,9)]"
|
||||
/*
|
||||
* Modified Nar-Sie
|
||||
*/
|
||||
/obj/machinery/singularity/narsie/sc_Narsie
|
||||
/obj/singularity/narsie/sc_Narsie
|
||||
desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible."
|
||||
move_self = 0 //Contianed narsie does not move!
|
||||
grav_pull = 0 //Contained narsie does not pull stuff in!
|
||||
|
||||
var/uneatable = list(/turf/space, /obj/effect/overlay, /mob/living/simple_animal/construct)
|
||||
//Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment
|
||||
/obj/machinery/singularity/narsie/sc_Narsie/admin_investigate_setup()
|
||||
/obj/singularity/narsie/sc_Narsie/admin_investigate_setup()
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/narsie/sc_Narsie/process()
|
||||
/obj/singularity/narsie/sc_Narsie/process()
|
||||
eat()
|
||||
if(prob(25))
|
||||
mezzer()
|
||||
|
||||
/obj/machinery/singularity/narsie/sc_Narsie/consume(var/atom/A)
|
||||
/obj/singularity/narsie/sc_Narsie/consume(var/atom/A)
|
||||
if(is_type_in_list(A, uneatable))
|
||||
return 0
|
||||
if (istype(A,/mob/living))
|
||||
@@ -194,5 +194,5 @@ var/sc_safecode5 = "[rand(0,9)]"
|
||||
T.ChangeTurf(/turf/space)
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/narsie/sc_Narsie/ex_act()
|
||||
/obj/singularity/narsie/sc_Narsie/ex_act()
|
||||
return
|
||||
@@ -348,7 +348,7 @@ atom/proc/generate_female_clothing(index,t_color,icon)
|
||||
flags |= (visor_flags)
|
||||
flags_inv |= (visor_flags_inv)
|
||||
icon_state = initial(icon_state)
|
||||
usr << "You pull the [src] down."
|
||||
usr << "You pull \the [src] down."
|
||||
flash_protect = initial(flash_protect)
|
||||
tint = initial(tint)
|
||||
else
|
||||
@@ -356,7 +356,7 @@ atom/proc/generate_female_clothing(index,t_color,icon)
|
||||
flags &= ~(visor_flags)
|
||||
flags_inv &= ~(visor_flags_inv)
|
||||
icon_state = "[initial(icon_state)]up"
|
||||
usr << "You push the [src] up."
|
||||
usr << "You push \the [src] up."
|
||||
flash_protect = 0
|
||||
tint = 0
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
H.add_hud_to(user)
|
||||
|
||||
/obj/item/clothing/glasses/hud/dropped(mob/living/carbon/human/user)
|
||||
if(user.glasses == src)
|
||||
if(istype(user) && user.glasses == src)
|
||||
var/datum/atom_hud/H = huds[hud_type]
|
||||
H.remove_hud_from(user)
|
||||
|
||||
|
||||
@@ -46,65 +46,39 @@
|
||||
if(!proximity) // todo: you could add ninja stars or computer hacking here
|
||||
return 0
|
||||
|
||||
// Move an AI into and out of things
|
||||
if(istype(A,/mob/living/silicon/ai))
|
||||
if(suit.s_control)
|
||||
A.add_fingerprint(H)
|
||||
suit.transfer_ai("AICORE", "NINJASUIT", A, H)
|
||||
return 1
|
||||
else
|
||||
H << "<span class='userdanger'>ERROR</span>: \black Remote access channel disabled."
|
||||
return 0
|
||||
|
||||
if(istype(A,/obj/structure/AIcore/deactivated))
|
||||
if(suit.s_control)
|
||||
A.add_fingerprint(H)
|
||||
suit.transfer_ai("INACTIVE","NINJASUIT",A, H)
|
||||
return 1
|
||||
else
|
||||
H << "<span class='userdanger'>ERROR</span>: \black Remote access channel disabled."
|
||||
return 0
|
||||
if(istype(A,/obj/machinery/computer/aifixer))
|
||||
if(suit.s_control)
|
||||
A.add_fingerprint(H)
|
||||
suit.transfer_ai("AIFIXER","NINJASUIT",A, H)
|
||||
return 1
|
||||
else
|
||||
H << "<span class='userdanger'>ERROR</span>: \black Remote access channel disabled."
|
||||
return 0
|
||||
A.add_fingerprint(H)
|
||||
|
||||
// steal energy from powered things
|
||||
if(istype(A,/mob/living/silicon/robot))
|
||||
A.add_fingerprint(H)
|
||||
drain("CYBORG",A,suit)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/machinery/power/apc))
|
||||
A.add_fingerprint(H)
|
||||
drain("APC",A,suit)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/structure/cable))
|
||||
A.add_fingerprint(H)
|
||||
drain("WIRE",A,suit)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/structure/grille))
|
||||
var/obj/structure/cable/C = locate() in A.loc
|
||||
if(C)
|
||||
drain("WIRE",C,suit)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/machinery/power/smes))
|
||||
A.add_fingerprint(H)
|
||||
drain("SMES",A,suit)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/mecha))
|
||||
A.add_fingerprint(H)
|
||||
drain("MECHA",A,suit)
|
||||
return 1
|
||||
|
||||
// download research
|
||||
if(istype(A,/obj/machinery/computer/rdconsole))
|
||||
A.add_fingerprint(H)
|
||||
if(istype(A,/obj/machinery/computer/rdconsole)) // download research
|
||||
drain("RESEARCH",A,suit)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/machinery/r_n_d/server))
|
||||
A.add_fingerprint(H)
|
||||
var/obj/machinery/r_n_d/server/S = A
|
||||
@@ -116,3 +90,15 @@
|
||||
drain("RESEARCH",A,suit)
|
||||
return 1
|
||||
|
||||
//do AI transfers
|
||||
if(istype(A,/mob/living/silicon/ai))
|
||||
suit.NAI.transfer_ai("AICORE", "AICARD", A, H)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/structure/AIcore/deactivated))
|
||||
suit.NAI.transfer_ai("INACTIVE","AICARD",A, H)
|
||||
return 1
|
||||
|
||||
if(istype(A,/obj/machinery/computer/aifixer))
|
||||
suit.NAI.transfer_ai("AIFIXER","AICARD",A, H)
|
||||
return 1
|
||||
|
||||
@@ -32,14 +32,14 @@
|
||||
flags |= (visor_flags)
|
||||
flags_inv |= (visor_flags_inv)
|
||||
icon_state = initial(icon_state)
|
||||
usr << "You pull the [src] down."
|
||||
usr << "You pull \the [src] down."
|
||||
usr.update_inv_head(0)
|
||||
else
|
||||
up = !up
|
||||
flags &= ~(visor_flags)
|
||||
flags_inv &= ~(visor_flags_inv)
|
||||
icon_state = "[initial(icon_state)]up"
|
||||
usr << "You push the [src] up."
|
||||
usr << "You push \the [src] up."
|
||||
usr.update_inv_head(0)
|
||||
|
||||
/obj/item/clothing/head/helmet/swat
|
||||
@@ -54,6 +54,13 @@
|
||||
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
|
||||
strip_delay = 80
|
||||
|
||||
/obj/item/clothing/head/helmet/bulletproof
|
||||
name = "tactical helmet"
|
||||
desc = "An advanced helmet designed to protect against traditional projectile weaponry and explosives."
|
||||
icon_state = "bulletproof"
|
||||
armor = list(melee = 25, bullet = 60, laser = 25, energy = 10, bomb = 40, bio = 0, rad = 0)
|
||||
strip_delay = 70
|
||||
|
||||
/obj/item/clothing/head/helmet/swat/syndicate
|
||||
name = "blood-red helmet"
|
||||
desc = "An extremely robust, space-worthy helmet that lacks a visor to allow for goggle usage underneath. Property of Gorlex Marauders."
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
name = "detective's fedora"
|
||||
desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat."
|
||||
icon_state = "detective"
|
||||
allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen)
|
||||
armor = list(melee = 50, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
//Mime
|
||||
@@ -74,16 +73,11 @@
|
||||
armor = list(melee = 60, bullet = 5, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
strip_delay = 60
|
||||
|
||||
/obj/item/clothing/head/warden/drill
|
||||
name = "warden's drill hat"
|
||||
desc = "A robust drill hat for the Warden. For keeping the officers and prisoners in line."
|
||||
icon_state = "wardendrill"
|
||||
|
||||
/obj/item/clothing/head/beret/sec
|
||||
name = "security beret"
|
||||
desc = "A robust beret with the security insignia emblazoned on it. For officers that are more inclined towards style than safety."
|
||||
desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficent protection."
|
||||
icon_state = "beret_badge"
|
||||
armor = list(melee = 30, bullet = 5, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 60
|
||||
|
||||
/obj/item/clothing/head/beret/sec/navyhos
|
||||
@@ -95,6 +89,8 @@
|
||||
name = "warden's beret"
|
||||
desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class."
|
||||
icon_state = "wardenberet"
|
||||
armor = list(melee = 60, bullet = 5, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
strip_delay = 60
|
||||
|
||||
/obj/item/clothing/head/beret/sec/navyofficer
|
||||
desc = "A special beret with the security insignia emblazoned on it. For officers with class."
|
||||
|
||||
@@ -90,5 +90,11 @@
|
||||
desc = "It's a robust baseball hat in tasteful red colour."
|
||||
icon_state = "secsoft"
|
||||
item_color = "sec"
|
||||
armor = list(melee = 30, bullet = 5, laser = 5, energy = 15, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 60
|
||||
armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 60
|
||||
|
||||
/obj/item/clothing/head/soft/emt
|
||||
name = "EMT cap"
|
||||
desc = "It's a baseball hat with a dark turquoise color and a reflective cross on the top."
|
||||
icon_state = "emtsoft"
|
||||
item_color = "emtsoft"
|
||||
@@ -235,12 +235,12 @@
|
||||
temp_message[H] = ninjaspeak(temp_message[H])
|
||||
pick_list -= H
|
||||
message = list2text(temp_message, " ")
|
||||
message = replacetext(message, "o", "¤")
|
||||
message = replacetext(message, "p", "þ")
|
||||
message = replacetext(message, "l", "£")
|
||||
message = replacetext(message, "s", "§")
|
||||
message = replacetext(message, "u", "µ")
|
||||
message = replacetext(message, "b", "ß")
|
||||
message = replacetext(message, "o", "?")
|
||||
message = replacetext(message, "p", "?")
|
||||
message = replacetext(message, "l", "?")
|
||||
message = replacetext(message, "s", "?")
|
||||
message = replacetext(message, "u", "?")
|
||||
message = replacetext(message, "b", "?")
|
||||
return message
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
name = "ninja hood"
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja_mask"
|
||||
allowed = list(/obj/item/weapon/stock_parts/cell)
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25)
|
||||
strip_delay = 12
|
||||
unacidable = 1
|
||||
@@ -56,8 +55,11 @@
|
||||
var/a_boost = 3.0//Number of adrenaline boosters.
|
||||
|
||||
//Onboard AI related variables.
|
||||
var/mob/living/silicon/ai/AI//If there is an AI inside the suit.
|
||||
|
||||
var/obj/item/device/aicard/NAI //Integrated intellicard.
|
||||
|
||||
var/obj/item/device/paicard/pai//A slot for a pAI device
|
||||
|
||||
var/obj/effect/overlay/hologram//Is the AI hologram on or off? Visible only to the wearer of the suit. This works by attaching an image to a blank overlay.
|
||||
var/flush = 0//If an AI purge is in progress.
|
||||
|
||||
var/s_control = 1//If user in control of the suit.
|
||||
|
||||
@@ -6,16 +6,24 @@
|
||||
heat_protection = CHEST|GROIN
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
strip_delay = 60
|
||||
put_on_delay = 60
|
||||
put_on_delay = 40
|
||||
|
||||
/obj/item/clothing/suit/armor/vest
|
||||
name = "armor"
|
||||
desc = "An armored vest that protects against some damage."
|
||||
desc = "A slim armored vest that protects against most types of damage."
|
||||
icon_state = "armor"
|
||||
item_state = "armor"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/alt
|
||||
name = "armor"
|
||||
desc = "An armored vest that protects against most types of damage. This is a civilian variant."
|
||||
icon_state = "armoralt"
|
||||
item_state = "armoralt"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/hos
|
||||
name = "armored greatcoat"
|
||||
desc = "A greatcoat enchanced with a special alloy for some protection and style for those with a commanding presence."
|
||||
@@ -27,7 +35,6 @@
|
||||
cold_protection = CHEST|GROIN|LEGS|ARMS
|
||||
heat_protection = CHEST|GROIN|LEGS|ARMS
|
||||
strip_delay = 80
|
||||
put_on_delay = 40
|
||||
|
||||
/obj/item/clothing/suit/armor/hos/trenchcoat
|
||||
name = "armored trenchoat"
|
||||
@@ -36,16 +43,21 @@
|
||||
item_state = "hostrench"
|
||||
flags_inv = 0
|
||||
strip_delay = 80
|
||||
put_on_delay = 40
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/warden
|
||||
name = "warden's jacket"
|
||||
desc = "An armored jacket with silver rank pips and livery."
|
||||
desc = "A navy-blue armored jacket with blue shoulder designations and '/Warden/' stitched into one of the chest pockets."
|
||||
icon_state = "warden_jacket"
|
||||
item_state = "armor"
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
cold_protection = CHEST|GROIN|ARMS|HANDS
|
||||
heat_protection = CHEST|GROIN|ARMS|HANDS
|
||||
strip_delay = 70
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/warden/alt
|
||||
name = "warden's armored jacket"
|
||||
desc = "A red jacket with silver rank pips and body armor strapped on top."
|
||||
icon_state = "warden_alt"
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/capcarapace
|
||||
name = "captain's carapace"
|
||||
@@ -61,36 +73,33 @@
|
||||
desc = "A suit of armor with heavy padding to protect against melee attacks. Looks like it might impair movement."
|
||||
icon_state = "riot"
|
||||
item_state = "swat_suit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 1
|
||||
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
strip_delay = 80
|
||||
put_on_delay = 80
|
||||
put_on_delay = 60
|
||||
|
||||
/obj/item/clothing/suit/armor/bulletproof
|
||||
name = "bulletproof vest"
|
||||
desc = "A vest that excels in protecting the wearer against high-velocity solid projectiles."
|
||||
name = "bulletproof armor"
|
||||
desc = "A bulletproof vest that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent."
|
||||
icon_state = "bulletproof"
|
||||
item_state = "armor"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 40
|
||||
put_on_delay = 40
|
||||
|
||||
armor = list(melee = 25, bullet = 80, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0)
|
||||
strip_delay = 70
|
||||
put_on_delay = 50
|
||||
|
||||
/obj/item/clothing/suit/armor/laserproof
|
||||
name = "ablative armor vest"
|
||||
desc = "A vest that excels in protecting the wearer against energy projectiles."
|
||||
desc = "A vest that excels in protecting the wearer against energy projectiles, as well as occasionally reflecting them."
|
||||
icon_state = "armor_reflec"
|
||||
item_state = "armor_reflec"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
|
||||
reflect_chance = 40
|
||||
strip_delay = 40
|
||||
put_on_delay = 40
|
||||
|
||||
/obj/item/clothing/suit/armor/laserproof/IsReflect(var/def_zone)
|
||||
var/hit_reflect_chance = reflect_chance
|
||||
@@ -99,7 +108,6 @@
|
||||
if (prob(hit_reflect_chance))
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/det_suit
|
||||
name = "armor"
|
||||
desc = "An armored vest with a detective's badge on it."
|
||||
|
||||
@@ -38,6 +38,11 @@
|
||||
icon_state = "magus"
|
||||
item_state = "magus"
|
||||
|
||||
/obj/item/clothing/head/wizard/santa
|
||||
name = "Santa's hat"
|
||||
desc = "Ho ho ho. Merrry X-mas!"
|
||||
icon_state = "santahat"
|
||||
flags = BLOCKHAIR
|
||||
|
||||
/obj/item/clothing/suit/wizrobe
|
||||
name = "wizard robe"
|
||||
@@ -86,6 +91,12 @@
|
||||
item_state = "magusred"
|
||||
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/santa
|
||||
name = "Santa's suit"
|
||||
desc = "Festive!"
|
||||
icon_state = "santa"
|
||||
item_state = "santa"
|
||||
|
||||
/obj/item/clothing/suit/wizrobe/fake
|
||||
name = "wizard robe"
|
||||
desc = "A rather dull blue robe meant to mimick real wizard robes."
|
||||
@@ -113,4 +124,4 @@
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
unacidable = 0
|
||||
unacidable = 0
|
||||
|
||||
@@ -8,21 +8,22 @@
|
||||
/*
|
||||
* Security
|
||||
*/
|
||||
/obj/item/clothing/under/rank/warden
|
||||
desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for more robust protection. It has the word \"Warden\" written on the shoulders."
|
||||
name = "warden's jumpsuit"
|
||||
icon_state = "warden"
|
||||
item_state = "r_suit"
|
||||
item_color = "warden"
|
||||
|
||||
/obj/item/clothing/under/rank/security
|
||||
name = "security suit"
|
||||
desc = "A formal security suit for officers complete with nanotrasen belt buckle."
|
||||
icon_state = "security"
|
||||
item_state = "gy_suit"
|
||||
item_color = "security"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 50
|
||||
|
||||
/obj/item/clothing/under/rank/security
|
||||
name = "security officer's jumpsuit"
|
||||
desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection."
|
||||
icon_state = "security"
|
||||
item_state = "r_suit"
|
||||
item_color = "secred"
|
||||
/obj/item/clothing/under/rank/warden
|
||||
name = "warden's suit"
|
||||
desc = "A formal security suit for the warden with blue desginations and '/Warden/' stiched into the shoulders."
|
||||
icon_state = "warden"
|
||||
item_state = "gy_suit"
|
||||
item_color = "warden"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 50
|
||||
|
||||
@@ -38,27 +39,25 @@
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 50
|
||||
|
||||
/obj/item/clothing/under/det/grey
|
||||
/obj/item/clothing/under/rank/det/grey
|
||||
name = "noir suit"
|
||||
desc = "A hard-boiled private investigator's grey suit, complete with tie clip."
|
||||
icon_state = "greydet"
|
||||
item_state = "greydet"
|
||||
item_color = "greydet"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/*
|
||||
* Head of Security
|
||||
*/
|
||||
/obj/item/clothing/under/rank/head_of_security
|
||||
desc = "It's a jumpsuit worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer."
|
||||
name = "head of security's jumpsuit"
|
||||
name = "head of security's suit"
|
||||
desc = "A security suit decorated for those few with the dedication to achieve the position of Head of Security."
|
||||
icon_state = "hos"
|
||||
item_state = "r_suit"
|
||||
item_color = "hosred"
|
||||
item_state = "gy_suit"
|
||||
item_color = "hos"
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
strip_delay = 60
|
||||
|
||||
|
||||
/*
|
||||
* Navy uniforms
|
||||
*/
|
||||
@@ -82,4 +81,4 @@
|
||||
name = "warden's uniform"
|
||||
icon_state = "wardenblueclothes"
|
||||
item_state = "wardenblueclothes"
|
||||
item_color = "wardenblueclothes"
|
||||
item_color = "wardenblueclothes"
|
||||
@@ -334,28 +334,28 @@
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/captainformal
|
||||
name = "captain's formal uniform"
|
||||
desc = "A captain's formal-wear, for special occasions."
|
||||
icon_state = "captain_formal"
|
||||
/obj/item/clothing/under/captainparade
|
||||
name = "captain's parade uniform"
|
||||
desc = "A captain's luxury-wear, for special occasions."
|
||||
icon_state = "captain_parade"
|
||||
item_state = "by_suit"
|
||||
item_color = "captain_formal"
|
||||
item_color = "captain_parade"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/hosformalmale
|
||||
name = "head of security's formal uniform"
|
||||
desc = "A male head of security's formal-wear, for special occasions."
|
||||
icon_state = "hos_formal_male"
|
||||
/obj/item/clothing/under/hosparademale
|
||||
name = "head of security's parade uniform"
|
||||
desc = "A male head of security's luxury-wear, for special occasions."
|
||||
icon_state = "hos_parade_male"
|
||||
item_state = "r_suit"
|
||||
item_color = "hos_formal_male"
|
||||
item_color = "hos_parade_male"
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/hosformalfem
|
||||
name = "head of security's formal uniform"
|
||||
desc = "A female head of security's formal-wear, for special occasions."
|
||||
icon_state = "hos_formal_fem"
|
||||
/obj/item/clothing/under/hosparadefem
|
||||
name = "head of security's parade uniform"
|
||||
desc = "A female head of security's luxury-wear, for special occasions."
|
||||
icon_state = "hos_parade_fem"
|
||||
item_state = "r_suit"
|
||||
item_color = "hos_formal_fem"
|
||||
item_color = "hos_parade_fem"
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
@@ -375,3 +375,50 @@
|
||||
item_color = "black_tango"
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/stripeddress
|
||||
name = "striped dress"
|
||||
desc = "Fashion in space."
|
||||
icon_state = "striped_dress"
|
||||
item_state = "stripeddress"
|
||||
item_color = "striped_dress"
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/sailordress
|
||||
name = "sailor dress"
|
||||
desc = "Formal wear for a leading lady."
|
||||
icon_state = "sailor_dress"
|
||||
item_state = "sailordress"
|
||||
item_color = "sailor_dress"
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/redeveninggown
|
||||
name = "red evening gown"
|
||||
desc = "Fancy dress for space bar singers."
|
||||
icon_state = "red_evening_gown"
|
||||
item_state = "redeveninggown"
|
||||
item_color = "red_evening_gown"
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/maid
|
||||
name = "maid costume"
|
||||
desc = "Maid in China."
|
||||
icon_state = "maid"
|
||||
item_state = "maid"
|
||||
item_color = "maid"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/janimaid
|
||||
name = "maid uniform"
|
||||
desc = "A simple maid uniform for housekeeping."
|
||||
icon_state = "janimaid"
|
||||
item_state = "janimaid"
|
||||
item_color = "janimaid"
|
||||
body_parts_covered = CHEST|GROIN
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
/obj/item/clothing/under/pants
|
||||
gender = PLURAL
|
||||
body_parts_covered = GROIN|LEGS
|
||||
fitted = 0
|
||||
can_adjust = 0
|
||||
|
||||
/obj/item/clothing/under/pants/classicjeans
|
||||
name = "classic jeans"
|
||||
desc = "You feel cooler already."
|
||||
icon_state = "jeansclassic"
|
||||
item_color = "jeansclassic"
|
||||
|
||||
/obj/item/clothing/under/pants/mustangjeans
|
||||
name = "Must Hang jeans"
|
||||
desc = "Made in the finest space jeans factory this side of Alpha Centauri."
|
||||
icon_state = "jeansmustang"
|
||||
item_color = "jeansmustang"
|
||||
|
||||
/obj/item/clothing/under/pants/blackjeans
|
||||
name = "black jeans"
|
||||
desc = "Only for those who can pull it off."
|
||||
icon_state = "jeansblack"
|
||||
item_color = "jeansblack"
|
||||
|
||||
/obj/item/clothing/under/pants/youngfolksjeans
|
||||
name = "Young Folks jeans"
|
||||
desc = "For those tired of boring old jeans. Relive the passion of your youth!"
|
||||
icon_state = "jeansyoungfolks"
|
||||
item_color = "jeansyoungfolks"
|
||||
|
||||
/obj/item/clothing/under/pants/white
|
||||
name = "white pants"
|
||||
desc = "Plain white pants. Boring."
|
||||
icon_state = "whitepants"
|
||||
item_color = "whitepants"
|
||||
|
||||
/obj/item/clothing/under/pants/red
|
||||
name = "red pants"
|
||||
desc = "Bright red pants. Overflowing with personality."
|
||||
icon_state = "redpants"
|
||||
item_color = "redpants"
|
||||
|
||||
/obj/item/clothing/under/pants/black
|
||||
name = "black pants"
|
||||
desc = "These pants are dark, like your soul."
|
||||
icon_state = "blackpants"
|
||||
item_color = "blackpants"
|
||||
|
||||
/obj/item/clothing/under/pants/tan
|
||||
name = "tan pants"
|
||||
desc = "Some tan pants. You look like a white collar worker with these on."
|
||||
icon_state = "tanpants"
|
||||
item_color = "tanpants"
|
||||
|
||||
/obj/item/clothing/under/pants/blue
|
||||
name = "blue pants"
|
||||
desc = "Stylish blue pants. These go well with a lot of clothes."
|
||||
icon_state = "bluepants"
|
||||
item_color = "bluepants"
|
||||
|
||||
/obj/item/clothing/under/pants/track
|
||||
name = "track pants"
|
||||
desc = "A pair of track pants, for the athletic."
|
||||
icon_state = "trackpants"
|
||||
item_color = "trackpants"
|
||||
|
||||
/obj/item/clothing/under/pants/jeans
|
||||
name = "jeans"
|
||||
desc = "A nondescript pair of tough blue jeans."
|
||||
icon_state = "jeans"
|
||||
item_color = "jeans"
|
||||
|
||||
/obj/item/clothing/under/pants/khaki
|
||||
name = "khaki pants"
|
||||
desc = "A pair of dust beige khaki pants."
|
||||
icon_state = "khaki"
|
||||
item_color = "khaki"
|
||||
|
||||
/obj/item/clothing/under/pants/camo
|
||||
name = "camo pants"
|
||||
desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station."
|
||||
icon_state = "camopants"
|
||||
item_color = "camopants"
|
||||
@@ -154,8 +154,8 @@
|
||||
/obj/item/clothing/tie/armband
|
||||
name = "red armband"
|
||||
desc = "An fancy red armband!"
|
||||
icon_state = "red"
|
||||
item_color = "red"
|
||||
icon_state = "redband"
|
||||
item_color = "redband"
|
||||
|
||||
/obj/item/clothing/tie/armband/deputy
|
||||
name = "security deputy armband"
|
||||
@@ -164,35 +164,116 @@
|
||||
/obj/item/clothing/tie/armband/cargo
|
||||
name = "cargo bay guard armband"
|
||||
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is brown."
|
||||
icon_state = "cargo"
|
||||
item_color = "cargo"
|
||||
icon_state = "cargoband"
|
||||
item_color = "cargoband"
|
||||
|
||||
/obj/item/clothing/tie/armband/engine
|
||||
name = "engineering guard armband"
|
||||
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is orange with a reflective strip!"
|
||||
icon_state = "engie"
|
||||
item_color = "engie"
|
||||
icon_state = "engieband"
|
||||
item_color = "engieband"
|
||||
|
||||
/obj/item/clothing/tie/armband/science
|
||||
name = "science guard armband"
|
||||
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is purple."
|
||||
icon_state = "rnd"
|
||||
item_color = "rnd"
|
||||
icon_state = "rndband"
|
||||
item_color = "rndband"
|
||||
|
||||
/obj/item/clothing/tie/armband/hydro
|
||||
name = "hydroponics guard armband"
|
||||
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is green and blue."
|
||||
icon_state = "hydro"
|
||||
item_color = "hydro"
|
||||
icon_state = "hydroband"
|
||||
item_color = "hydroband"
|
||||
|
||||
/obj/item/clothing/tie/armband/med
|
||||
name = "medical guard armband"
|
||||
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white."
|
||||
icon_state = "med"
|
||||
item_color = "med"
|
||||
icon_state = "medband"
|
||||
item_color = "medband"
|
||||
|
||||
/obj/item/clothing/tie/armband/medblue
|
||||
name = "medical guard armband"
|
||||
desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue."
|
||||
icon_state = "medblue"
|
||||
item_color = "medblue"
|
||||
icon_state = "medblueband"
|
||||
item_color = "medblueband"
|
||||
|
||||
///////////
|
||||
//SCARVES//
|
||||
///////////
|
||||
|
||||
/obj/item/clothing/tie/scarf
|
||||
name = "scarf"
|
||||
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
|
||||
|
||||
/obj/item/clothing/tie/scarf/red
|
||||
name = "red scarf"
|
||||
icon_state = "redscarf"
|
||||
item_color = "redscarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/green
|
||||
name = "green scarf"
|
||||
icon_state = "greenscarf"
|
||||
item_color = "greenscarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/darkblue
|
||||
name = "dark blue scarf"
|
||||
icon_state = "darkbluescarf"
|
||||
item_color = "darkbluescarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/purple
|
||||
name = "purple scarf"
|
||||
icon_state = "purplescarf"
|
||||
item_color = "purplescarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/yellow
|
||||
name = "yellow scarf"
|
||||
icon_state = "yellowscarf"
|
||||
item_color = "yellowscarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/orange
|
||||
name = "orange scarf"
|
||||
icon_state = "orangescarf"
|
||||
item_color = "orangescarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/lightblue
|
||||
name = "light blue scarf"
|
||||
icon_state = "lightbluescarf"
|
||||
item_color = "lightbluescarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/white
|
||||
name = "white scarf"
|
||||
icon_state = "whitescarf"
|
||||
item_color = "whitescarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/black
|
||||
name = "black scarf"
|
||||
icon_state = "blackscarf"
|
||||
item_color = "blackscarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/zebra
|
||||
name = "zebra scarf"
|
||||
icon_state = "zebrascarf"
|
||||
item_color = "zebrascarf"
|
||||
|
||||
/obj/item/clothing/tie/scarf/christmas
|
||||
name = "christmas scarf"
|
||||
icon_state = "christmasscarf"
|
||||
item_color = "christmasscarf"
|
||||
|
||||
//The three following scarves don't have the scarf subtype
|
||||
//This is because Ian can equip anything from that subtype
|
||||
//However, these 3 don't have corgi versions of their sprites
|
||||
/obj/item/clothing/tie/stripedredscarf
|
||||
name = "striped red scarf"
|
||||
icon_state = "stripedredscarf"
|
||||
item_color = "stripedredscarf"
|
||||
|
||||
/obj/item/clothing/tie/stripedgreenscarf
|
||||
name = "striped green scarf"
|
||||
icon_state = "stripedgreenscarf"
|
||||
item_color = "stripedgreenscarf"
|
||||
|
||||
/obj/item/clothing/tie/stripedbluescarf
|
||||
name = "striped blue scarf"
|
||||
icon_state = "stripedbluescarf"
|
||||
item_color = "stripedbluescarf"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/obj/item/robot_parts/r_leg = 1,
|
||||
/obj/item/stack/sheet/metal = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weapon/gun/energy/taser = 1,
|
||||
/obj/item/weapon/gun/energy/gun/advtaser = 1,
|
||||
/obj/item/weapon/stock_parts/cell = 1,
|
||||
/obj/item/device/assembly/prox_sensor = 1,
|
||||
/obj/item/robot_parts/r_arm = 1)
|
||||
@@ -117,6 +117,16 @@
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
|
||||
/datum/table_recipe/frag12
|
||||
name = "FRAG-12 Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/frag12
|
||||
reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/datum/reagent/glycerol = 5,
|
||||
/datum/reagent/toxin/acid = 5,
|
||||
/datum/reagent/toxin/acid/polyacid = 5,)
|
||||
tools = list(/obj/item/weapon/screwdriver)
|
||||
time = 5
|
||||
|
||||
/datum/table_recipe/ishotgun
|
||||
name = "Improvised Shotgun"
|
||||
result = /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised
|
||||
|
||||
@@ -77,4 +77,75 @@
|
||||
icon_state = "xmashat"
|
||||
desc = "A crappy paper hat that you are REQUIRED to wear."
|
||||
flags_inv = 0
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/datum/round_event_control/santa
|
||||
name = "Santa is coming to town! (Christmas)"
|
||||
holidayID = "Xmas"
|
||||
typepath = /datum/round_event/santa
|
||||
weight = 150
|
||||
max_occurrences = 1
|
||||
earliest_start = 20000
|
||||
|
||||
/datum/round_event/santa
|
||||
var/mob/living/carbon/human/santa //who is our santa?
|
||||
|
||||
/datum/round_event/santa/announce()
|
||||
priority_announce("Santa is coming to town!", "Unknown Transmission")
|
||||
|
||||
/datum/round_event/santa/start()
|
||||
for(var/mob/M in dead_mob_list)
|
||||
spawn(0)
|
||||
var/response = alert(M, "Santa is coming to town! Do you want to be santa?", "Ho ho ho!", "Yes", "No")
|
||||
if(response == "Yes" && M && M.client && M.stat == DEAD && !santa)
|
||||
santa = new /mob/living/carbon/human(pick(blobstart))
|
||||
M.mind.transfer_to(santa)
|
||||
santa.key = M.key
|
||||
|
||||
santa.real_name = "Santa Claus"
|
||||
santa.name = "Santa Claus"
|
||||
santa.mind.name = "Santa Claus"
|
||||
santa.mind.assigned_role = "Santa"
|
||||
santa.mind.special_role = "Santa"
|
||||
|
||||
santa.hair_style = "Long Hair"
|
||||
santa.facial_hair_style = "Full Beard"
|
||||
santa.hair_color = "FFF"
|
||||
santa.facial_hair_color = "FFF"
|
||||
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/under/color/red, slot_w_uniform)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/suit/space/santa, slot_wear_suit)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/head/santa, slot_head)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/mask/breath, slot_wear_mask)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/gloves/red, slot_gloves)
|
||||
santa.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/red, slot_shoes)
|
||||
santa.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen/double, slot_belt)
|
||||
santa.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain, slot_ears)
|
||||
santa.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/santabag, slot_back)
|
||||
santa.equip_to_slot_or_del(new /obj/item/device/flashlight, slot_r_store) //most blob spawn locations are really dark.
|
||||
|
||||
var/obj/item/weapon/card/id/gold/santacard = new(santa)
|
||||
santacard.update_label("Santa Claus", "Santa")
|
||||
var/datum/job/captain/J = new/datum/job/captain
|
||||
santacard.access = J.get_access()
|
||||
santa.equip_to_slot_or_del(santacard, slot_wear_id)
|
||||
|
||||
santa.update_icons()
|
||||
|
||||
var/obj/item/weapon/storage/backpack/bag = santa.back
|
||||
var/obj/item/weapon/a_gift/gift = new(santa)
|
||||
while(bag.can_be_inserted(gift, 1))
|
||||
bag.handle_item_insertion(gift, 1)
|
||||
gift = new(santa)
|
||||
|
||||
var/datum/objective/santa_objective = new()
|
||||
santa_objective.explanation_text = "Bring joy and presents to the station!"
|
||||
santa_objective.completed = 1 //lets cut our santas some slack.
|
||||
santa_objective.owner = santa.mind
|
||||
santa.mind.objectives += santa_objective
|
||||
santa.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/conjure/presents
|
||||
var/obj/effect/proc_holder/spell/targeted/area_teleport/teleport/telespell = new(santa)
|
||||
telespell.clothes_req = 0 //santa robes aren't actually magical.
|
||||
santa.mind.spell_list += telespell //does the station have chimneys? WHO KNOWS!
|
||||
|
||||
M << "<span class='userdanger'>You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag.</span>"
|
||||
|
||||
+70
-384
@@ -172,7 +172,7 @@
|
||||
Ninja.internals.icon_state = "internal1"
|
||||
|
||||
if(Ninja.mind != Mind) //something has gone wrong!
|
||||
ERROR("The ninja wasn't assigned the right mind. ;ç;")
|
||||
ERROR("The ninja wasn't assigned the right mind. ;ç;")
|
||||
|
||||
Ninja << sound('sound/effects/ninja_greeting.ogg') //so ninja you probably wouldn't even know if you were made one
|
||||
|
||||
@@ -404,17 +404,17 @@ ________________________________________________________________________________
|
||||
U:gloves.item_state = "s-ninjan"
|
||||
else
|
||||
if(U.mind.special_role!="Space Ninja")
|
||||
U << "\red <B>fÄTaL ÈÈRRoR</B>: 382200-*#00CÖDE <B>RED</B>\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR..."
|
||||
U << "\red <B>fÄTaL ÈÈRRoR</B>: 382200-*#00CÖDE <B>RED</B>\nUNAUHORIZED USÈ DETÈCeD\nCoMMÈNCING SUB-R0UIN3 13...\nTÈRMInATING U-U-USÈR..."
|
||||
U.gib()
|
||||
return 0
|
||||
if(!istype(U:head, /obj/item/clothing/head/helmet/space/space_ninja))
|
||||
U << "<span class='userdanger'>ERROR</span>: 100113 \black UNABLE TO LOCATE HEAD GEAR\nABORTING..."
|
||||
U << "<span class='userdanger'>ERROR</span>: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING..."
|
||||
return 0
|
||||
if(!istype(U:shoes, /obj/item/clothing/shoes/space_ninja))
|
||||
U << "<span class='userdanger'>ERROR</span>: 122011 \black UNABLE TO LOCATE FOOT GEAR\nABORTING..."
|
||||
U << "<span class='userdanger'>ERROR</span>: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING..."
|
||||
return 0
|
||||
if(!istype(U:gloves, /obj/item/clothing/gloves/space_ninja))
|
||||
U << "<span class='userdanger'>ERROR</span>: 110223 \black UNABLE TO LOCATE HAND GEAR\nABORTING..."
|
||||
U << "<span class='userdanger'>ERROR</span>: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING..."
|
||||
return 0
|
||||
|
||||
affecting = U
|
||||
@@ -570,7 +570,7 @@ ________________________________________________________________________________
|
||||
U.incorporeal_move = 0
|
||||
kamikaze = 0
|
||||
k_unlock = 0
|
||||
U << "<span class='notice'>Disengaging mode...</span>\n\black<b>CODE NAME</b>: <span class='userdanger'>KAMIKAZE</span>"
|
||||
U << "<span class='notice'>Disengaging mode...</span>\n<b>CODE NAME</b>: <span class='userdanger'>KAMIKAZE</span>"
|
||||
|
||||
//=======//AI VERBS//=======//
|
||||
|
||||
@@ -587,295 +587,6 @@ ________________________________________________________________________________
|
||||
|
||||
s_control = 1
|
||||
|
||||
//=======//OLD & UNUSED//=======//
|
||||
|
||||
/*
|
||||
|
||||
Deprecated. get_dir() does the same thing. Still a nice proc.
|
||||
Returns direction that the mob or whomever should be facing in relation to the target.
|
||||
This proc does not grant absolute direction and is mostly useful for 8dir sprite positioning.
|
||||
I personally used it with getline() to great effect.
|
||||
/proc/get_dir_to(turf/start,turf/end)//N
|
||||
var/xdiff = start.x - end.x//The sign is important.
|
||||
var/ydiff = start.y - end.y
|
||||
|
||||
var/direction_x = xdiff<1 ? 4:8//East - west
|
||||
var/direction_y = ydiff<1 ? 1:2//North - south
|
||||
var/direction_xy = xdiff==0 ? -4:0//If x is the same, subtract 4.
|
||||
var/direction_yx = ydiff==0 ? -1:0//If y is the same, subtract 1.
|
||||
var/direction_f = direction_x+direction_y+direction_xy+direction_yx//Finally direction tally.
|
||||
direction_f = direction_f==0 ? 1:direction_f//If direction is 0(same spot), return north. Otherwise, direction.
|
||||
|
||||
return direction_f
|
||||
|
||||
Alternative and inferior method of calculating spideros.
|
||||
var/temp = num2text(spideros)
|
||||
var/return_to = copytext(temp, 1, (length(temp)))//length has to be to the length of the thing because by default it's length+1
|
||||
spideros = text2num(return_to)//Maximum length here is 6. Use (return_to, X) to specify larger strings if needed.
|
||||
|
||||
//Old way of draining from wire.
|
||||
/obj/item/clothing/gloves/space_ninja/proc/drain_wire()
|
||||
set name = "Drain From Wire"
|
||||
set desc = "Drain energy directly from an exposed wire."
|
||||
set category = "Ninja Equip"
|
||||
|
||||
var/obj/structure/cable/attached
|
||||
var/mob/living/carbon/human/U = loc
|
||||
if(candrain&&!draining)
|
||||
var/turf/T = U.loc
|
||||
if(isturf(T) && istype(T, /turf/simulated/floor/plating)
|
||||
attached = locate() in T
|
||||
if(!attached)
|
||||
U << "\red Warning: no exposed cable available."
|
||||
else
|
||||
U << "\blue Connecting to wire, stand still..."
|
||||
if(do_after(U,50)&&!isnull(attached))
|
||||
drain("WIRE",attached,U:wear_suit,src)
|
||||
else
|
||||
U << "\red Procedure interrupted. Protocol terminated."
|
||||
return
|
||||
|
||||
I've tried a lot of stuff but adding verbs to the AI while inside an object, inside another object, did not want to work properly.
|
||||
This was the best work-around I could come up with at the time. Uses objects to then display to panel, based on the object spell system.
|
||||
Can be added on to pretty easily.
|
||||
|
||||
BYOND fixed the verb bugs so this is no longer necessary. I prefer verb panels.
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/grant_AI_verbs()
|
||||
var/obj/effect/proc_holder/ai_return_control/A_C = new(AI)
|
||||
var/obj/effect/proc_holder/ai_hack_ninja/B_C = new(AI)
|
||||
var/obj/effect/proc_holder/ai_instruction/C_C = new(AI)
|
||||
new/obj/effect/proc_holder/ai_holo_clear(AI)
|
||||
AI.proc_holder_list += A_C
|
||||
AI.proc_holder_list += B_C
|
||||
AI.proc_holder_list += C_C
|
||||
|
||||
s_control = 0
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/remove_AI_verbs()
|
||||
var/obj/effect/proc_holder/ai_return_control/A_C = locate() in AI
|
||||
var/obj/effect/proc_holder/ai_hack_ninja/B_C = locate() in AI
|
||||
var/obj/effect/proc_holder/ai_instruction/C_C = locate() in AI
|
||||
var/obj/effect/proc_holder/ai_holo_clear/D_C = locate() in AI
|
||||
qdel(A_C)
|
||||
qdel(B_C)
|
||||
qdel(C_C)
|
||||
qdel(D_C)
|
||||
AI.proc_holder_list = list()
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/deinit
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/spideros
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/stealth
|
||||
|
||||
s_control = 1
|
||||
|
||||
//Workaround
|
||||
/obj/effect/proc_holder/ai_holo_clear
|
||||
name = "Clear Hologram"
|
||||
desc = "Stops projecting the current holographic image."
|
||||
panel = "AI Ninja Equip"
|
||||
density = 0
|
||||
opacity = 0
|
||||
|
||||
|
||||
/obj/effect/proc_holder/ai_holo_clear/Click()
|
||||
var/obj/item/clothing/suit/space/space_ninja/S = loc.loc//This is so stupid but makes sure certain things work. AI.SUIT
|
||||
qdel(S.hologram.i_attached)
|
||||
qdel(S.hologram)
|
||||
var/obj/effect/proc_holder/ai_holo_clear/D_C = locate() in S.AI
|
||||
S.AI.proc_holder_list -= D_C
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/ai_instruction//Let's the AI know what they can do.
|
||||
name = "Instructions"
|
||||
desc = "Displays a list of helpful information."
|
||||
panel = "AI Ninja Equip"
|
||||
density = 0
|
||||
opacity = 0
|
||||
|
||||
/obj/effect/proc_holder/ai_instruction/Click()
|
||||
loc << "The menu you are seeing will contain other commands if they become available.\nRight click a nearby turf to display an AI Hologram. It will only be visible to you and your host. You can move it freely using normal movement keys--it will disappear if placed too far away."
|
||||
|
||||
/obj/effect/proc_holder/ai_hack_ninja//Generic proc holder to make sure the two verbs below work propely.
|
||||
name = "Hack SpiderOS"
|
||||
desc = "Hack directly into the Black Widow(tm) neuro-interface."
|
||||
panel = "AI Ninja Equip"
|
||||
density = 0
|
||||
opacity = 0
|
||||
|
||||
/obj/effect/proc_holder/ai_hack_ninja/Click()//When you click on it.
|
||||
var/obj/item/clothing/suit/space/space_ninja/S = loc.loc
|
||||
S.hack_spideros()
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/ai_return_control
|
||||
name = "Relinquish Control"
|
||||
desc = "Return control to the user."
|
||||
panel = "AI Ninja Equip"
|
||||
density = 0
|
||||
opacity = 0
|
||||
|
||||
/obj/effect/proc_holder/ai_return_control/Click()
|
||||
var/mob/living/silicon/ai/A = loc
|
||||
var/obj/item/clothing/suit/space/space_ninja/S = A.loc
|
||||
A << browse(null, "window=hack spideros")//Close window
|
||||
A << "You have seized your hacking attempt. [S.affecting] has regained control."
|
||||
S.affecting << "<b>UPDATE</b>: [A.real_name] has ceased hacking attempt. All systems clear."
|
||||
S.remove_AI_verbs()
|
||||
return
|
||||
*/
|
||||
|
||||
//=======//DEBUG//=======//
|
||||
/*
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/display_verb_procs()
|
||||
//DEBUG
|
||||
//Does nothing at the moment. I am trying to see if it's possible to mess around with verbs as variables.
|
||||
//for(var/P in verbs)
|
||||
// if(P.set.name)
|
||||
// usr << "[P.set.name], path: [P]"
|
||||
return
|
||||
|
||||
|
||||
Most of these are at various points of incomplete.
|
||||
|
||||
/mob/verb/grant_object_panel()
|
||||
set name = "Grant AI Ninja Verbs Debug"
|
||||
set category = "Ninja Debug"
|
||||
var/obj/effect/proc_holder/ai_return_control/A_C = new(src)
|
||||
var/obj/effect/proc_holder/ai_hack_ninja/B_C = new(src)
|
||||
usr:proc_holder_list += A_C
|
||||
usr:proc_holder_list += B_C
|
||||
|
||||
mob/verb/remove_object_panel()
|
||||
set name = "Remove AI Ninja Verbs Debug"
|
||||
set category = "Ninja Debug"
|
||||
var/obj/effect/proc_holder/ai_return_control/A = locate() in src
|
||||
var/obj/effect/proc_holder/ai_hack_ninja/B = locate() in src
|
||||
usr:proc_holder_list -= A
|
||||
usr:proc_holder_list -= B
|
||||
qdel(A)//First.
|
||||
qdel(B)//Second, to keep the proc going.
|
||||
return
|
||||
|
||||
/client/verb/grant_verb_ninja_debug1(var/mob/M in view())
|
||||
set name = "Grant AI Ninja Verbs Debug"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
M.verbs += /mob/living/silicon/ai/verb/ninja_return_control
|
||||
M.verbs += /mob/living/silicon/ai/verb/ninja_spideros
|
||||
return
|
||||
|
||||
/client/verb/grant_verb_ninja_debug2(var/mob/living/carbon/human/M in view())
|
||||
set name = "Grant Back Ninja Verbs"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
M.wear_suit.verbs += /obj/item/clothing/suit/space/space_ninja/proc/deinit
|
||||
M.wear_suit.verbs += /obj/item/clothing/suit/space/space_ninja/proc/spideros
|
||||
return
|
||||
|
||||
/obj/proc/grant_verb_ninja_debug3(var/mob/living/silicon/ai/A as mob)
|
||||
set name = "Grant AI Ninja Verbs"
|
||||
set category = "null"
|
||||
set hidden = 1
|
||||
A.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/deinit
|
||||
A.verbs -= /obj/item/clothing/suit/space/space_ninja/proc/spideros
|
||||
return
|
||||
|
||||
/mob/verb/get_dir_to_target(var/mob/M in oview())
|
||||
set name = "Get Direction to Target"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
world << "DIR: [get_dir_to(src.loc,M.loc)]"
|
||||
return
|
||||
//
|
||||
/mob/verb/kill_self_debug()
|
||||
set name = "DEBUG Kill Self"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
src:death()
|
||||
|
||||
/client/verb/switch_client_debug()
|
||||
set name = "DEBUG Switch Client"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
mob = mob:loc:loc
|
||||
|
||||
/mob/verb/possess_mob(var/mob/M in oview())
|
||||
set name = "DEBUG Possess Mob"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
client.mob = M
|
||||
|
||||
/client/verb/switcharoo(var/mob/M in oview())
|
||||
set name = "DEBUG Switch to AI"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
var/mob/last_mob = mob
|
||||
mob = M
|
||||
last_mob:wear_suit:AI:key = key
|
||||
//
|
||||
/client/verb/ninjaget(var/mob/M in oview())
|
||||
set name = "DEBUG Ninja GET"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
mob = M
|
||||
M.gib()
|
||||
space_ninja()
|
||||
|
||||
/mob/verb/set_debug_ninja_target()
|
||||
set name = "Set Debug Target"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
ninja_debug_target = src//The target is you, brohime.
|
||||
world << "Target: [src]"
|
||||
|
||||
/mob/verb/hack_spideros_debug()
|
||||
set name = "Debug Hack Spider OS"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
var/mob/living/silicon/ai/A = loc:AI
|
||||
if(A)
|
||||
if(!A.key)
|
||||
A.client.mob = loc:affecting
|
||||
else
|
||||
loc:affecting:client:mob = A
|
||||
return
|
||||
|
||||
//Tests the net and what it does.
|
||||
/mob/verb/ninjanet_debug()
|
||||
set name = "Energy Net Debug"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
var/obj/effect/energy_net/E = new /obj/effect/energy_net(loc)
|
||||
E.layer = layer+1//To have it appear one layer above the mob.
|
||||
stunned = 10//So they are stunned initially but conscious.
|
||||
anchored = 1//Anchors them so they can't move.
|
||||
E.affecting = src
|
||||
spawn(0)//Parallel processing.
|
||||
E.process(src)
|
||||
return
|
||||
|
||||
I made this as a test for a possible ninja ability (or perhaps more) for a certain mob to see hallucinations.
|
||||
The thing here is that these guys have to be coded to do stuff as they are simply images that you can't even click on.
|
||||
That is why you attached them to objects.
|
||||
/mob/verb/TestNinjaShadow()
|
||||
set name = "Test Ninja Ability"
|
||||
set category = "Ninja Debug"
|
||||
|
||||
if(client)
|
||||
var/safety = 4
|
||||
for(var/turf/T in oview(5))
|
||||
if(prob(20))
|
||||
var/current_clone = image('icons/mob/mob.dmi',T,"s-ninja")
|
||||
safety--
|
||||
spawn(0)
|
||||
src << current_clone
|
||||
spawn(300)
|
||||
qdel(current_clone)
|
||||
spawn while(!isnull(current_clone))
|
||||
step_to(current_clone,src,1)
|
||||
sleep(5)
|
||||
if(safety<=0) break
|
||||
return */
|
||||
|
||||
//Alternate ninja speech replacement.
|
||||
/*This text is hilarious but also absolutely retarded.
|
||||
@@ -1377,12 +1088,13 @@ ________________________________________________________________________________
|
||||
reagent_id == "radium" ? reagents.add_reagent(reagent_id, r_maxamount+(a_boost*a_transfer)) : reagents.add_reagent(reagent_id, r_maxamount)//It will take into account radium used for adrenaline boosting.
|
||||
cell = new/obj/item/weapon/stock_parts/cell/high//The suit should *always* have a battery because so many things rely on it.
|
||||
cell.charge = 9000//Starting charge should not be higher than maximum charge. It leads to problems with recharging.
|
||||
NAI = new(src) //ninja intellicard
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/Destroy()
|
||||
if(affecting)//To make sure the window is closed.
|
||||
affecting << browse(null, "window=hack spideros")
|
||||
if(AI)//If there are AIs present when the ninja kicks the bucket.
|
||||
killai()
|
||||
killai(NAI)
|
||||
if(hologram)//If there is a hologram
|
||||
qdel(hologram.i_attached)//Delete it and the attached image.
|
||||
qdel(hologram)
|
||||
@@ -1395,15 +1107,18 @@ ________________________________________________________________________________
|
||||
qdel(n_shoes)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/killai(mob/living/silicon/ai/A = AI)
|
||||
if(A.client)
|
||||
A << "<span class='danger'>Self-erase protocol dete-- *bzzzzz*</span>"
|
||||
A << browse(null, "window=hack spideros")
|
||||
AI = null
|
||||
A.death(1)//Kill, deleting mob.
|
||||
qdel(A)
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/killai(var/obj/item/device/aicard/NAI)
|
||||
for(var/mob/living/silicon/ai/A in src)
|
||||
if(A.client)
|
||||
A << "<span class='danger'>Self-erase protocol dete-- *bzzzzz*</span>"
|
||||
A << browse(null, "window=hack spideros")
|
||||
NAI.flush = 1
|
||||
return
|
||||
|
||||
|
||||
|
||||
//=======//SUIT VERBS//=======//
|
||||
//Verbs link to procs because verb-like procs have a bug which prevents their use if the arguments are not readily referenced.
|
||||
|
||||
@@ -1459,10 +1174,10 @@ ________________________________________________________________________________
|
||||
//Let's check for some safeties.
|
||||
if(s_initialized&&!affecting) terminate()//Kills the suit and attached objects.
|
||||
if(!s_initialized) return//When turned off the proc stops.
|
||||
if(AI&&AI.stat==2)//If there is an AI and it's ded. Shouldn't happen without purging, could happen.
|
||||
if(!s_control)
|
||||
ai_return_control()//Return control to ninja if the AI was previously in control.
|
||||
killai()//Delete AI.
|
||||
for(var/mob/living/silicon/ai/A in NAI)
|
||||
if(A&&A.stat==2)//If there is an AI and it's ded. Shouldn't happen without purging, could happen.
|
||||
if(!s_control)
|
||||
ai_return_control()//Return control to ninja if the AI was previously in control.
|
||||
|
||||
//Now let's do the normal processing.
|
||||
if(s_coold) s_coold--//Checks for ability s_cooldown first.
|
||||
@@ -1504,7 +1219,7 @@ ________________________________________________________________________________
|
||||
U << "<span class='notice'>Extending neural-net interface...\nNow monitoring brain wave pattern...</span>"
|
||||
if(3)
|
||||
if(U.stat==2||U.health<=0)
|
||||
U << "<span class='danger'><B>FĆAL �Rr�R</B>: 344--93#�&&21 BR��N |/|/aV� PATT$RN <B>RED</B>\nA-A-aB�rT�NG...</span>"
|
||||
U << "<span class='danger'><B>FÄAL �Rr�R</B>: 344--93#�&&21 BR��N |/|/aV� PATT$RN <B>RED</B>\nA-A-aB�rT�NG...</span>"
|
||||
unlock_suit()
|
||||
break
|
||||
lock_suit(U,1)//Check for icons.
|
||||
@@ -1525,9 +1240,9 @@ ________________________________________________________________________________
|
||||
if(!U.mind||U.mind.assigned_role!="MODE")//Your run of the mill persons shouldn't know what it is. Or how to turn it on.
|
||||
U << "You do not understand how this suit functions. Where the heck did it even come from?"
|
||||
else if(s_initialized)
|
||||
U << "<span class='danger'>The suit is already functioning.</span> \black <b>Please report this bug.</b>"
|
||||
U << "<span class='danger'>The suit is already functioning.</span> Please report this bug."
|
||||
else
|
||||
U << "<span class='userdanger'>ERROR</span>: \black You cannot use this function at this time."
|
||||
U << "<span class='userdanger'>ERROR</span>: You cannot use this function at this time."
|
||||
return
|
||||
|
||||
//=======//DEINITIALIZE//=======//
|
||||
@@ -1536,12 +1251,12 @@ ________________________________________________________________________________
|
||||
if(affecting==loc&&!s_busy)
|
||||
var/mob/living/carbon/human/U = affecting
|
||||
if(!s_initialized)
|
||||
U << "<span class='danger'>The suit is not initialized.</span> \black <b>Please report this bug.</b>"
|
||||
U << "<span class='danger'>The suit is not initialized.</span> Please report this bug."
|
||||
return
|
||||
if(alert("Are you certain you wish to remove the suit? This will take time and remove all abilities.",,"Yes","No")=="No")
|
||||
return
|
||||
if(s_busy||flush)
|
||||
U << "<span class='userdanger'>ERROR</span>: \black You cannot use this function at this time."
|
||||
if(s_busy || NAI.flush)
|
||||
U << "<span class='userdanger'>ERROR</span>: You cannot use this function at this time."
|
||||
return
|
||||
s_busy = 1
|
||||
for(var/i = 0,i<7,i++)
|
||||
@@ -1721,7 +1436,7 @@ ________________________________________________________________________________
|
||||
<li><i>Voice masking</i> generates a random name the ninja can use over the radio and in-person. Although, the former use is recommended.</li>
|
||||
<li><i>Toggling vision</i> cycles to one of the following: thermal, meson, or darkness vision. The starting mode allows one to scout the identity of those in view, revealing their role. Traitors, revolutionaries, wizards, and other such people will be made known to you.</li>
|
||||
<li><i>Stealth</i>, when activated, drains more battery charge and works similarly to a syndicate cloak. The cloak will deactivate when most Abilities are utilized.</li>
|
||||
<li><i>On-board AI</i>: The suit is able to download an AI much like an intelicard. Check with SpiderOS for details once downloaded.</li>
|
||||
<li><i>On-board AI</i>: The suit is able to download an AI much like an intellicard. Check with SpiderOS for details once downloaded.</li>
|
||||
<li><i>SpiderOS</i> is a specialized, PDA-like screen that allows for a small variety of functions, such as injecting healing chemicals directly from the suit. You are using it now, if that was not already obvious. You may also download AI modules directly to the OS.</li>
|
||||
</ul>
|
||||
<b>Abilities</b>:
|
||||
@@ -1742,45 +1457,12 @@ ________________________________________________________________________________
|
||||
</ul>
|
||||
That is all you will need to know. The rest will come with practice and talent. Good luck!
|
||||
<h4>Master /N</h4>
|
||||
"}//This has always bothered me but not anymore!
|
||||
"}
|
||||
if(5)
|
||||
var/laws
|
||||
dat += "<h4><img src=sos_13.png> AI Control:</h4>"
|
||||
//var/mob/living/silicon/ai/A = AI
|
||||
if(AI)//If an AI exists.
|
||||
dat += "Stored AI: <b>[A.name]</b><br>"
|
||||
dat += "System integrity: [(A.health+100)/2]%<br>"
|
||||
if(NAI)
|
||||
NAI.attack_self(display_to) //Just accesses the integrated Intellicard. If an AI is in control of the suit then I guess it can interact with its own card. How meta.
|
||||
|
||||
//I personally think this makes things a little more fun. Ninjas can override all but law 0.
|
||||
//if (A.laws.zeroth)
|
||||
// laws += "<li>0: [A.laws.zeroth]</li>"
|
||||
|
||||
for (var/index = 1, index <= A.laws.ion.len, index++)
|
||||
var/law = A.laws.ion[index]
|
||||
if (length(law) > 0)
|
||||
var/num = ionnum()
|
||||
laws += "<li>[num]. [law]</li>"
|
||||
|
||||
var/number = 1
|
||||
for (var/index = 1, index <= A.laws.inherent.len, index++)
|
||||
var/law = A.laws.inherent[index]
|
||||
if (length(law) > 0)
|
||||
laws += "<li>[number]: [law]</li>"
|
||||
number++
|
||||
|
||||
for (var/index = 1, index <= A.laws.supplied.len, index++)
|
||||
var/law = A.laws.supplied[index]
|
||||
if (length(law) > 0)
|
||||
laws += "<li>[number]: [law]</li>"
|
||||
number++
|
||||
|
||||
dat += "<h4>Laws:</h4><ul>[laws]<li><a href='byond://?src=\ref[src];choice=Override AI Laws'><i>*Override Laws*</i></a></li></ul>"
|
||||
|
||||
if (!flush)
|
||||
dat += "<A href='byond://?src=\ref[src];choice=Purge AI'>Purge AI</A><br>"
|
||||
else
|
||||
dat += "<b>Purge in progress...</b><br>"
|
||||
dat += " <A href='byond://?src=\ref[src];choice=Wireless AI'>[A.control_disabled ? "Enable" : "Disable"] Wireless Activity</A>"
|
||||
if(6)
|
||||
dat += {"
|
||||
<h4><img src=sos_6.png> Activate Abilities:</h4>
|
||||
@@ -1857,7 +1539,7 @@ ________________________________________________________________________________
|
||||
U.electrocute_act(damage, src,0.1,1)//The last argument is a safety for the human proc that checks for gloves.
|
||||
cell.charge -= damage
|
||||
else
|
||||
A << "<span class='userdanger'>ERROR</span>: \black Not enough energy remaining."
|
||||
A << "<span class='userdanger'>ERROR</span>: Not enough energy remaining."
|
||||
|
||||
if("Message")
|
||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||
@@ -1918,7 +1600,7 @@ ________________________________________________________________________________
|
||||
for(var/i, i<4, i++)
|
||||
switch(i)
|
||||
if(0)
|
||||
U << "<span class='notice'>Engaging mode...</span>\n\black<b>CODE NAME</b>: <span class='userdanger'>KAMIKAZE</span>"
|
||||
U << "<span class='notice'>Engaging mode...</span>\n<b>CODE NAME</b>: <span class='userdanger'>KAMIKAZE</span>"
|
||||
if(1)
|
||||
U << "<span class='notice'>Re-routing power nodes... \nUnlocking limiter...</span>"
|
||||
if(2)
|
||||
@@ -1932,7 +1614,7 @@ ________________________________________________________________________________
|
||||
return
|
||||
sleep(s_delay)
|
||||
else
|
||||
U << "<span class='userdanger'>ERROR</span>: \black Unable to initiate mode."
|
||||
U << "<span class='userdanger'>ERROR</span>: Unable to initiate mode."
|
||||
else
|
||||
U << browse(null, "window=spideros")
|
||||
s_busy = 0
|
||||
@@ -1954,7 +1636,7 @@ ________________________________________________________________________________
|
||||
t_disk.loc = T
|
||||
t_disk = null
|
||||
else
|
||||
U << "<span class='userdanger'>ERROR</span>: \black Could not eject disk."
|
||||
U << "<span class='userdanger'>ERROR</span>: Could not eject disk."
|
||||
|
||||
if("Copy to Disk")
|
||||
var/datum/tech/current_data = locate(href_list["target"])
|
||||
@@ -1975,7 +1657,7 @@ ________________________________________________________________________________
|
||||
pai.loc = T
|
||||
pai = null
|
||||
else
|
||||
U << "<span class='userdanger'>ERROR</span>: \black Could not eject pAI card."
|
||||
U << "<span class='userdanger'>ERROR</span>: Could not eject pAI card."
|
||||
|
||||
if("Override AI Laws")
|
||||
var/law_zero = A.laws.zeroth//Remembers law zero, if there is one.
|
||||
@@ -1996,25 +1678,25 @@ ________________________________________________________________________________
|
||||
if(AI==A)
|
||||
switch(i)
|
||||
if(0)
|
||||
A << "<span class='userdanger'>WARNING</span>: \black purge procedure detected. \nNow hacking host..."
|
||||
U << "<span class='userdanger'>WARNING</span>: HACKING AT��TEMP� IN PR0GRESs!"
|
||||
A << "<span class='userdanger'>WARNING</span>: purge procedure detected. \nNow hacking host..."
|
||||
U << "<span class='userdanger'>WARNING</span>: HACKING AT��TEMP� IN PR0GRESs!"
|
||||
spideros = 0
|
||||
k_unlock = 0
|
||||
U << browse(null, "window=spideros")
|
||||
if(1)
|
||||
A << "Disconnecting neural interface..."
|
||||
U << "<span class='userdanger'>WAR�NING</span>: �R�O0�Gr�--S 2&3%"
|
||||
U << "<span class='userdanger'>WAR�NING</span>: �R�O0�Gr�--S 2&3%"
|
||||
if(2)
|
||||
A << "Shutting down external protocol..."
|
||||
U << "<span class='userdanger'>WARNING</span>: P����RֆGr�5S 677^%"
|
||||
U << "<span class='userdanger'>WARNING</span>: P����RÖGr�5S 677^%"
|
||||
cancel_stealth()
|
||||
if(3)
|
||||
A << "Connecting to kernel..."
|
||||
U << "<span class='userdanger'>WARNING</span>: �R�r�R_404"
|
||||
U << "<span class='userdanger'>WARNING</span>: �R�r�R_404"
|
||||
A.control_disabled = 0
|
||||
if(4)
|
||||
A << "Connection established and secured. Menu updated."
|
||||
U << "<span class='userdanger'>W�r#nING</span>: #%@!!WȆ|_4�54@ \nUn�B88l3 T� L�-�o-L�CaT2 ##$!�RN�0..%.."
|
||||
U << "<span class='userdanger'>W�r#nING</span>: #%@!!WÈ|_4�54@ \nUn�B88l3 T� L�-�o-L�CaT2 ##$!�RN�0..%.."
|
||||
grant_AI_verbs()
|
||||
return
|
||||
sleep(s_delay)
|
||||
@@ -2022,7 +1704,7 @@ ________________________________________________________________________________
|
||||
s_busy = 0
|
||||
U << "<span class='notice'>Hacking attempt disconnected. Resuming normal operation.</span>"
|
||||
else
|
||||
flush = 1
|
||||
NAI.flush = 1
|
||||
A.suiciding = 1
|
||||
A << "Your core files are being purged! This is the end..."
|
||||
spawn(0)
|
||||
@@ -2031,9 +1713,9 @@ ________________________________________________________________________________
|
||||
A.adjustOxyLoss(2)
|
||||
A.updatehealth()
|
||||
sleep(10)
|
||||
killai()
|
||||
killai(NAI)
|
||||
U << "Artificial Intelligence was terminated. Rebooting..."
|
||||
flush = 0
|
||||
NAI.flush = 0
|
||||
|
||||
if("Wireless AI")
|
||||
A.control_disabled = !A.control_disabled
|
||||
@@ -2058,19 +1740,21 @@ ________________________________________________________________________________
|
||||
hologram.invisibility = 101//So that it doesn't show up, ever. This also means one could attach a number of images to a single obj and display them differently to differnet people.
|
||||
hologram.anchored = 1//So it cannot be dragged by space wind and the like.
|
||||
hologram.dir = get_dir(T,affecting.loc)
|
||||
var/image/I = image(AI.holo_icon,hologram)//Attach an image to object.
|
||||
hologram.i_attached = I//To attach the image in order to later reference.
|
||||
AI << I
|
||||
affecting << I
|
||||
affecting << "<i>An image flicks to life nearby. It appears visible to you only.</i>"
|
||||
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ai_holo_clear
|
||||
for(var/mob/living/silicon/ai/A in NAI)
|
||||
var/image/I = image(A.holo_icon,hologram)//Attach an image to object.
|
||||
hologram.i_attached = I//To attach the image in order to later reference.
|
||||
A << I
|
||||
affecting << I
|
||||
affecting << "<i>An image flicks to life nearby. It appears visible to you only.</i>"
|
||||
|
||||
ai_holo_process()//Move to initialize
|
||||
verbs += /obj/item/clothing/suit/space/space_ninja/proc/ai_holo_clear
|
||||
|
||||
ai_holo_process()//Move to initialize
|
||||
else
|
||||
AI << "<span class='danger'>ERROR:</span> \black Image feed in progress."
|
||||
AI << "<span class='danger'>ERROR:</span> Image feed in progress."
|
||||
else
|
||||
AI << "<span class='danger'>ERROR:</span> \black Unable to project image."
|
||||
AI << "<span class='danger'>ERROR:</span> Unable to project image."
|
||||
return
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ai_holo_process()
|
||||
@@ -2120,11 +1804,13 @@ ________________________________________________________________________________
|
||||
set category = "AI Ninja Equip"
|
||||
set src = usr.loc
|
||||
|
||||
AI << browse(null, "window=spideros")//Close window
|
||||
AI << "You have seized your hacking attempt. [affecting.real_name] has regained control."
|
||||
affecting << "<b>UPDATE</b>: [AI.real_name] has ceased hacking attempt. All systems clear."
|
||||
|
||||
remove_AI_verbs()
|
||||
for(var/mob/living/silicon/ai/A in NAI)
|
||||
AI << browse(null, "window=spideros")//Close window
|
||||
AI << "You have seized your hacking attempt. [affecting.real_name] has regained control."
|
||||
affecting << "<b>UPDATE</b>: [A.real_name] has ceased hacking attempt. All systems clear."
|
||||
|
||||
remove_AI_verbs()
|
||||
return
|
||||
|
||||
//=======//GENERAL SUIT PROCS//=======//
|
||||
@@ -2135,7 +1821,7 @@ ________________________________________________________________________________
|
||||
if(s_control)
|
||||
I:transfer_ai("NINJASUIT","AICARD",src,U)
|
||||
else
|
||||
U << "<span class='userdanger'>ERROR</span>: \black Remote access channel disabled."
|
||||
U << "<span class='userdanger'>ERROR</span>: Remote access channel disabled."
|
||||
return//Return individually so that ..() can run properly at the end of the proc.
|
||||
else if(istype(I, /obj/item/device/paicard) && !pai)//If it's a pai card.
|
||||
U:drop_item()
|
||||
@@ -2190,7 +1876,7 @@ ________________________________________________________________________________
|
||||
TD.stored = null
|
||||
U << "<span class='notice'>Data analyzed and updated. Disk erased.</span>"
|
||||
else
|
||||
U << "<span class='userdanger'>ERROR</span>: \black Procedure interrupted. Process terminated."
|
||||
U << "<span class='userdanger'>ERROR</span>: Procedure interrupted. Process terminated."
|
||||
else
|
||||
I.loc = src
|
||||
t_disk = I
|
||||
@@ -2256,7 +1942,7 @@ ________________________________________________________________________________
|
||||
user << "There are <B>[s_bombs]</B> smoke bomb\s remaining."
|
||||
user << "There are <B>[a_boost]</B> adrenaline booster\s remaining."
|
||||
else
|
||||
user << "�rr�R �a��a�� No-�-� f��N� 3RR�r"
|
||||
user << "�rr�R �a��a�� No-�-� f��N� 3RR�r"
|
||||
|
||||
/*
|
||||
===================================================================================
|
||||
@@ -2405,7 +2091,7 @@ ________________________________________________________________________________
|
||||
for(var/datum/tech/analyzing_data in A:files.known_tech)
|
||||
if(current_data.id==analyzing_data.id)
|
||||
if(analyzing_data.level>current_data.level)
|
||||
U << "<span class='notice'>Database:</span> \black <b>UPDATED</b>."
|
||||
U << "<span class='notice'>Database:</span> <b>UPDATED</b>."
|
||||
current_data.level = analyzing_data.level
|
||||
break//Move on to next.
|
||||
else break//Otherwise, quit processing.
|
||||
@@ -2617,7 +2303,7 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
for(var/mob/O in viewers(src, 3))
|
||||
O.show_message("[M.name] was recovered from the energy net!", 1, "You hear a grunt.", 2)
|
||||
if(!isnull(master))//As long as they still exist.
|
||||
master << "<span class='userdanger'>ERROR</span>: \black unable to initiate transport protocol. Procedure terminated."
|
||||
master << "<span class='userdanger'>ERROR</span>: unable to initiate transport protocol. Procedure terminated."
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -2631,7 +2317,7 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
|
||||
if(isnull(M)||M.loc!=loc)//If mob is gone or not at the location.
|
||||
if(!isnull(master))//As long as they still exist.
|
||||
master << "<span class='userdanger'>ERROR</span>: \black unable to locate \the [mob_name]. Procedure terminated."
|
||||
master << "<span class='userdanger'>ERROR</span>: unable to locate \the [mob_name]. Procedure terminated."
|
||||
qdel(src)//Get rid of the net.
|
||||
return
|
||||
|
||||
@@ -2667,7 +2353,7 @@ It is possible to destroy the net by the occupant or someone else.
|
||||
O.show_message("[M] vanished!", 1, "You hear sparks flying!", 2)
|
||||
|
||||
if(!isnull(master))//As long as they still exist.
|
||||
master << "<span class='notice'><b>SUCCESS</b>: \black transport procedure of \the [affecting] complete.</span>"
|
||||
master << "<span class='notice'><b>SUCCESS</b>: transport procedure of \the [affecting] complete.</span>"
|
||||
|
||||
M.anchored = 0//Important.
|
||||
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
return 0
|
||||
|
||||
if(M == user)
|
||||
if(src.reagents.has_reagent("sugar") && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 )
|
||||
M << "<span class='notice'>You don't feel like drinking any more sugary drink at the moment.</span>"
|
||||
return 0
|
||||
|
||||
M << "<span class='notice'>You swallow a gulp of [src].</span>"
|
||||
if(reagents.total_volume)
|
||||
reagents.reaction(M, INGEST)
|
||||
@@ -191,6 +195,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/New()
|
||||
..()
|
||||
reagents.add_reagent("hot_coco", 30)
|
||||
reagents.add_reagent("sugar", 5)
|
||||
src.pixel_x = rand(-10.0, 10)
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
//The reagents in the bottle splash all over the target, thanks for the idea Nodrak
|
||||
if(src.reagents)
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("<span class='danger'>The contents of the [src] splashes all over [target]!</span>"), 1)
|
||||
O.show_message(text("<span class='danger'>The contents of \the [src] splashes all over [target]!</span>"), 1)
|
||||
src.reagents.reaction(target, TOUCH)
|
||||
|
||||
//Finally, smash the bottle. This kills (del) the bottle.
|
||||
|
||||
@@ -42,7 +42,10 @@
|
||||
return 0
|
||||
|
||||
if(M == user)
|
||||
M << "<span class='notice'>You swallow some of contents of the [src].</span>"
|
||||
if(src.reagents.has_reagent("sugar") && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 )
|
||||
M << "<span class='notice'>You don't feel like drinking any more sugary food at the moment.</span>"
|
||||
return 0
|
||||
M << "<span class='notice'>You swallow some of contents of \the [src].</span>"
|
||||
if(reagents.total_volume)
|
||||
reagents.reaction(M, INGEST)
|
||||
spawn(5)
|
||||
|
||||
@@ -49,8 +49,15 @@
|
||||
if(!canconsume(M, user))
|
||||
return 0
|
||||
|
||||
var/fullness = M.nutrition + 10
|
||||
for(var/datum/reagent/consumable/C in M.reagents.reagent_list) //we add the nutrition value of what we're currently digesting
|
||||
fullness += C.nutriment_factor * C.volume / C.metabolization_rate
|
||||
|
||||
if(M == user) //If you're eating it yourself.
|
||||
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
|
||||
if(src.reagents.has_reagent("sugar") && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 )
|
||||
M << "<span class='notice'>You don't feel like eating any more sugary food at the moment.</span>"
|
||||
return 0
|
||||
|
||||
if(wrapped)
|
||||
M << "<span class='notice'>You can't eat wrapped food!</span>"
|
||||
return 0
|
||||
@@ -58,19 +65,18 @@
|
||||
M << "<span class='notice'>You hungrily [eatverb] some of \the [src] and gobble it down!</span>"
|
||||
else if(fullness > 50 && fullness < 150)
|
||||
M << "<span class='notice'>You hungrily begin to [eatverb] \the [src].</span>"
|
||||
else if(fullness > 150 && fullness < 350)
|
||||
else if(fullness > 150 && fullness < 500)
|
||||
M << "<span class='notice'>You [eatverb] \the [src].</span>"
|
||||
else if(fullness > 350 && fullness < 550)
|
||||
else if(fullness > 500 && fullness < 600)
|
||||
M << "<span class='notice'>You unwillingly [eatverb] a bit of \the [src].</span>"
|
||||
else if(fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
|
||||
else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
|
||||
M << "<span class='notice'>You cannot force any more of \the [src] to go down your throat.</span>"
|
||||
return 0
|
||||
else
|
||||
if(! (isslime(M) || isbrain(M)) ) //If you're feeding it to someone else.
|
||||
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
|
||||
if(wrapped)
|
||||
return 0
|
||||
if(fullness <= (550 * (1 + M.overeatduration / 1000)))
|
||||
if(fullness <= (600 * (1 + M.overeatduration / 1000)))
|
||||
M.visible_message("<span class='danger'>[user] attempts to feed [M] [src].</span>", \
|
||||
"<span class='userdanger'>[user] attempts to feed [M] [src].</span>")
|
||||
else
|
||||
@@ -78,7 +84,8 @@
|
||||
"<span class='userdanger'>[user] cannot force anymore of [src] down [M]'s throat!</span>")
|
||||
return 0
|
||||
|
||||
if(!do_mob(user, M)) return
|
||||
if(!do_mob(user, M))
|
||||
return
|
||||
add_logs(user, M, "fed", object="[reagentlist(src)]")
|
||||
M.visible_message("<span class='danger'>[user] forces [M] to eat [src].</span>", \
|
||||
"<span class='userdanger'>[user] feeds [M] to eat [src].</span>")
|
||||
@@ -182,10 +189,10 @@
|
||||
if(isanimal(M))
|
||||
if(iscorgi(M))
|
||||
if(bitecount == 0 || prob(50))
|
||||
M.emote("me", 1, "nibbles away at the [src]")
|
||||
M.emote("me", 1, "nibbles away at \the [src]")
|
||||
bitecount++
|
||||
if(bitecount >= 5)
|
||||
var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was")
|
||||
var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where \the [src] was")
|
||||
if(sattisfaction_text)
|
||||
M.emote("me", 1, "[sattisfaction_text]")
|
||||
qdel(src)
|
||||
@@ -253,6 +260,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesewedge
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/meatbread/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
|
||||
@@ -28,6 +29,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/xenomeatbread/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
|
||||
@@ -48,6 +50,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("toxin", 15)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice
|
||||
@@ -91,6 +94,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/tofubread/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
|
||||
@@ -130,6 +134,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/creamcheesebread/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
|
||||
@@ -149,4 +154,5 @@
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 3
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/human
|
||||
@@ -27,6 +28,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/fish/New()
|
||||
..()
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/tofu
|
||||
@@ -42,6 +44,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/roburger/New()
|
||||
..()
|
||||
reagents.add_reagent("nanites", 2)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/roburgerbig
|
||||
name = "roburger"
|
||||
@@ -52,6 +55,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/roburgerbig/New()
|
||||
..()
|
||||
reagents.add_reagent("nanites", 100)
|
||||
reagents.add_reagent("vitamin", 20)
|
||||
bitesize = 0.1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/xeno
|
||||
@@ -81,6 +85,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/brain/New()
|
||||
..()
|
||||
reagents.add_reagent("alkysine", 6)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/ghost
|
||||
name = "ghost burger"
|
||||
@@ -176,10 +181,12 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime/New()
|
||||
..()
|
||||
reagents.add_reagent("slimejelly", 5)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/jelly/cherry/New()
|
||||
..()
|
||||
reagents.add_reagent("cherryjelly", 5)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/burger/superbite
|
||||
name = "super bite burger"
|
||||
|
||||
@@ -8,8 +8,9 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/carrotcake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 25)
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("imidazoline", 10)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
|
||||
@@ -28,8 +29,9 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/braincake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 25)
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("alkysine", 10)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/braincakeslice
|
||||
@@ -48,7 +50,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/cheesecake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 25)
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
|
||||
@@ -68,6 +71,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/plaincake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
|
||||
name = "vanilla cake slice"
|
||||
@@ -86,6 +90,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/orangecake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
|
||||
name = "orange cake slice"
|
||||
@@ -104,6 +109,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/limecake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/limecakeslice
|
||||
name = "lime cake slice"
|
||||
@@ -122,6 +128,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/lemoncake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
|
||||
name = "lemon cake slice"
|
||||
@@ -140,6 +147,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/chocolatecake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
|
||||
name = "chocolate cake slice"
|
||||
@@ -159,6 +167,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("sprinkles", 10)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
|
||||
@@ -177,7 +186,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/store/applecake/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 15)
|
||||
reagents.add_reagent("nutriment", 20)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/applecakeslice
|
||||
name = "apple cake slice"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
@@ -120,6 +121,8 @@
|
||||
reagents.remove_reagent("nutriment", 1)
|
||||
if(reagents.total_volume <= 0)
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/benedict
|
||||
name = "eggs benedict"
|
||||
@@ -129,4 +132,5 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/benedict/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 3
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cubancarp/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
reagents.add_reagent("capsaicin", 3)
|
||||
bitesize = 3
|
||||
|
||||
@@ -25,7 +24,8 @@
|
||||
..()
|
||||
eatverb = pick("bite","chew","choke down","gnaw","swallow","chomp")
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
reagents.add_reagent("carpotoxin", 2)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/imitation
|
||||
@@ -40,7 +40,6 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishfingers/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishandchips
|
||||
@@ -51,7 +50,6 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fishandchips/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("carpotoxin", 3)
|
||||
bitesize = 3
|
||||
|
||||
////////////////////////////////////////////MEATS AND ALIKE////////////////////////////////////////////
|
||||
@@ -86,6 +84,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 12)
|
||||
reagents.add_reagent("hyperzine", 5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
src.bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
||||
@@ -96,6 +95,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeat/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
src.bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spidermeat
|
||||
@@ -107,6 +107,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("toxin", 3)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spiderleg
|
||||
@@ -139,6 +140,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/faggot/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sausage
|
||||
@@ -150,6 +152,7 @@
|
||||
..()
|
||||
eatverb = pick("bite","chew","nibble","deep throat","gobble","chomp")
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
|
||||
@@ -162,6 +165,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/wingfangchu/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/human/kebab
|
||||
@@ -205,9 +209,10 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatsteak/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sugar", 2)
|
||||
reagents.add_reagent("coco", 2)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/attack_self(mob/user)
|
||||
if(wrapped)
|
||||
@@ -51,6 +52,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
src.bitesize = 3
|
||||
|
||||
|
||||
@@ -165,6 +167,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("imidazoline", 3)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candiedapple
|
||||
@@ -175,6 +178,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candiedapple/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 3
|
||||
|
||||
/*
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent("sugar", 2)
|
||||
src.bitesize = 3
|
||||
if(prob(30))
|
||||
src.icon_state = "donut2"
|
||||
@@ -28,6 +29,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent("sugar", 1)
|
||||
bitesize = 10
|
||||
switch(rand(1,10))
|
||||
if(1)
|
||||
@@ -67,6 +69,7 @@
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent("berryjuice", 5)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
if(prob(30))
|
||||
icon_state = "jdonut2"
|
||||
name = "Frosted Jelly Donut"
|
||||
@@ -83,6 +86,7 @@
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent("slimejelly", 5)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 5
|
||||
if(prob(30))
|
||||
icon_state = "jdonut2"
|
||||
@@ -100,6 +104,7 @@
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent("cherryjelly", 5)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
if(prob(30))
|
||||
icon_state = "jdonut2"
|
||||
name = "Frosted Jelly Donut"
|
||||
@@ -150,6 +155,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/waffles/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylentgreen
|
||||
@@ -161,6 +167,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylentgreen/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylenviridians
|
||||
@@ -172,6 +179,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soylenviridians/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles
|
||||
@@ -184,6 +192,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("mushroomhallucinogen", 8)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 4
|
||||
|
||||
////////////////////////////////////////////OTHER////////////////////////////////////////////
|
||||
@@ -202,20 +211,11 @@
|
||||
name = "\improper Donk-pocket"
|
||||
desc = "The food of choice for the seasoned traitor."
|
||||
icon_state = "donkpocket"
|
||||
var/warm = 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cooltime() //Not working, derp?
|
||||
if(warm)
|
||||
spawn(4200) //ew
|
||||
warm = 0
|
||||
reagents.del_reagent("tricordrazine")
|
||||
name = initial(name)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
|
||||
name = "fortune cookie"
|
||||
desc = "A true prophecy in each cookie!"
|
||||
@@ -248,12 +248,11 @@
|
||||
if(prob(10))
|
||||
name = "exceptional plump helmet biscuit"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("tricordrazine", 5)
|
||||
bitesize = 2
|
||||
else
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
bitesize = 2
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/appletart
|
||||
name = "golden apple streusel tart"
|
||||
@@ -265,6 +264,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("gold", 5)
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cracker
|
||||
@@ -285,6 +285,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("ketchup", 3)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatbun
|
||||
@@ -295,6 +296,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatbun/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie
|
||||
@@ -304,6 +306,6 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("sugar", 5)
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 2
|
||||
@@ -9,6 +9,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("banana",5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom)
|
||||
@@ -27,6 +28,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("berryjuice", 5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatpie
|
||||
@@ -38,6 +40,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatpie/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofupie
|
||||
@@ -49,6 +52,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofupie/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/amanita_pie
|
||||
@@ -61,7 +65,8 @@
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("amatoxin", 3)
|
||||
reagents.add_reagent("mushroomhallucinogen", 1)
|
||||
bitesize = 3
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plump_pie
|
||||
name = "plump pie"
|
||||
@@ -73,12 +78,11 @@
|
||||
if(prob(10))
|
||||
name = "exceptional plump pie"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("tricordrazine", 5)
|
||||
bitesize = 2
|
||||
else
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
bitesize = 2
|
||||
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xemeatpie
|
||||
name = "xeno-pie"
|
||||
@@ -89,6 +93,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xemeatpie/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/applepie
|
||||
@@ -99,6 +104,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/applepie/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cherrypie
|
||||
@@ -109,6 +115,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cherrypie/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
|
||||
@@ -121,6 +128,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 15)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
|
||||
name = "pumpkin pie slice"
|
||||
|
||||
@@ -13,8 +13,9 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 40)
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("tomatojuice", 6)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/margheritaslice
|
||||
@@ -32,8 +33,9 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 50)
|
||||
reagents.add_reagent("nutriment", 40)
|
||||
reagents.add_reagent("tomatojuice", 6)
|
||||
reagents.add_reagent("vitamin", 8)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
|
||||
@@ -51,7 +53,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 35)
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
|
||||
@@ -69,9 +72,10 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 30)
|
||||
reagents.add_reagent("nutriment", 25)
|
||||
reagents.add_reagent("tomatojuice", 6)
|
||||
reagents.add_reagent("imidazoline", 12)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
|
||||
@@ -235,3 +239,23 @@
|
||||
update_icon()
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/pizzabox/margherita/New()
|
||||
pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita(src)
|
||||
boxtag = "Margherita Deluxe"
|
||||
update_icon()
|
||||
|
||||
/obj/item/pizzabox/vegetable/New()
|
||||
pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src)
|
||||
boxtag = "Gourmet Vegatable"
|
||||
update_icon()
|
||||
|
||||
/obj/item/pizzabox/mushroom/New()
|
||||
pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src)
|
||||
boxtag = "Mushroom Special"
|
||||
update_icon()
|
||||
|
||||
/obj/item/pizzabox/meat/New()
|
||||
pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src)
|
||||
boxtag = "Meatlover's Supreme"
|
||||
update_icon()
|
||||
@@ -12,6 +12,7 @@
|
||||
eatverb = pick("crunch","devour","nibble","gnaw","gobble","chomp")
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("tricordrazine", 8)
|
||||
reagents.add_reagent("vitamin", 6)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/herbsalad
|
||||
@@ -23,6 +24,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/herbsalad/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/validsalad
|
||||
@@ -35,4 +37,5 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("doctorsdelight", 5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 3
|
||||
@@ -8,6 +8,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sandwich/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich
|
||||
@@ -31,6 +32,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grilledcheese/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 7)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich
|
||||
@@ -47,10 +49,12 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/New()
|
||||
..()
|
||||
reagents.add_reagent("slimejelly", 5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/New()
|
||||
..()
|
||||
reagents.add_reagent("cherryjelly", 5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich
|
||||
name = "icecream sandwich"
|
||||
@@ -72,6 +76,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/notasandwich/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 6)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast
|
||||
@@ -88,10 +93,12 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/New()
|
||||
..()
|
||||
reagents.add_reagent("cherryjelly", 5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/New()
|
||||
..()
|
||||
reagents.add_reagent("slimejelly", 5)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/twobread
|
||||
name = "two bread"
|
||||
@@ -101,4 +108,5 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/twobread/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 3
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("water", 5)
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slimesoup
|
||||
@@ -22,6 +23,7 @@
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("slimejelly", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bloodsoup
|
||||
@@ -35,6 +37,7 @@
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("blood", 10)
|
||||
reagents.add_reagent("water", 5)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/clownstears
|
||||
@@ -48,6 +51,7 @@
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("banana", 5)
|
||||
reagents.add_reagent("water", 10)
|
||||
reagents.add_reagent("vitamin", 8)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup
|
||||
@@ -61,6 +65,7 @@
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("water", 5)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/nettlesoup
|
||||
@@ -75,6 +80,7 @@
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("water", 5)
|
||||
reagents.add_reagent("tricordrazine", 5)
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mysterysoup
|
||||
@@ -137,6 +143,7 @@
|
||||
if(prob(25))
|
||||
desc = "A wish come true!"
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hotchili
|
||||
name = "hot chili"
|
||||
@@ -147,9 +154,10 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hotchili/New()
|
||||
..()
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("capsaicin", 3)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("capsaicin", 1)
|
||||
reagents.add_reagent("tomatojuice", 2)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 5
|
||||
|
||||
|
||||
@@ -162,9 +170,10 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/coldchili/New()
|
||||
..()
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("frostoil", 3)
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("frostoil", 1)
|
||||
reagents.add_reagent("tomatojuice", 2)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight
|
||||
@@ -179,7 +188,8 @@
|
||||
reagents.add_reagent("banana", 5)
|
||||
reagents.add_reagent("blackpepper", 1)
|
||||
reagents.add_reagent("sodiumchloride", 1)
|
||||
bitesize = 6
|
||||
reagents.add_reagent("vitamin", 5)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tomatosoup
|
||||
name = "tomato soup"
|
||||
@@ -192,6 +202,7 @@
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
reagents.add_reagent("tomatojuice", 10)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/milosoup
|
||||
@@ -205,6 +216,7 @@
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("water", 5)
|
||||
reagents.add_reagent("vitamin", 3)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup
|
||||
@@ -217,6 +229,7 @@
|
||||
..()
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/beetsoup
|
||||
@@ -230,4 +243,5 @@
|
||||
eatverb = pick("slurp","sip","suck","inhale","drink")
|
||||
name = pick("borsch","bortsch","borstch","borsh","borshch","borscht")
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 2
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spaghetti/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti
|
||||
@@ -18,6 +19,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pastatomato
|
||||
@@ -30,6 +32,7 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("tomatojuice", 10)
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/copypasta
|
||||
@@ -42,7 +45,8 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 12)
|
||||
reagents.add_reagent("tomatojuice", 20)
|
||||
bitesize = 1
|
||||
reagents.add_reagent("vitamin", 8)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti
|
||||
name = "spaghetti and meatballs"
|
||||
@@ -53,7 +57,8 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
bitesize = 2
|
||||
reagents.add_reagent("vitamin", 4)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spesslaw
|
||||
name = "spesslaw"
|
||||
@@ -63,7 +68,8 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spesslaw/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
bitesize = 2
|
||||
reagents.add_reagent("vitamin", 6)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm
|
||||
name = "eggplant parmigiana"
|
||||
@@ -74,4 +80,5 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/eggplantparm/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("vitamin", 2)
|
||||
bitesize = 2
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sosjerky/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chips
|
||||
@@ -33,7 +34,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chips/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 3)
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/no_raisin
|
||||
@@ -44,7 +46,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/no_raisin/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 6)
|
||||
reagents.add_reagent("nutriment", 2)
|
||||
reagents.add_reagent("sugar", 4)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie
|
||||
name = "space twinkie"
|
||||
@@ -64,7 +67,8 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers/New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/syndicake
|
||||
|
||||
@@ -71,31 +71,10 @@
|
||||
/datum/recipe/donkpocket
|
||||
reagents = list("flour" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/faggot,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/faggot
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL
|
||||
proc/warm_up(var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked)
|
||||
being_cooked.warm = 1
|
||||
being_cooked.reagents.add_reagent("tricordrazine", 5)
|
||||
being_cooked.bitesize = 6
|
||||
being_cooked.name = "Warm " + being_cooked.name
|
||||
being_cooked.cooltime()
|
||||
make_food(var/obj/container as obj)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = ..(container)
|
||||
warm_up(being_cooked)
|
||||
return being_cooked
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket
|
||||
|
||||
/datum/recipe/donkpocket/warm
|
||||
reagents = list() //This is necessary since this is a child object of the above recipe and we don't want donk pockets to need flour
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donkpocket
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL
|
||||
make_food(var/obj/container as obj)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = locate() in container
|
||||
if(being_cooked && !being_cooked.warm)
|
||||
warm_up(being_cooked)
|
||||
return being_cooked
|
||||
|
||||
////////////////////////////////////////////////MUFFINS////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/corn/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
|
||||
@@ -116,7 +117,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 15), 1))
|
||||
reagents.add_reagent("sugar", 1 + round((potency / 15), 1))
|
||||
reagents.add_reagent("sugar", 1 + round((potency / 50), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
|
||||
@@ -156,6 +157,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = reagents.total_volume
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -184,7 +186,8 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("sugar", 1 + round((potency / 5), 1))
|
||||
reagents.add_reagent("sugar", 1 + round((potency / 40), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green
|
||||
@@ -208,6 +211,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
|
||||
@@ -221,6 +225,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison
|
||||
@@ -318,6 +323,7 @@
|
||||
reagents.add_reagent("kelotane", 1 + round(potency / 8, 1))
|
||||
reagents.add_reagent("bicaridine", 1 + round(potency / 10, 1))
|
||||
reagents.add_reagent("toxin", 1 + round(potency / 10, 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus
|
||||
@@ -332,6 +338,7 @@
|
||||
reagents.add_reagent("synaptizine", 1 + round(potency / 8, 1))
|
||||
reagents.add_reagent("hyperzine", 1 + round(potency / 10, 1))
|
||||
reagents.add_reagent("space_drugs", 1 + round(potency / 10, 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/apple
|
||||
@@ -344,6 +351,7 @@
|
||||
if(..())
|
||||
reagents.maximum_volume = 20
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
bitesize = reagents.maximum_volume // Always eat the apple in one
|
||||
|
||||
|
||||
@@ -386,6 +394,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 6), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
|
||||
@@ -397,6 +406,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 6), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -417,6 +427,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime
|
||||
@@ -447,6 +458,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", round((potency / 20), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
reagents.add_reagent("sugar", 1 + round((potency / 5), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
@@ -461,7 +473,9 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
|
||||
reagents.add_reagent("banana", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili
|
||||
@@ -474,6 +488,7 @@
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 25), 1))
|
||||
reagents.add_reagent("capsaicin", 3+round(potency / 5, 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/chili/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
@@ -491,6 +506,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper/add_juice()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 50), 1))
|
||||
reagents.add_reagent("frostoil", 3+round(potency / 5, 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
@@ -546,6 +562,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
|
||||
@@ -581,6 +598,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans
|
||||
@@ -593,6 +611,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 30), 1))
|
||||
reagents.add_reagent("carpotoxin", 1 + round((potency / 20), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
|
||||
@@ -606,6 +625,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
|
||||
reagents.add_reagent("moonshine", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 50), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
//tomaters
|
||||
@@ -619,6 +639,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/proc/squish(atom/target)
|
||||
@@ -808,6 +829,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
reagents.add_reagent("imidazoline", 3+round(potency / 5, 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
@@ -895,6 +917,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet/add_juice()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 2+round((potency / 10), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
|
||||
@@ -1040,6 +1063,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("coffeepowder", 1 + round((potency / 10), 2))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
|
||||
bitesize = 1 + round(reagents.total_volume / 2, 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/arabica
|
||||
@@ -1067,6 +1091,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("nutriment", 1 + round((potency / 40), 1))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 40), 1))
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco_space
|
||||
@@ -1089,6 +1114,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/add_juice()
|
||||
if(..())
|
||||
reagents.add_reagent("teapowder", 1 + round((potency / 10), 2))
|
||||
reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/aspera
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
/obj/item/weapon/grown/log/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy))
|
||||
user.show_message("<span class='notice'>You make planks out of the [src]!</span>", 1)
|
||||
user.show_message("<span class='notice'>You make planks out of \the [src]!</span>", 1)
|
||||
for(var/i = 0,i < 2,i++)
|
||||
var/obj/item/stack/sheet/mineral/wood/NG = new (user.loc)
|
||||
for (var/obj/item/stack/sheet/mineral/wood/G in user.loc)
|
||||
@@ -83,7 +83,7 @@
|
||||
if(is_type_in_list(W,accepted))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/leaf = W
|
||||
if(leaf.dry)
|
||||
user.show_message("<span class='notice'>You wrap the [W] around the log, turning it into a torch!</span>")
|
||||
user.show_message("<span class='notice'>You wrap \the [W] around the log, turning it into a torch!</span>")
|
||||
var/obj/item/device/flashlight/flare/torch/T = new /obj/item/device/flashlight/flare/torch(user.loc)
|
||||
usr.unEquip(W)
|
||||
usr.put_in_active_hand(T)
|
||||
|
||||
@@ -721,12 +721,12 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(anchored == 2)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
anchored = 1
|
||||
user << "You unscrew the [src]'s hoses."
|
||||
user << "You unscrew \the [src]'s hoses."
|
||||
|
||||
else if(anchored == 1)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
anchored = 2
|
||||
user << "You screw in the [src]'s hoses."
|
||||
user << "You screw in \the [src]'s hoses."
|
||||
|
||||
for(var/obj/machinery/hydroponics/h in range(1,src))
|
||||
spawn()
|
||||
|
||||
@@ -174,7 +174,9 @@
|
||||
/obj/item/weapon/book/attack_self(mob/user)
|
||||
if(is_blind(user))
|
||||
return
|
||||
|
||||
if(ismonkey(user))
|
||||
user << "<span class='notice'>You skim through the book but can't comprehend any of it.</span>"
|
||||
return
|
||||
if(dat)
|
||||
user << browse("<TT><I>Penned by [author].</I></TT> <BR>" + "[dat]", "window=book[window_size != null ? ";size=[window_size]" : ""]")
|
||||
user.visible_message("[user] opens a book titled \"[title]\" and begins reading intently.")
|
||||
|
||||
@@ -474,7 +474,7 @@
|
||||
|
||||
/obj/item/weapon/resonator/proc/CreateResonance(var/target, var/creator)
|
||||
if(cooldown <= 0)
|
||||
playsound(src,'sound/effects/stealthoff.ogg',50,1)
|
||||
playsound(src,'sound/weapons/resonator_fire.ogg',50,1)
|
||||
var/obj/effect/resonance/R = new /obj/effect/resonance(get_turf(target))
|
||||
R.creator = creator
|
||||
cooldown = 1
|
||||
@@ -507,7 +507,7 @@
|
||||
return
|
||||
if(istype(proj_turf, /turf/simulated/mineral))
|
||||
var/turf/simulated/mineral/M = proj_turf
|
||||
playsound(src,'sound/effects/sparks4.ogg',50,1)
|
||||
playsound(src,'sound/weapons/resonator_blast.ogg',50,1)
|
||||
M.gets_drilled()
|
||||
spawn(5)
|
||||
qdel(src)
|
||||
@@ -518,7 +518,7 @@
|
||||
name = "strong resonance field"
|
||||
resonance_damage = 45
|
||||
spawn(50)
|
||||
playsound(src,'sound/effects/sparks4.ogg',50,1)
|
||||
playsound(src,'sound/weapons/resonator_blast.ogg',50,1)
|
||||
if(creator)
|
||||
for(var/mob/living/L in src.loc)
|
||||
add_logs(creator, L, "used a resonator field on", object="resonator")
|
||||
|
||||
@@ -69,9 +69,13 @@
|
||||
w_class = 4.0
|
||||
m_amt = 3750 //one sheet, but where can you make them?
|
||||
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
|
||||
var/list/digsound = list('sound/effects/picaxe1.ogg','sound/effects/picaxe2.ogg','sound/effects/picaxe3.ogg')
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
attack_verb = list("hit", "pierced", "sliced", "attacked")
|
||||
|
||||
/obj/item/weapon/pickaxe/proc/playDigSound()
|
||||
playsound(src, pick(digsound),20,1)
|
||||
|
||||
/obj/item/weapon/pickaxe/silver
|
||||
name = "silver pickaxe"
|
||||
icon_state = "spickaxe"
|
||||
@@ -85,17 +89,32 @@
|
||||
icon_state = "handdrill"
|
||||
item_state = "jackhammer"
|
||||
digspeed = 30
|
||||
digsound = list('sound/weapons/drill.ogg')
|
||||
hitsound = 'sound/weapons/drill.ogg'
|
||||
origin_tech = "materials=2;powerstorage=3;engineering=2"
|
||||
desc = "Yours is the drill that will pierce through the rock walls."
|
||||
|
||||
/obj/item/weapon/pickaxe/drill/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME! making it a child of drill to stop copypasta
|
||||
name = "diamond mining drill"
|
||||
icon_state = "diamonddrill"
|
||||
digspeed = 5 //Digs through walls, girders, and can dig up sand
|
||||
origin_tech = "materials=6;powerstorage=4;engineering=5"
|
||||
desc = "Yours is the drill that will pierce the heavens!"
|
||||
|
||||
/obj/item/weapon/pickaxe/jackhammer
|
||||
name = "sonic jackhammer"
|
||||
icon_state = "jackhammer"
|
||||
item_state = "jackhammer"
|
||||
digspeed = 15 //faster than drill, but cannot dig
|
||||
origin_tech = "materials=3;powerstorage=2;engineering=2"
|
||||
digsound = list('sound/weapons/sonic_jackhammer.ogg')
|
||||
hitsound = 'sound/weapons/sonic_jackhammer.ogg'
|
||||
desc = "Cracks rocks with sonic blasts, perfect for clearing large areas of rock."
|
||||
|
||||
/obj/item/weapon/pickaxe/jackhammer/borgdrill // making it a parrent of jackhammer to prevent copypasta
|
||||
name = "cyborg mining drill"
|
||||
desc = ""
|
||||
|
||||
/obj/item/weapon/pickaxe/gold
|
||||
name = "golden pickaxe"
|
||||
icon_state = "gpickaxe"
|
||||
@@ -111,6 +130,8 @@
|
||||
w_class = 3.0 //it is smaller than the pickaxe
|
||||
damtype = "fire"
|
||||
digspeed = 20 //Can slice though normal walls, all girders, or be used in reinforced wall deconstruction/ light thermite on fire
|
||||
digsound = list('sound/weapons/plasma_cutter.ogg')
|
||||
hitsound = 'sound/weapons/plasma_cutter.ogg'
|
||||
origin_tech = "materials=4;plasmatech=3;engineering=3"
|
||||
desc = "A rock cutter that uses bursts of hot plasma. You could use it to cut limbs off of xenos! Or, you know, mine stuff."
|
||||
|
||||
@@ -122,20 +143,9 @@
|
||||
origin_tech = "materials=6;engineering=4"
|
||||
desc = "A pickaxe with a diamond pick head, this is just like minecraft."
|
||||
|
||||
/obj/item/weapon/pickaxe/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME!
|
||||
name = "diamond mining drill"
|
||||
icon_state = "diamonddrill"
|
||||
item_state = "jackhammer"
|
||||
digspeed = 5 //Digs through walls, girders, and can dig up sand
|
||||
origin_tech = "materials=6;powerstorage=4;engineering=5"
|
||||
desc = "Yours is the drill that will pierce the heavens!"
|
||||
|
||||
/obj/item/weapon/pickaxe/borgdrill
|
||||
name = "cyborg mining drill"
|
||||
icon_state = "jackhammer"
|
||||
item_state = "jackhammer"
|
||||
digspeed = 15
|
||||
desc = ""
|
||||
|
||||
|
||||
|
||||
/*****************************Shovel********************************/
|
||||
|
||||
|
||||
@@ -371,13 +371,13 @@
|
||||
new /mob/living/simple_animal/hostile/asteroid/hivelord(T)
|
||||
return
|
||||
|
||||
/turf/simulated/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/turf/simulated/mineral/attackby(var/obj/item/weapon/pickaxe/P as obj, mob/user as mob)
|
||||
|
||||
if (!user.IsAdvancedToolUser())
|
||||
usr << "<span class='danger'>You don't have the dexterity to do this!</span>"
|
||||
return
|
||||
|
||||
if (istype(W, /obj/item/weapon/pickaxe))
|
||||
if (istype(P, /obj/item/weapon/pickaxe))
|
||||
var/turf/T = user.loc
|
||||
if (!( istype(T, /turf) ))
|
||||
return
|
||||
@@ -388,13 +388,14 @@
|
||||
return
|
||||
*/
|
||||
//Watch your tabbing, microwave. --NEO
|
||||
if(last_act+W:digspeed > world.time)//prevents message spam
|
||||
if(last_act+P.digspeed > world.time)//prevents message spam
|
||||
return
|
||||
last_act = world.time
|
||||
user << "<span class='danger'>You start picking.</span>"
|
||||
playsound(user, 'sound/weapons/Genhit.ogg', 20, 1)
|
||||
//playsound(user, 'sound/weapons/Genhit.ogg', 20, 1)
|
||||
P.playDigSound()
|
||||
|
||||
if(do_after(user,W:digspeed))
|
||||
if(do_after(user,P.digspeed))
|
||||
user << "<span class='notice'>You finish cutting into the rock.</span>"
|
||||
gets_drilled()
|
||||
else
|
||||
@@ -420,6 +421,7 @@
|
||||
if (src.mineralName == "Bananium")
|
||||
new /obj/item/weapon/ore/bananium(src)
|
||||
var/turf/simulated/floor/plating/asteroid/airless/N = ChangeTurf(/turf/simulated/floor/plating/asteroid/airless)
|
||||
playsound(src, 'sound/effects/break_stone.ogg', 50, 1) //beautiful destruction
|
||||
N.fullUpdateMineralOverlays()
|
||||
return
|
||||
|
||||
@@ -507,7 +509,7 @@
|
||||
return
|
||||
|
||||
/turf/simulated/floor/plating/asteroid/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
//note that this proc does not call ..()
|
||||
if(!W || !user)
|
||||
return 0
|
||||
|
||||
@@ -521,7 +523,7 @@
|
||||
return
|
||||
|
||||
user << "<span class='danger'>You start digging.</span>"
|
||||
playsound(src, 'sound/effects/rustle1.ogg', 50, 1) //russle sounds sounded better
|
||||
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE
|
||||
|
||||
sleep(40)
|
||||
if ((user.loc == T && user.get_active_hand() == W))
|
||||
@@ -539,14 +541,14 @@
|
||||
return
|
||||
|
||||
user << "<span class='danger'>You start digging.</span>"
|
||||
playsound(src, 'sound/effects/rustle1.ogg', 50, 1) //russle sounds sounded better
|
||||
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE
|
||||
|
||||
sleep(30)
|
||||
if ((user.loc == T && user.get_active_hand() == W))
|
||||
user << "<span class='notice'>You dug a hole.</span>"
|
||||
gets_dug()
|
||||
|
||||
if ((istype(W,/obj/item/weapon/pickaxe/diamonddrill)) || (istype(W,/obj/item/weapon/pickaxe/borgdrill)))
|
||||
if ((istype(W,/obj/item/weapon/pickaxe/drill/diamonddrill)) || (istype(W,/obj/item/weapon/pickaxe/jackhammer/borgdrill)))
|
||||
var/turf/T = user.loc
|
||||
if (!( istype(T, /turf) ))
|
||||
return
|
||||
@@ -556,7 +558,7 @@
|
||||
return
|
||||
|
||||
user << "<span class='danger'>You start digging.</span>"
|
||||
playsound(src, 'sound/effects/rustle1.ogg', 50, 1) //russle sounds sounded better
|
||||
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE
|
||||
|
||||
sleep(0)
|
||||
if ((user.loc == T && user.get_active_hand() == W))
|
||||
@@ -570,10 +572,6 @@
|
||||
O.attackby(W,user)
|
||||
return
|
||||
|
||||
else
|
||||
..(W,user)
|
||||
return
|
||||
|
||||
/turf/simulated/floor/plating/asteroid/proc/gets_dug()
|
||||
if(dug)
|
||||
return
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
if(triggered_by_explosive)
|
||||
log_game("An explosion has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])")
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] strikes the [src], causing a chain reaction!</span>")
|
||||
user.visible_message("<span class='warning'>[user] strikes \the [src], causing a chain reaction!</span>")
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])")
|
||||
spawn(det_time)
|
||||
if(primed)
|
||||
|
||||
@@ -301,3 +301,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
return 0
|
||||
usr.visible_message("<span class='deadsay'><b>[src]</b> points to [A]</span>")
|
||||
return 1
|
||||
|
||||
/mob/dead/observer/verb/view_manfiest()
|
||||
set name = "View Crew Manifest"
|
||||
set category = "Ghost"
|
||||
|
||||
var/dat
|
||||
dat += "<h4>Crew Manifest</h4>"
|
||||
dat += data_core.get_manifest()
|
||||
|
||||
src << browse(dat, "window=manifest;size=370x420;can_close=1")
|
||||
@@ -228,7 +228,7 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
return
|
||||
|
||||
/proc/CanHug(var/mob/M)
|
||||
if(!M)
|
||||
if(!istype(M))
|
||||
return 0
|
||||
if(M.stat == DEAD)
|
||||
return 0
|
||||
|
||||
@@ -222,10 +222,10 @@
|
||||
msg += "[t_He] looks a little soaked.\n"
|
||||
|
||||
|
||||
if(nutrition < 100)
|
||||
if(nutrition < NUTRITION_LEVEL_STARVING - 50)
|
||||
msg += "[t_He] [t_is] severely malnourished.\n"
|
||||
else if(nutrition >= 500)
|
||||
if(user.nutrition < 100)
|
||||
else if(nutrition >= NUTRITION_LEVEL_FAT)
|
||||
if(user.nutrition < NUTRITION_LEVEL_STARVING - 50)
|
||||
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
|
||||
else
|
||||
msg += "[t_He] [t_is] quite chubby.\n"
|
||||
|
||||
@@ -242,10 +242,10 @@
|
||||
if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up.
|
||||
nutrition -= 2
|
||||
var/body_temperature_difference = 310.15 - bodytemperature
|
||||
bodytemperature += max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
|
||||
bodytemperature += max((body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM)
|
||||
if(260.15 to 360.15)
|
||||
var/body_temperature_difference = 310.15 - bodytemperature
|
||||
bodytemperature += body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR
|
||||
bodytemperature += body_temperature_difference * metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR
|
||||
if(360.15 to INFINITY) //360.15 is 310.15 + 50, the temperature where you start to feel effects.
|
||||
//We totally need a sweat system cause it totally makes sense...~
|
||||
var/body_temperature_difference = 310.15 - bodytemperature
|
||||
|
||||
@@ -400,17 +400,42 @@
|
||||
H.update_inv_w_uniform(0)
|
||||
H.update_inv_wear_suit()
|
||||
|
||||
// nutrition decrease
|
||||
// nutrition decrease and satiety
|
||||
if (H.nutrition > 0 && H.stat != 2)
|
||||
H.nutrition = max (0, H.nutrition - HUNGER_FACTOR)
|
||||
var/hunger_rate = HUNGER_FACTOR
|
||||
if(H.satiety > 0)
|
||||
H.satiety--
|
||||
if(H.satiety < 0)
|
||||
H.satiety++
|
||||
if(prob(round(-H.satiety/40)))
|
||||
H.Jitter(5)
|
||||
hunger_rate = 5 * HUNGER_FACTOR
|
||||
H.nutrition = max (0, H.nutrition - hunger_rate)
|
||||
|
||||
if (H.nutrition > 450)
|
||||
|
||||
if (H.nutrition > NUTRITION_LEVEL_FULL)
|
||||
if(H.overeatduration < 600) //capped so people don't take forever to unfat
|
||||
H.overeatduration++
|
||||
else
|
||||
if(H.overeatduration > 1)
|
||||
H.overeatduration -= 2 //doubled the unfat rate
|
||||
|
||||
//metabolism change
|
||||
if(H.nutrition > NUTRITION_LEVEL_FAT)
|
||||
H.metabolism_efficiency = 1
|
||||
else if(H.nutrition > NUTRITION_LEVEL_FED && H.satiety > 80)
|
||||
if(H.metabolism_efficiency != 1.25)
|
||||
H << "<span class='notice'>You feel vigorous.</span>"
|
||||
H.metabolism_efficiency = 1.25
|
||||
else if(H.nutrition < NUTRITION_LEVEL_STARVING + 50)
|
||||
if(H.metabolism_efficiency != 0.8)
|
||||
H << "<span class='notice'>You feel sluggish.</span>"
|
||||
H.metabolism_efficiency = 0.8
|
||||
else
|
||||
if(H.metabolism_efficiency == 1.25)
|
||||
H << "<span class='notice'>You no longer feel vigorous.</span>"
|
||||
H.metabolism_efficiency = 1
|
||||
|
||||
if (H.drowsyness)
|
||||
H.drowsyness--
|
||||
H.eye_blurry = max(2, H.eye_blurry)
|
||||
@@ -536,11 +561,18 @@
|
||||
|
||||
if(H.nutrition_icon)
|
||||
switch(H.nutrition)
|
||||
if(450 to INFINITY) H.nutrition_icon.icon_state = "nutrition0"
|
||||
if(350 to 450) H.nutrition_icon.icon_state = "nutrition1"
|
||||
if(250 to 350) H.nutrition_icon.icon_state = "nutrition2"
|
||||
if(150 to 250) H.nutrition_icon.icon_state = "nutrition3"
|
||||
else H.nutrition_icon.icon_state = "nutrition4"
|
||||
if(NUTRITION_LEVEL_FULL to INFINITY)
|
||||
H.nutrition_icon.icon_state = "nutritionFAT"
|
||||
if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
|
||||
H.nutrition_icon.icon_state = "nutrition0"
|
||||
if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
|
||||
H.nutrition_icon.icon_state = "nutrition1"
|
||||
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
|
||||
H.nutrition_icon.icon_state = "nutrition2"
|
||||
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
|
||||
H.nutrition_icon.icon_state = "nutrition3"
|
||||
else
|
||||
H.nutrition_icon.icon_state = "nutrition4"
|
||||
|
||||
if(H.pressure)
|
||||
H.pressure.icon_state = "pressure[H.pressure_alert]"
|
||||
@@ -651,7 +683,7 @@
|
||||
if(J.allow_thrust(0.01, H))
|
||||
hasjetpack = 1
|
||||
var/grav = has_gravity(H)
|
||||
|
||||
|
||||
if(!grav && !hasjetpack)
|
||||
mspeed += 1 //Slower space without jetpack
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
H.adjustFireLoss(rand(5,15))
|
||||
H.show_message("<span class='danger'>The radiation beam singes you!</span>")
|
||||
if(/obj/item/projectile/energy/florayield)
|
||||
H.nutrition = min(H.nutrition+30, 500)
|
||||
H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
|
||||
return
|
||||
|
||||
/*
|
||||
@@ -103,14 +103,14 @@
|
||||
if(A.lighting_use_dynamic) light_amount = min(10,T.lighting_lumcount) - 5
|
||||
else light_amount = 5
|
||||
H.nutrition += light_amount
|
||||
if(H.nutrition > 500)
|
||||
H.nutrition = 500
|
||||
if(H.nutrition > NUTRITION_LEVEL_FULL)
|
||||
H.nutrition = NUTRITION_LEVEL_FULL
|
||||
if(light_amount > 2) //if there's enough light, heal
|
||||
H.heal_overall_damage(1,1)
|
||||
H.adjustToxLoss(-1)
|
||||
H.adjustOxyLoss(-1)
|
||||
|
||||
if(H.nutrition < 200)
|
||||
if(H.nutrition < NUTRITION_LEVEL_STARVING + 50)
|
||||
H.take_overall_damage(2,0)
|
||||
|
||||
/*
|
||||
|
||||
@@ -347,10 +347,10 @@
|
||||
if(issilicon(L) && (rabid || attacked)) // They can't eat silicons, but they can glomp them in defence
|
||||
targets += L // Possible target found!
|
||||
|
||||
if(istype(L, /mob/living/carbon/human) && dna) //Ignore slime(wo)men
|
||||
if(istype(L, /mob/living/carbon/human)) //Ignore slime(wo)men
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(H.dna)
|
||||
if(/mob/living/carbon/slime in H.dna.species.ignored_by)
|
||||
if(src.type in H.dna.species.ignored_by)
|
||||
continue
|
||||
|
||||
if(!L.canmove) // Only one slime can latch on at a time.
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0)
|
||||
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/stamina = 0, var/blocked = 0)
|
||||
if(blocked >= 100) return 0
|
||||
if(stun) apply_effect(stun, STUN, blocked)
|
||||
if(weaken) apply_effect(weaken, WEAKEN, blocked)
|
||||
@@ -73,4 +73,5 @@
|
||||
if(stutter) apply_effect(stutter, STUTTER, blocked)
|
||||
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
|
||||
if(drowsy) apply_effect(drowsy, DROWSY, blocked)
|
||||
if(stamina) apply_effect(stamina, STAMINA, blocked)
|
||||
return 1
|
||||
@@ -378,7 +378,7 @@
|
||||
SetStunned(0)
|
||||
SetWeakened(0)
|
||||
radiation = 0
|
||||
nutrition = 400
|
||||
nutrition = NUTRITION_LEVEL_FED + 50
|
||||
bodytemperature = 310
|
||||
sdisabilities = 0
|
||||
disabilities = 0
|
||||
@@ -540,6 +540,7 @@
|
||||
if(C.handcuffed)
|
||||
C.handcuffed = null
|
||||
C.update_inv_handcuffed(0)
|
||||
return
|
||||
else
|
||||
C.legcuffed = null
|
||||
C.update_inv_legcuffed(0)
|
||||
@@ -571,18 +572,19 @@
|
||||
C.visible_message("<span class='warning'>[C] attempts to remove [I]!</span>")
|
||||
C << "<span class='notice'>You attempt to remove [I]. (This will take around [displaytime] minutes and you need to stand still.)</span>"
|
||||
spawn(0)
|
||||
if(do_after(C, breakouttime))
|
||||
if(do_after(C, breakouttime, 10))
|
||||
if(!I || C.buckled)
|
||||
return
|
||||
C.visible_message("<span class='danger'>[C] manages to remove [I]!</span>")
|
||||
C << "<span class='notice'>You successfully remove [I].</span>"
|
||||
|
||||
if(C.handcuffed)
|
||||
C.handcuffed.loc = usr.loc
|
||||
C.handcuffed.loc = C.loc
|
||||
C.handcuffed = null
|
||||
C.update_inv_handcuffed(0)
|
||||
return
|
||||
if(C.legcuffed)
|
||||
C.legcuffed.loc = usr.loc
|
||||
C.legcuffed.loc = C.loc
|
||||
C.legcuffed = null
|
||||
C.update_inv_legcuffed(0)
|
||||
else
|
||||
@@ -760,6 +762,13 @@
|
||||
/mob/living/singularity_pull(S)
|
||||
step_towards(src,S)
|
||||
|
||||
/mob/living/narsie_act()
|
||||
if(client)
|
||||
makeNewConstruct(/mob/living/simple_animal/construct/harvester, src, null, 1)
|
||||
spawn_dust()
|
||||
gib()
|
||||
return
|
||||
|
||||
/mob/living/proc/do_attack_animation(atom/A)
|
||||
var/pixel_x_diff = 0
|
||||
var/pixel_y_diff = 0
|
||||
|
||||
@@ -41,3 +41,4 @@
|
||||
var/floating = 0
|
||||
var/nightvision = 0
|
||||
var/mob_size = 1 //size of the mob. 0 is small, 1 is human sized, and 2 is large.
|
||||
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
|
||||
@@ -261,6 +261,8 @@ var/list/department_radio_keys = list(
|
||||
if(stuttering)
|
||||
message = stutter(message)
|
||||
|
||||
message = capitalize(message)
|
||||
|
||||
return message
|
||||
|
||||
/mob/living/proc/radio(message, message_mode, steps)
|
||||
|
||||
@@ -548,7 +548,7 @@ var/list/ai_list = list()
|
||||
cleared = 1
|
||||
L -= I
|
||||
if (cleared)
|
||||
queueAlarm(text("--- [] alarm in [] has been cleared.", class, A.name), class, 0)
|
||||
queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0)
|
||||
if (viewalerts) ai_alerts()
|
||||
return !cleared
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
return !config.silent_ai
|
||||
|
||||
/mob/living/silicon/ai/radio(message, message_mode)
|
||||
if(!radio_enabled || aiRestorePowerRoutine || stat) //AI cannot speak if radio is disabled (via intelicard) or depowered.
|
||||
if(!radio_enabled || aiRestorePowerRoutine || stat) //AI cannot speak if radio is disabled (via intellicard) or depowered.
|
||||
src << "<span class='danger'>Your radio transmitter is offline!</span>"
|
||||
return 0
|
||||
..(message,message_mode)
|
||||
|
||||
@@ -385,7 +385,7 @@
|
||||
cleared = 1
|
||||
L -= I
|
||||
if (cleared)
|
||||
queueAlarm(text("--- [class] alarm in [A.name] has been cleared."), class, 0)
|
||||
queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0)
|
||||
// if (viewalerts) robot_alerts()
|
||||
return !cleared
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
modules += new /obj/item/device/flashlight/seclite(src)
|
||||
modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src)
|
||||
modules += new /obj/item/weapon/melee/baton/loaded(src)
|
||||
modules += new /obj/item/weapon/gun/energy/taser/cyborg(src)
|
||||
modules += new /obj/item/weapon/gun/energy/gun/advtaser/cyborg(src)
|
||||
modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src)
|
||||
emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
|
||||
fix_modules()
|
||||
@@ -223,9 +223,9 @@
|
||||
emag = new /obj/item/borg/stun(src)
|
||||
modules += new /obj/item/weapon/storage/bag/ore(src)
|
||||
if(R.emagged)
|
||||
modules += new /obj/item/weapon/pickaxe/diamonddrill(src)
|
||||
modules += new /obj/item/weapon/pickaxe/drill/diamonddrill(src)
|
||||
else
|
||||
modules += new /obj/item/weapon/pickaxe/borgdrill(src)
|
||||
modules += new /obj/item/weapon/pickaxe/jackhammer/borgdrill(src)
|
||||
modules += new /obj/item/device/flashlight/lantern(src)
|
||||
modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
|
||||
modules += new /obj/item/device/t_scanner/adv_mining_scanner(src)
|
||||
@@ -234,9 +234,9 @@
|
||||
|
||||
/obj/item/weapon/robot_module/miner/on_emag()
|
||||
..()
|
||||
for(var/obj/item/weapon/pickaxe/borgdrill/D in modules)
|
||||
for(var/obj/item/weapon/pickaxe/jackhammer/borgdrill/D in modules)
|
||||
qdel(D)
|
||||
modules += new /obj/item/weapon/pickaxe/diamonddrill(src)
|
||||
modules += new /obj/item/weapon/pickaxe/drill/diamonddrill(src)
|
||||
rebuild()
|
||||
|
||||
|
||||
|
||||
@@ -70,7 +70,8 @@
|
||||
Proj.on_hit(src, 0)
|
||||
return 0
|
||||
|
||||
|
||||
/mob/living/simple_animal/construct/narsie_act()
|
||||
return
|
||||
|
||||
/////////////////Juggernaut///////////////
|
||||
|
||||
|
||||
@@ -25,7 +25,15 @@
|
||||
var/obj/item/inventory_back
|
||||
var/facehugger
|
||||
|
||||
/mob/living/simple_animal/corgi/Life()
|
||||
/mob/living/simple_animal/corgi/New()
|
||||
..()
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/simple_animal/corgi/Die()
|
||||
..()
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/simple_animal/corgi/revive()
|
||||
..()
|
||||
regenerate_icons()
|
||||
|
||||
@@ -141,7 +149,7 @@
|
||||
|
||||
//The objects that corgis can wear on their backs.
|
||||
var/list/allowed_types = list(
|
||||
/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/clothing/suit/armor/vest/alt,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/device/radio/off,
|
||||
/obj/item/clothing/suit/cardborg,
|
||||
@@ -192,134 +200,138 @@
|
||||
var/valid = 0
|
||||
|
||||
//Various hats and items (worn on his head) change Ian's behaviour. His attributes are reset when a hat is removed.
|
||||
switch(item_to_add.type)
|
||||
if( /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/head/that, /obj/item/clothing/head/collectable/paper,
|
||||
/obj/item/clothing/head/hardhat, /obj/item/clothing/head/collectable/hardhat,/obj/item/clothing/head/hardhat/white, /obj/item/weapon/paper )
|
||||
valid = 1
|
||||
if(istype(item_to_add, /obj/item/clothing/tie/scarf))
|
||||
valid = 1
|
||||
else
|
||||
switch(item_to_add.type)
|
||||
if( /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/head/that, /obj/item/clothing/head/collectable/paper,
|
||||
/obj/item/clothing/head/hardhat, /obj/item/clothing/head/collectable/hardhat, /obj/item/clothing/head/hardhat/white,
|
||||
/obj/item/weapon/paper)
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/helmet)
|
||||
name = "Sergeant [real_name]"
|
||||
desc = "The ever-loyal, the ever-vigilant."
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/helmet)
|
||||
name = "Sergeant [real_name]"
|
||||
desc = "The ever-loyal, the ever-vigilant."
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/chefhat, /obj/item/clothing/head/collectable/chef)
|
||||
name = "Sous chef [real_name]"
|
||||
desc = "Your food will be taste-tested. All of it."
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/chefhat, /obj/item/clothing/head/collectable/chef)
|
||||
name = "Sous chef [real_name]"
|
||||
desc = "Your food will be taste-tested. All of it."
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/caphat, /obj/item/clothing/head/collectable/captain)
|
||||
name = "Captain [real_name]"
|
||||
desc = "Probably better than the last captain."
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/caphat, /obj/item/clothing/head/collectable/captain)
|
||||
name = "Captain [real_name]"
|
||||
desc = "Probably better than the last captain."
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/kitty, /obj/item/clothing/head/collectable/kitty)
|
||||
name = "Runtime"
|
||||
emote_see = list("coughs up a furball", "stretches")
|
||||
emote_hear = list("purrs")
|
||||
speak = list("Purrr", "Meow!", "MAOOOOOW!", "HISSSSS", "MEEEEEEW")
|
||||
desc = "It's a cute little kitty-cat! ... wait ... what the hell?"
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/kitty, /obj/item/clothing/head/collectable/kitty)
|
||||
name = "Runtime"
|
||||
emote_see = list("coughs up a furball", "stretches")
|
||||
emote_hear = list("purrs")
|
||||
speak = list("Purrr", "Meow!", "MAOOOOOW!", "HISSSSS", "MEEEEEEW")
|
||||
desc = "It's a cute little kitty-cat! ... wait ... what the hell?"
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/rabbitears, /obj/item/clothing/head/collectable/rabbitears)
|
||||
name = "Hoppy"
|
||||
emote_see = list("twitches its nose", "hops around a bit")
|
||||
desc = "This is Hoppy. It's a corgi-...urmm... bunny rabbit"
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/rabbitears, /obj/item/clothing/head/collectable/rabbitears)
|
||||
name = "Hoppy"
|
||||
emote_see = list("twitches its nose", "hops around a bit")
|
||||
desc = "This is Hoppy. It's a corgi-...urmm... bunny rabbit"
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/beret, /obj/item/clothing/head/collectable/beret)
|
||||
name = "Yann"
|
||||
desc = "Mon dieu! C'est un chien!"
|
||||
speak = list("le woof!", "le bark!", "JAPPE!!")
|
||||
emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a wall in front of him.")
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/beret, /obj/item/clothing/head/collectable/beret)
|
||||
name = "Yann"
|
||||
desc = "Mon dieu! C'est un chien!"
|
||||
speak = list("le woof!", "le bark!", "JAPPE!!")
|
||||
emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a wall in front of him.")
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/det_hat)
|
||||
name = "Detective [real_name]"
|
||||
desc = "[name] sees through your lies..."
|
||||
emote_see = list("investigates the area.","sniffs around for clues.","searches for scooby snacks.")
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/det_hat)
|
||||
name = "Detective [real_name]"
|
||||
desc = "[name] sees through your lies..."
|
||||
emote_see = list("investigates the area.","sniffs around for clues.","searches for scooby snacks.")
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/nursehat)
|
||||
name = "Nurse [real_name]"
|
||||
desc = "[name] needs 100cc of beef jerky...STAT!"
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/nursehat)
|
||||
name = "Nurse [real_name]"
|
||||
desc = "[name] needs 100cc of beef jerky...STAT!"
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate)
|
||||
name = "[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]"
|
||||
desc = "Yaarghh!! Thar' be a scurvy dog!"
|
||||
emote_see = list("hunts for treasure.","stares coldly...","gnashes his tiny corgi teeth!")
|
||||
emote_hear = list("growls ferociously!", "snarls.")
|
||||
speak = list("Arrrrgh!!","Grrrrrr!")
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate)
|
||||
name = "[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]"
|
||||
desc = "Yaarghh!! Thar' be a scurvy dog!"
|
||||
emote_see = list("hunts for treasure.","stares coldly...","gnashes his tiny corgi teeth!")
|
||||
emote_hear = list("growls ferociously!", "snarls.")
|
||||
speak = list("Arrrrgh!!","Grrrrrr!")
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/ushanka)
|
||||
name = "[pick("Comrade","Commissar","Glorious Leader")] [real_name]"
|
||||
desc = "A follower of Karl Barx."
|
||||
emote_see = list("contemplates the failings of the capitalist economic model.", "ponders the pros and cons of vangaurdism.")
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/ushanka)
|
||||
name = "[pick("Comrade","Commissar","Glorious Leader")] [real_name]"
|
||||
desc = "A follower of Karl Barx."
|
||||
emote_see = list("contemplates the failings of the capitalist economic model.", "ponders the pros and cons of vangaurdism.")
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/collectable/police)
|
||||
name = "Officer [real_name]"
|
||||
emote_see = list("drools.","looks for donuts.")
|
||||
desc = "Stop right there criminal scum!"
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/collectable/police)
|
||||
name = "Officer [real_name]"
|
||||
emote_see = list("drools.","looks for donuts.")
|
||||
desc = "Stop right there criminal scum!"
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard)
|
||||
name = "Grandwizard [real_name]"
|
||||
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!")
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard)
|
||||
name = "Grandwizard [real_name]"
|
||||
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!")
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/cardborg)
|
||||
name = "Borgi"
|
||||
speak = list("Ping!","Beep!","Woof!")
|
||||
emote_see = list("goes rogue.", "sniffs out non-humans.")
|
||||
desc = "Result of robotics budget cuts."
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/cardborg)
|
||||
name = "Borgi"
|
||||
speak = list("Ping!","Beep!","Woof!")
|
||||
emote_see = list("goes rogue.", "sniffs out non-humans.")
|
||||
desc = "Result of robotics budget cuts."
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/weapon/bedsheet)
|
||||
name = "\improper Ghost"
|
||||
speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU")
|
||||
emote_see = list("stumbles around.", "shivers.")
|
||||
emote_hear = list("howls!","groans.")
|
||||
desc = "Spooky!"
|
||||
valid = 1
|
||||
if(/obj/item/weapon/bedsheet)
|
||||
name = "\improper Ghost"
|
||||
speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU")
|
||||
emote_see = list("stumbles around.", "shivers.")
|
||||
emote_hear = list("howls!","groans.")
|
||||
desc = "Spooky!"
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/helmet/space/santahat)
|
||||
name = "Santa's Corgi Helper"
|
||||
emote_hear = list("barks christmas songs.", "yaps merrily!")
|
||||
emote_see = list("looks for presents.", "checks his list.")
|
||||
desc = "He's very fond of milk and cookies."
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/helmet/space/santahat)
|
||||
name = "Santa's Corgi Helper"
|
||||
emote_hear = list("barks christmas songs.", "yaps merrily!")
|
||||
emote_see = list("looks for presents.", "checks his list.")
|
||||
desc = "He's very fond of milk and cookies."
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/soft)
|
||||
name = "Corgi Tech [real_name]"
|
||||
desc = "The reason your yellow gloves have chew-marks."
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/soft)
|
||||
name = "Corgi Tech [real_name]"
|
||||
desc = "The reason your yellow gloves have chew-marks."
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/hardhat/reindeer)
|
||||
name = "[real_name] the red-nosed Corgi"
|
||||
emote_hear = list("lights the way!", "illuminates.", "yaps!")
|
||||
desc = "He has a very shiny nose."
|
||||
SetLuminosity(1)
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/hardhat/reindeer)
|
||||
name = "[real_name] the red-nosed Corgi"
|
||||
emote_hear = list("lights the way!", "illuminates.", "yaps!")
|
||||
desc = "He has a very shiny nose."
|
||||
SetLuminosity(1)
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/sombrero)
|
||||
name = "Segnor [real_name]"
|
||||
desc = "You must respect elder [real_name]"
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/sombrero)
|
||||
name = "Segnor [real_name]"
|
||||
desc = "You must respect elder [real_name]"
|
||||
valid = 1
|
||||
|
||||
if(/obj/item/clothing/head/hopcap)
|
||||
name = "Lieutenant [real_name]"
|
||||
desc = "Can actually be trusted to not run off on his own."
|
||||
valid = 1
|
||||
if(/obj/item/clothing/head/hopcap)
|
||||
name = "Lieutenant [real_name]"
|
||||
desc = "Can actually be trusted to not run off on his own."
|
||||
valid = 1
|
||||
|
||||
if(valid)
|
||||
if(!usr.drop_item())
|
||||
usr << "<span class='notice'>\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!</span>"
|
||||
return 0
|
||||
if(health <= 0)
|
||||
usr << "<span class ='notice'>There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on \him.</span>"
|
||||
else if(usr)
|
||||
if(!usr.drop_item())
|
||||
usr << "<span class='notice'>\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!</span>"
|
||||
return 0
|
||||
usr.visible_message("[usr] puts [item_to_add] on [real_name]'s head. [src] looks at [usr] and barks once.",
|
||||
"You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags \his tail once and barks.",
|
||||
"You hear a friendly-sounding bark.")
|
||||
@@ -411,25 +423,27 @@
|
||||
|
||||
|
||||
/mob/living/simple_animal/corgi/regenerate_icons()
|
||||
overlays = list()
|
||||
overlays.Cut()
|
||||
|
||||
if(inventory_head)
|
||||
var/head_icon_state = inventory_head.icon_state
|
||||
var/image/head_icon
|
||||
if(health <= 0)
|
||||
head_icon_state += "2"
|
||||
|
||||
var/icon/head_icon = image('icons/mob/corgi_head.dmi',head_icon_state)
|
||||
if(head_icon)
|
||||
overlays += head_icon
|
||||
head_icon = image('icons/mob/corgi_head.dmi', icon_state = inventory_head.icon_state, dir = EAST)
|
||||
head_icon.pixel_y = -8
|
||||
head_icon.transform = turn(head_icon.transform, 180)
|
||||
else
|
||||
head_icon = image('icons/mob/corgi_head.dmi', icon_state = inventory_head.icon_state)
|
||||
overlays += head_icon
|
||||
|
||||
if(inventory_back)
|
||||
var/back_icon_state = inventory_back.icon_state
|
||||
var/image/back_icon
|
||||
if(health <= 0)
|
||||
back_icon_state += "2"
|
||||
|
||||
var/icon/back_icon = image('icons/mob/corgi_back.dmi',back_icon_state)
|
||||
if(back_icon)
|
||||
overlays += back_icon
|
||||
back_icon = image('icons/mob/corgi_back.dmi', icon_state = inventory_back.icon_state, dir = EAST)
|
||||
back_icon.pixel_y = -11
|
||||
back_icon.transform = turn(back_icon.transform, 180)
|
||||
else
|
||||
back_icon = image('icons/mob/corgi_back.dmi', icon_state = inventory_back.icon_state)
|
||||
overlays += back_icon
|
||||
|
||||
if(facehugger)
|
||||
if(istype(src, /mob/living/simple_animal/corgi/puppy))
|
||||
|
||||
@@ -518,7 +518,7 @@ var/list/slot_equipment_priority = list( \
|
||||
namecounts[name] = 1
|
||||
creatures[name] = O
|
||||
|
||||
if(istype(O, /obj/machinery/singularity))
|
||||
if(istype(O, /obj/singularity))
|
||||
var/name = "Singularity"
|
||||
if (names.Find(name))
|
||||
namecounts[name]++
|
||||
|
||||
@@ -78,7 +78,8 @@
|
||||
var/drowsyness = 0//Carbon
|
||||
var/dizziness = 0//Carbon
|
||||
var/jitteriness = 0//Carbon
|
||||
var/nutrition = 400//Carbon
|
||||
var/nutrition = NUTRITION_LEVEL_FED + 50//Carbon
|
||||
var/satiety = 0//Carbon
|
||||
|
||||
var/overeatduration = 0 // How long this guy is overeating //Carbon
|
||||
var/paralysis = 0
|
||||
|
||||
@@ -25,10 +25,13 @@
|
||||
var/output = "<center><p><a href='byond://?src=\ref[src];show_preferences=1'>Setup Character</A></p>"
|
||||
|
||||
if(!ticker || ticker.current_state <= GAME_STATE_PREGAME)
|
||||
if(!ready) output += "<p><a href='byond://?src=\ref[src];ready=1'>Declare Ready</A></p>"
|
||||
else output += "<p><b>You are ready</b> <a href='byond://?src=\ref[src];ready=0'>Cancel</A></p>"
|
||||
if(ready)
|
||||
output += "<p>\[ <b>Ready</b> | <a href='byond://?src=\ref[src];ready=0'>Not Ready</a> \]</p>"
|
||||
else
|
||||
output += "<p>\[ <a href='byond://?src=\ref[src];ready=1'>Ready</a> | <b>Not Ready</b> \]</p>"
|
||||
|
||||
else
|
||||
output += "<a href='byond://?src=\ref[src];manifest=1'>View the Crew Manifest</A><br><br>"
|
||||
output += "<p><a href='byond://?src=\ref[src];late_join=1'>Join Game!</A></p>"
|
||||
|
||||
output += "<p><a href='byond://?src=\ref[src];observe=1'>Observe</A></p>"
|
||||
@@ -98,7 +101,10 @@
|
||||
return 1
|
||||
|
||||
if(href_list["ready"])
|
||||
ready = text2num(href_list["ready"])
|
||||
if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) // Make sure we don't ready up after the round has started
|
||||
ready = !ready
|
||||
else
|
||||
ready = 0
|
||||
|
||||
if(href_list["refresh"])
|
||||
src << browse(null, "window=playersetup") //closes the player setup window
|
||||
@@ -136,6 +142,9 @@
|
||||
return
|
||||
LateChoices()
|
||||
|
||||
if(href_list["manifest"])
|
||||
ViewManifest()
|
||||
|
||||
if(href_list["SelectedJob"])
|
||||
|
||||
if(!enter_allowed)
|
||||
@@ -364,6 +373,12 @@
|
||||
|
||||
return new_character
|
||||
|
||||
/mob/new_player/proc/ViewManifest()
|
||||
var/dat = "<html><body>"
|
||||
dat += "<h4>Crew Manifest</h4>"
|
||||
dat += data_core.get_manifest(OOC = 1)
|
||||
|
||||
src << browse(dat, "window=manifest;size=370x420;can_close=1")
|
||||
|
||||
/mob/new_player/Move()
|
||||
return 0
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
if(BARTENDER)
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armoralt"), ICON_OVERLAY)
|
||||
if(backbag == 2)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
|
||||
else if(backbag == 3)
|
||||
@@ -260,12 +260,12 @@
|
||||
if(backbag == 3)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-cap"), ICON_OVERLAY)
|
||||
if(HOS)
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "hos_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/head.dmi', "hoscap"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/head.dmi', "hosberetblack"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/eyes.dmi', "sunhud"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "hos"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "hostrench"), ICON_OVERLAY)
|
||||
if(backbag == 2)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY)
|
||||
if(backbag == 3)
|
||||
@@ -293,9 +293,10 @@
|
||||
if(backbag == 3)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY)
|
||||
if(OFFICER)
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "security_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/head.dmi', "helmet"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/head.dmi', "beret_badge"), ICON_OVERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY)
|
||||
if(backbag == 2)
|
||||
clothes_s.Blend(new /icon('icons/mob/back.dmi', "securitypack"), ICON_OVERLAY)
|
||||
|
||||
@@ -720,12 +720,12 @@
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_white
|
||||
name = "White Tank-Top"
|
||||
name = "White Tank Top"
|
||||
icon_state = "tank_white"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_black
|
||||
name = "Black Tank-Top"
|
||||
name = "Black Tank Top"
|
||||
icon_state = "tank_black"
|
||||
gender = NEUTER
|
||||
|
||||
@@ -738,3 +738,208 @@
|
||||
name = "Midriff Tank Top"
|
||||
icon_state = "tank_midriff"
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/undershirt/lover
|
||||
name = "Lover shirt"
|
||||
icon_state = "lover"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/ian
|
||||
name = "Blue Ian Shirt"
|
||||
icon_state = "ian"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/uk
|
||||
name = "UK Shirt"
|
||||
icon_state = "uk"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/ilovent
|
||||
name = "I Love NT Shirt"
|
||||
icon_state = "ilovent"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/peace
|
||||
name = "Peace Shirt"
|
||||
icon_state = "peace"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/mondmondjaja
|
||||
name = "Band Shirt"
|
||||
icon_state = "band"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/pacman
|
||||
name = "Pogoman Shirt"
|
||||
icon_state = "pogoman"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/matroska
|
||||
name = "Matroska Shirt"
|
||||
icon_state = "matroska"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/whiteshortsleeve
|
||||
name = "White Short-sleeved Shirt"
|
||||
icon_state = "whiteshortsleeve"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/purpleshortsleeve
|
||||
name = "Purple Short-sleeved Shirt"
|
||||
icon_state = "purpleshortsleeve"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/blueshortsleeve
|
||||
name = "Blue Short-sleeved Shirt"
|
||||
icon_state = "blueshortsleeve"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/greenshortsleeve
|
||||
name = "Green Short-sleeved Shirt"
|
||||
icon_state = "greenshortsleeve"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/blackshortsleeve
|
||||
name = "Black Short-sleeved Shirt"
|
||||
icon_state = "blackshortsleeve"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/blueshirt
|
||||
name = "Blue T-Shirt"
|
||||
icon_state = "blueshirt"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redshirt
|
||||
name = "Red T-Shirt"
|
||||
icon_state = "redshirt"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/yellowshirt
|
||||
name = "Yellow T-Shirt"
|
||||
icon_state = "yellowshirt"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/greenshirt
|
||||
name = "Green T-Shirt"
|
||||
icon_state = "greenshirt"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/bluepolo
|
||||
name = "Blue Polo Shirt"
|
||||
icon_state = "bluepolo"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redpolo
|
||||
name = "Red Polo Shirt"
|
||||
icon_state = "redpolo"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/whitepolo
|
||||
name = "White Polo Shirt"
|
||||
icon_state = "whitepolo"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/grayyellowpolo
|
||||
name = "Gray-Yellow Polo Shirt"
|
||||
icon_state = "grayyellowpolo"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redtop
|
||||
name = "Red Top"
|
||||
icon_state = "redtop"
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/undershirt/whitetop
|
||||
name = "White Top"
|
||||
icon_state = "whitetop"
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/undershirt/greenshirtsport
|
||||
name = "Green Sports Shirt"
|
||||
icon_state = "greenshirtsport"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redshirtsport
|
||||
name = "Red Sports Shirt"
|
||||
icon_state = "redshirtsport"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/blueshirtsport
|
||||
name = "Blue Sports Shirt"
|
||||
icon_state = "blueshirtsport"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/ss13
|
||||
name = "SS13 Shirt"
|
||||
icon_state = "shirt_ss13"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tankfire
|
||||
name = "Fire Tank Top"
|
||||
icon_state = "tank_fire"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/question
|
||||
name = "Question Shirt"
|
||||
icon_state = "shirt_question"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/skull
|
||||
name = "Skull Shirt"
|
||||
icon_state = "shirt_skull"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/commie
|
||||
name = "Commie Shirt"
|
||||
icon_state = "shirt_commie"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/nano
|
||||
name = "Nanotransen Shirt"
|
||||
icon_state = "shirt_nano"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/stripe
|
||||
name = "Striped Shirt"
|
||||
icon_state = "shirt_stripes"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/blueshirt
|
||||
name = "Blue Shirt"
|
||||
icon_state = "shirt_blue"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redshirt
|
||||
name = "Red Shirt"
|
||||
icon_state = "shirt_red"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/greenshirt
|
||||
name = "Green Shirt"
|
||||
icon_state = "shirt_green"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/meat
|
||||
name = "Meat Shirt"
|
||||
icon_state = "shirt_meat"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tiedye
|
||||
name = "Tie-dye Shirt"
|
||||
icon_state = "shirt_tiedye"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/redjersey
|
||||
name = "Red Jersey"
|
||||
icon_state = "shirt_redjersey"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/bluejersey
|
||||
name = "Blue Jersey"
|
||||
icon_state = "shirt_bluejersey"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tankstripe
|
||||
name = "Striped Tank Top"
|
||||
icon_state = "tank_stripes"
|
||||
gender = FEMALE
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
P.loc = user.loc
|
||||
user.put_in_hands(P)
|
||||
user << "<span class='notice'>You take [P] out of the [src].</span>"
|
||||
user << "<span class='notice'>You take [P] out of \the [src].</span>"
|
||||
else
|
||||
user << "<span class='notice'>[src] is empty!</span>"
|
||||
|
||||
|
||||
@@ -679,7 +679,7 @@
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/syringe))
|
||||
var/obj/item/weapon/reagent_containers/syringe/S = I
|
||||
|
||||
user << "You inject the solution into the [src]."
|
||||
user << "You inject the solution into \the [src]."
|
||||
|
||||
if(S.reagents.has_reagent("plasma", 5))
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ var/global/list/rad_collectors = list()
|
||||
user << "The controls are now [src.locked ? "locked." : "unlocked."]"
|
||||
else
|
||||
src.locked = 0 //just in case it somehow gets locked
|
||||
user << "<span class='danger'>The controls can only be locked when the [src] is active.</span>"
|
||||
user << "<span class='danger'>The controls can only be locked when \the [src] is active.</span>"
|
||||
else
|
||||
user << "<span class='danger'>Access denied!</span>"
|
||||
return 1
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/field/CanPass(obj/mover as obj, turf/target, height=0)
|
||||
if((istype(mover, /obj/machinery) && !istype(mover, /obj/machinery/singularity)) || \
|
||||
if((istype(mover, /obj/machinery) && !istype(mover, /obj/singularity)) || \
|
||||
istype(mover, /obj/structure) || \
|
||||
istype(mover, /obj/mecha))
|
||||
bump(mover)
|
||||
|
||||
@@ -63,13 +63,13 @@
|
||||
if(!src.locked)
|
||||
if(src.active==1)
|
||||
src.active = 0
|
||||
user << "You turn off the [src]."
|
||||
user << "You turn off \the [src]."
|
||||
message_admins("Emitter turned off by [key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
|
||||
log_game("Emitter turned off by [user.ckey]([user]) in ([x],[y],[z])")
|
||||
investigate_log("turned <font color='red'>off</font> by [user.key]","singulo")
|
||||
else
|
||||
src.active = 1
|
||||
user << "You turn on the [src]."
|
||||
user << "You turn on \the [src]."
|
||||
src.shot_number = 0
|
||||
src.fire_delay = 100
|
||||
investigate_log("turned <font color='green'>on</font> by [user.key]","singulo")
|
||||
@@ -152,7 +152,7 @@
|
||||
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(active)
|
||||
user << "Turn off the [src] first."
|
||||
user << "Turn off \the [src] first."
|
||||
return
|
||||
switch(state)
|
||||
if(0 && !isinspace())
|
||||
@@ -176,7 +176,7 @@
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if(active)
|
||||
user << "Turn off the [src] first."
|
||||
user << "Turn off \the [src] first."
|
||||
return
|
||||
switch(state)
|
||||
if(0)
|
||||
@@ -185,23 +185,23 @@
|
||||
if (WT.remove_fuel(0,user))
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
|
||||
"You start to weld the [src] to the floor.", \
|
||||
"You start to weld \the [src] to the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
if(!src || !WT.isOn()) return
|
||||
state = 2
|
||||
user << "You weld the [src] to the floor."
|
||||
user << "You weld \the [src] to the floor."
|
||||
connect_to_network()
|
||||
if(2)
|
||||
if (WT.remove_fuel(0,user))
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
|
||||
"You start to cut the [src] free from the floor.", \
|
||||
"You start to cut \the [src] free from the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
if(!src || !WT.isOn()) return
|
||||
state = 1
|
||||
user << "You cut the [src] free from the floor."
|
||||
user << "You cut \the [src] free from the floor."
|
||||
disconnect_from_network()
|
||||
return
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
user << "The controls are now [src.locked ? "locked." : "unlocked."]"
|
||||
else
|
||||
src.locked = 0 //just in case it somehow gets locked
|
||||
user << "<span class='danger'>The controls can only be locked when the [src] is online.</span>"
|
||||
user << "<span class='danger'>The controls can only be locked when \the [src] is online.</span>"
|
||||
else
|
||||
user << "<span class='danger'>Access denied.</span>"
|
||||
return
|
||||
@@ -227,4 +227,4 @@
|
||||
if(!emagged)
|
||||
locked = 0
|
||||
emagged = 1
|
||||
user.visible_message("[user.name] emags the [src.name].","<span class='danger'>You short out the lock.</span>")
|
||||
user.visible_message("[user.name] emags the [src.name].","<span class='danger'>You short out the lock.</span>")
|
||||
|
||||
@@ -127,7 +127,7 @@ field_generator power level display
|
||||
if (WT.remove_fuel(0,user))
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
|
||||
"You start to weld the [src] to the floor.", \
|
||||
"You start to weld \the [src] to the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
if(!src || !WT.isOn()) return
|
||||
@@ -139,12 +139,12 @@ field_generator power level display
|
||||
if (WT.remove_fuel(0,user))
|
||||
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
|
||||
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
|
||||
"You start to cut the [src] free from the floor.", \
|
||||
"You start to cut \the [src] free from the floor.", \
|
||||
"You hear welding")
|
||||
if (do_after(user,20))
|
||||
if(!src || !WT.isOn()) return
|
||||
state = 1
|
||||
user << "You cut the [src] free from the floor."
|
||||
user << "You cut \the [src] free from the floor."
|
||||
else
|
||||
return
|
||||
else
|
||||
@@ -344,7 +344,7 @@ field_generator power level display
|
||||
//I want to avoid using global variables.
|
||||
spawn(1)
|
||||
var/temp = 1 //stops spam
|
||||
for(var/obj/machinery/singularity/O in world)
|
||||
for(var/obj/singularity/O in world)
|
||||
if(O.last_warning && temp)
|
||||
if((world.time - O.last_warning) > 50) //to stop message-spam
|
||||
temp = 0
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/obj/machinery/the_singularitygen/process()
|
||||
var/turf/T = get_turf(src)
|
||||
if(src.energy >= 200)
|
||||
new /obj/machinery/singularity/(T, 50)
|
||||
new /obj/singularity/(T, 50)
|
||||
if(src) qdel(src)
|
||||
|
||||
/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/machinery/singularity/narsie //Moving narsie to a child object of the singularity so it can be made to function differently. --NEO
|
||||
/obj/singularity/narsie //Moving narsie to a child object of the singularity so it can be made to function differently. --NEO
|
||||
name = "Nar-sie's Avatar"
|
||||
desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees."
|
||||
icon = 'icons/obj/magic_terror.dmi'
|
||||
@@ -10,9 +10,8 @@
|
||||
move_self = 1 //Do we move on our own?
|
||||
grav_pull = 5 //How many tiles out do we pull?
|
||||
consume_range = 6 //How many tiles out do we eat
|
||||
var/uneatable = list(/turf/space, /obj/effect/overlay, /mob/living/simple_animal/construct)
|
||||
|
||||
/obj/machinery/singularity/narsie/large
|
||||
/obj/singularity/narsie/large
|
||||
name = "Nar-Sie"
|
||||
icon = 'icons/obj/narsie.dmi'
|
||||
// Pixel stuff centers Narsie.
|
||||
@@ -23,7 +22,7 @@
|
||||
grav_pull = 10
|
||||
consume_range = 12 //How many tiles out do we eat
|
||||
|
||||
/obj/machinery/singularity/narsie/large/New()
|
||||
/obj/singularity/narsie/large/New()
|
||||
..()
|
||||
world << "<font size='15' color='red'><b>NAR-SIE HAS RISEN</b></font>"
|
||||
world << pick(sound('sound/hallucinations/im_here1.ogg'), sound('sound/hallucinations/im_here2.ogg'))
|
||||
@@ -39,7 +38,7 @@
|
||||
emergency_shuttle.incall(0.3) // Cannot recall
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob)
|
||||
/obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob)
|
||||
if(!(src in view()))
|
||||
user << "Your soul is too far away."
|
||||
return
|
||||
@@ -47,7 +46,7 @@
|
||||
new /obj/effect/effect/sleep_smoke(user.loc)
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/process()
|
||||
/obj/singularity/narsie/process()
|
||||
eat()
|
||||
if(!target || prob(5))
|
||||
pickcultist()
|
||||
@@ -56,15 +55,15 @@
|
||||
mezzer()
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/Bump(atom/A)//you dare stand before a god?!
|
||||
/obj/singularity/narsie/Bump(atom/A)//you dare stand before a god?!
|
||||
godsmack(A)
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/narsie/Bumped(atom/A)
|
||||
/obj/singularity/narsie/Bumped(atom/A)
|
||||
godsmack(A)
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/narsie/proc/godsmack(var/atom/A)
|
||||
/obj/singularity/narsie/proc/godsmack(var/atom/A)
|
||||
if(istype(A,/obj/))
|
||||
var/obj/O = A
|
||||
O.ex_act(1.0)
|
||||
@@ -75,7 +74,7 @@
|
||||
T.ChangeTurf(/turf/simulated/floor/engine/cult)
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/mezzer()
|
||||
/obj/singularity/narsie/mezzer()
|
||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||
if(M.stat == CONSCIOUS)
|
||||
if(!iscultist(M))
|
||||
@@ -83,33 +82,15 @@
|
||||
M.apply_effect(3, STUN)
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/consume(var/atom/A)
|
||||
if(is_type_in_list(A, uneatable))
|
||||
return 0
|
||||
/obj/singularity/narsie/consume(var/atom/A)
|
||||
A.narsie_act()
|
||||
|
||||
if(istype(A,/mob/living/))
|
||||
var/mob/living/C = A
|
||||
if(C.client)
|
||||
makeNewConstruct(/mob/living/simple_animal/construct/harvester, C, null, 1)
|
||||
C.spawn_dust()
|
||||
C.gib()
|
||||
return
|
||||
|
||||
if(isturf(A))
|
||||
var/turf/T = A
|
||||
if(istype(T, /turf/simulated/floor) && !istype(T, /turf/simulated/floor/engine/cult))
|
||||
if(prob(20)) T.ChangeTurf(/turf/simulated/floor/engine/cult)
|
||||
|
||||
else if(istype(T,/turf/simulated/wall) && !istype(T, /turf/simulated/wall/cult))
|
||||
if(prob(20)) T.ChangeTurf(/turf/simulated/wall/cult)
|
||||
/obj/singularity/narsie/ex_act() //No throwing bombs at it either. --NEO
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/ex_act() //No throwing bombs at it either. --NEO
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/proc/pickcultist() //Narsie rewards his cultists with being devoured first, then picks a ghost to follow. --NEO
|
||||
/obj/singularity/narsie/proc/pickcultist() //Narsie rewards his cultists with being devoured first, then picks a ghost to follow. --NEO
|
||||
var/list/cultists = list()
|
||||
var/list/noncultists = list()
|
||||
for(var/mob/living/carbon/food in living_mob_list) //we don't care about constructs or cult-Ians or whatever. cult-monkeys are fair game i guess
|
||||
@@ -143,7 +124,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/proc/acquire(var/mob/food)
|
||||
/obj/singularity/narsie/proc/acquire(var/mob/food)
|
||||
target << "<span class='notice'>NAR-SIE HAS LOST INTEREST IN YOU</span>"
|
||||
target = food
|
||||
if(ishuman(target))
|
||||
@@ -152,10 +133,10 @@
|
||||
target << "<span class ='userdanger'>NAR-SIE HAS CHOSEN YOU TO LEAD HIM TO HIS NEXT MEAL</span>"
|
||||
|
||||
//Wizard narsie
|
||||
/obj/machinery/singularity/narsie/wizard
|
||||
/obj/singularity/narsie/wizard
|
||||
grav_pull = 0
|
||||
|
||||
/obj/machinery/singularity/narsie/wizard/eat()
|
||||
/obj/singularity/narsie/wizard/eat()
|
||||
set background = BACKGROUND_ENABLED
|
||||
// if(defer_powernet_rebuild != 2)
|
||||
// defer_powernet_rebuild = 1
|
||||
@@ -167,7 +148,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/narsie/proc/narsie_spawn_animation()
|
||||
/obj/singularity/narsie/proc/narsie_spawn_animation()
|
||||
icon = 'icons/obj/narsie_spawn_anim.dmi'
|
||||
dir = SOUTH
|
||||
move_self = 0
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
if (A)
|
||||
if(ismob(A))
|
||||
toxmob(A)
|
||||
if((istype(A,/obj/machinery/the_singularitygen))||(istype(A,/obj/machinery/singularity/)))
|
||||
if((istype(A,/obj/machinery/the_singularitygen))||(istype(A,/obj/singularity/)))
|
||||
A:energy += energy
|
||||
return
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
/obj/machinery/singularity
|
||||
/obj/singularity
|
||||
name = "gravitational singularity"
|
||||
desc = "A gravitational singularity."
|
||||
icon = 'icons/obj/singularity.dmi'
|
||||
@@ -10,7 +10,6 @@
|
||||
layer = 6
|
||||
luminosity = 6
|
||||
unacidable = 1 //Don't comment this out.
|
||||
use_power = 0
|
||||
var/current_size = 1
|
||||
var/allowed_size = 1
|
||||
var/contained = 1 //Are we going to move around?
|
||||
@@ -27,20 +26,24 @@
|
||||
var/last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing
|
||||
var/last_warning
|
||||
|
||||
/obj/machinery/singularity/New(loc, var/starting_energy = 50, var/temp = 0)
|
||||
/obj/singularity/New(loc, var/starting_energy = 50, var/temp = 0)
|
||||
//CARN: admin-alert for chuckle-fuckery.
|
||||
admin_investigate_setup()
|
||||
|
||||
src.energy = starting_energy
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
for(var/obj/machinery/power/singularity_beacon/singubeacon in world)
|
||||
if(singubeacon.active)
|
||||
target = singubeacon
|
||||
break
|
||||
return
|
||||
|
||||
/obj/singularity/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/machinery/singularity/Move(atom/newloc, direct)
|
||||
/obj/singularity/Move(atom/newloc, direct)
|
||||
if(current_size >= STAGE_FIVE || check_turfs_in(direct))
|
||||
last_failed_movement = 0//Reset this because we moved
|
||||
return ..()
|
||||
@@ -49,17 +52,17 @@
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/singularity/attack_hand(mob/user as mob)
|
||||
/obj/singularity/attack_hand(mob/user as mob)
|
||||
consume(user)
|
||||
return 1
|
||||
|
||||
/obj/machinery/singularity/Process_Spacemove() //The singularity stops drifting for no man!
|
||||
/obj/singularity/Process_Spacemove() //The singularity stops drifting for no man!
|
||||
return 0
|
||||
|
||||
/obj/machinery/singularity/blob_act(severity)
|
||||
/obj/singularity/blob_act(severity)
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/ex_act(severity, target)
|
||||
/obj/singularity/ex_act(severity, target)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
if(current_size <= STAGE_TWO)
|
||||
@@ -75,21 +78,21 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/bullet_act(obj/item/projectile/P)
|
||||
/obj/singularity/bullet_act(obj/item/projectile/P)
|
||||
return 0 //Will there be an impact? Who knows. Will we see it? No.
|
||||
|
||||
|
||||
/obj/machinery/singularity/Bump(atom/A)
|
||||
/obj/singularity/Bump(atom/A)
|
||||
consume(A)
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/Bumped(atom/A)
|
||||
/obj/singularity/Bumped(atom/A)
|
||||
consume(A)
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/process()
|
||||
/obj/singularity/process()
|
||||
if(current_size >= STAGE_TWO)
|
||||
move()
|
||||
pulse()
|
||||
@@ -102,17 +105,17 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/attack_ai() //to prevent ais from gibbing themselves when they click on one.
|
||||
/obj/singularity/attack_ai() //to prevent ais from gibbing themselves when they click on one.
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/admin_investigate_setup()
|
||||
/obj/singularity/proc/admin_investigate_setup()
|
||||
last_warning = world.time
|
||||
var/count = locate(/obj/machinery/field/containment) in orange(30, src)
|
||||
if(!count) message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
|
||||
investigate_log("was created. [count?"":"<font color='red'>No containment fields were active</font>"]","singulo")
|
||||
|
||||
/obj/machinery/singularity/proc/dissipate()
|
||||
/obj/singularity/proc/dissipate()
|
||||
if(!dissipate)
|
||||
return
|
||||
if(dissipate_track >= dissipate_delay)
|
||||
@@ -122,7 +125,7 @@
|
||||
dissipate_track++
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/expand(var/force_size = 0)
|
||||
/obj/singularity/proc/expand(var/force_size = 0)
|
||||
var/temp_allowed_size = src.allowed_size
|
||||
if(force_size)
|
||||
temp_allowed_size = force_size
|
||||
@@ -191,7 +194,7 @@
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/check_energy()
|
||||
/obj/singularity/proc/check_energy()
|
||||
if(energy <= 0)
|
||||
investigate_log("collapsed.","singulo")
|
||||
qdel(src)
|
||||
@@ -212,11 +215,11 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/eat()
|
||||
/obj/singularity/proc/eat()
|
||||
set background = BACKGROUND_ENABLED
|
||||
for(var/atom/X in orange(grav_pull,src))
|
||||
var/dist = get_dist(X, src)
|
||||
var/obj/machinery/singularity/S = src
|
||||
var/obj/singularity/S = src
|
||||
if(dist > consume_range)
|
||||
X.singularity_pull(S, current_size)
|
||||
else if(dist <= consume_range)
|
||||
@@ -224,13 +227,13 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/consume(var/atom/A)
|
||||
/obj/singularity/proc/consume(var/atom/A)
|
||||
var/gain = A.singularity_act(current_size)
|
||||
src.energy += gain
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/move(var/force_move = 0)
|
||||
/obj/singularity/proc/move(var/force_move = 0)
|
||||
if(!move_self)
|
||||
return 0
|
||||
|
||||
@@ -245,7 +248,7 @@
|
||||
step(src, movement_dir)
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/check_turfs_in(var/direction = 0, var/step = 0)
|
||||
/obj/singularity/proc/check_turfs_in(var/direction = 0, var/step = 0)
|
||||
if(!direction)
|
||||
return 0
|
||||
var/steps = 0
|
||||
@@ -298,7 +301,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/can_move(var/turf/T)
|
||||
/obj/singularity/proc/can_move(var/turf/T)
|
||||
if(!T)
|
||||
return 0
|
||||
if((locate(/obj/machinery/field/containment) in T)||(locate(/obj/machinery/shieldwall) in T))
|
||||
@@ -314,7 +317,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/event()
|
||||
/obj/singularity/proc/event()
|
||||
var/numb = pick(1,2,3,4,5,6)
|
||||
switch(numb)
|
||||
if(1)//EMP
|
||||
@@ -328,7 +331,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/toxmob()
|
||||
/obj/singularity/proc/toxmob()
|
||||
var/toxrange = 10
|
||||
var/toxdamage = 4
|
||||
var/radiation = 15
|
||||
@@ -344,7 +347,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/mezzer()
|
||||
/obj/singularity/proc/mezzer()
|
||||
for(var/mob/living/carbon/M in oviewers(8, src))
|
||||
if(istype(M, /mob/living/carbon/brain)) //Ignore brains
|
||||
continue
|
||||
@@ -361,19 +364,19 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/emp_area()
|
||||
/obj/singularity/proc/emp_area()
|
||||
empulse(src, 8, 10)
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/singularity/proc/pulse()
|
||||
/obj/singularity/proc/pulse()
|
||||
|
||||
for(var/obj/machinery/power/rad_collector/R in rad_collectors)
|
||||
if(get_dist(R, src) <= 15) // Better than using orange() every process
|
||||
R.receive_pulse(energy)
|
||||
return
|
||||
|
||||
/obj/machinery/singularity/singularity_act()
|
||||
/obj/singularity/singularity_act()
|
||||
var/gain = (energy/2)
|
||||
var/dist = max((current_size - 2),1)
|
||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||
|
||||
@@ -33,9 +33,10 @@ var/list/solars_list = list()
|
||||
|
||||
//set the control of the panel to a given computer if closer than SOLAR_MAX_DIST
|
||||
/obj/machinery/power/solar/proc/set_control(var/obj/machinery/power/solar_control/SC)
|
||||
if(SC && (get_dist(src, SC) > SOLAR_MAX_DIST))
|
||||
if(!SC || (get_dist(src, SC) > SOLAR_MAX_DIST))
|
||||
return 0
|
||||
control = SC
|
||||
SC.connected_panels |= src
|
||||
return 1
|
||||
|
||||
//set the control of the panel to null and removes it from the control list of the previous control computer if needed
|
||||
@@ -323,12 +324,10 @@ var/list/solars_list = list()
|
||||
var/obj/machinery/power/solar/S = M
|
||||
if(!S.control) //i.e unconnected
|
||||
S.set_control(src)
|
||||
connected_panels |= S
|
||||
else if(istype(M, /obj/machinery/power/tracker))
|
||||
if(!connected_tracker) //if there's already a tracker connected to the computer don't add another
|
||||
var/obj/machinery/power/tracker/T = M
|
||||
if(!T.control) //i.e unconnected
|
||||
connected_tracker = T
|
||||
T.set_control(src)
|
||||
|
||||
//called by the sun controller, update the facing angle (either manually or via tracking) and rotates the panels accordingly
|
||||
@@ -484,10 +483,10 @@ var/list/solars_list = list()
|
||||
set_panels(targetdir)
|
||||
|
||||
if(href_list["search_connected"])
|
||||
src.search_for_connected()
|
||||
search_for_connected()
|
||||
if(connected_tracker && track == 2)
|
||||
connected_tracker.set_angle(sun.angle)
|
||||
src.set_panels(cdir)
|
||||
set_panels(cdir)
|
||||
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
@@ -0,0 +1,286 @@
|
||||
//Ported from /vg/station13, which was in turn forked from baystation12;
|
||||
//Please do not bother them with bugs from this port, however, as it has been modified quite a bit.
|
||||
//Modifications include removing the world-ending full supermatter variation, and leaving only the shard.
|
||||
|
||||
#define NITROGEN_RETARDATION_FACTOR 2 //Higher == N2 slows reaction more
|
||||
#define THERMAL_RELEASE_MODIFIER 5 //Higher == less heat released during reaction
|
||||
#define PLASMA_RELEASE_MODIFIER 750 //Higher == less plasma released by reaction
|
||||
#define OXYGEN_RELEASE_MODIFIER 325 //Higher == less oxygen released at high temperature/power
|
||||
#define REACTION_POWER_MODIFIER 0.55 //Higher == more overall power
|
||||
|
||||
|
||||
//These would be what you would get at point blank, decreases with distance
|
||||
#define DETONATION_RADS 200
|
||||
#define DETONATION_HALLUCINATION 600
|
||||
|
||||
|
||||
#define WARNING_DELAY 30 //seconds between warnings.
|
||||
|
||||
/obj/machinery/power/supermatter_shard
|
||||
name = "supermatter shard"
|
||||
desc = "A strangely translucent and iridescent crystal that looks like it used to be part of a larger structure. <span class='danger'> You get headaches just from looking at it.</span>"
|
||||
icon = 'icons/obj/supermatter.dmi'
|
||||
icon_state = "darkmatter_shard"
|
||||
density = 1
|
||||
anchored = 0
|
||||
luminosity = 4
|
||||
|
||||
|
||||
var/gasefficency = 0.125
|
||||
|
||||
var/base_icon_state = "darkmatter_shard"
|
||||
|
||||
var/damage = 0
|
||||
var/damage_archived = 0
|
||||
var/safe_alert = "Crystalline hyperstructure returning to safe operating levels."
|
||||
var/warning_point = 50
|
||||
var/warning_alert = "Danger! Crystal hyperstructure instability!"
|
||||
var/emergency_point = 500
|
||||
var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT."
|
||||
var/explosion_point = 900
|
||||
|
||||
var/emergency_issued = 0
|
||||
|
||||
var/explosion_power = 8
|
||||
|
||||
var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning
|
||||
var/power = 0
|
||||
|
||||
var/oxygen = 0 // Moving this up here for easier debugging.
|
||||
|
||||
//Temporary values so that we can optimize this
|
||||
//How much the bullets damage should be multiplied by when it is added to the internal variables
|
||||
var/config_bullet_energy = 2
|
||||
//How much of the power is left after processing is finished?
|
||||
// var/config_power_reduction_per_tick = 0.5
|
||||
//How much hallucination should it produce per unit of power?
|
||||
var/config_hallucination_power = 0.1
|
||||
|
||||
var/obj/item/device/radio/radio
|
||||
|
||||
//for logging
|
||||
var/has_been_powered = 0
|
||||
var/has_reached_emergency = 0
|
||||
|
||||
/obj/machinery/power/supermatter_shard/New()
|
||||
. = ..()
|
||||
radio = new(src)
|
||||
radio.listening = 0
|
||||
investigate_log("has been created.", "supermatter")
|
||||
|
||||
|
||||
/obj/machinery/power/supermatter_shard/Destroy()
|
||||
investigate_log("has been destroyed.", "supermatter")
|
||||
qdel(radio)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/supermatter_shard/proc/explode()
|
||||
investigate_log("has exploded.", "supermatter")
|
||||
explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1, 1)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/machinery/power/supermatter_shard/process()
|
||||
var/turf/L = loc
|
||||
|
||||
if(isnull(L)) // We have a null turf...something is wrong, stop processing this entity.
|
||||
return PROCESS_KILL
|
||||
|
||||
if(!istype(L)) //We are in a crate or somewhere that isn't turf, if we return to turf resume processing but for now.
|
||||
return //Yeah just stop.
|
||||
|
||||
if(istype(L, /turf/space)) // Stop processing this stuff if we've been ejected.
|
||||
return
|
||||
|
||||
if(damage > warning_point) // while the core is still damaged and it's still worth noting its status
|
||||
if((world.timeofday - lastwarning) / 10 >= WARNING_DELAY)
|
||||
var/stability = num2text(round((damage / explosion_point) * 100))
|
||||
|
||||
if(damage > emergency_point)
|
||||
radio.talk_into(src, "[emergency_alert] Instability: [stability]%")
|
||||
lastwarning = world.timeofday
|
||||
if(!has_reached_emergency)
|
||||
investigate_log("has reached the emergency point for the first time.", "supermatter")
|
||||
message_admins("[src] has reached the emergency point <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>(JMP)</a>.")
|
||||
has_reached_emergency = 1
|
||||
|
||||
else if(damage >= damage_archived) // The damage is still going up
|
||||
radio.talk_into(src, "[warning_alert] Instability: [stability]%")
|
||||
lastwarning = world.timeofday - 150
|
||||
|
||||
else // Phew, we're safe
|
||||
radio.talk_into(src, "[safe_alert]")
|
||||
lastwarning = world.timeofday
|
||||
|
||||
if(damage > explosion_point)
|
||||
for(var/mob/living/mob in living_mob_list)
|
||||
if(istype(mob, /mob/living/carbon/human))
|
||||
//Hilariously enough, running into a closet should make you get hit the hardest.
|
||||
var/mob/living/carbon/human/H = mob
|
||||
H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) )
|
||||
var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) )
|
||||
mob.apply_effect(rads, IRRADIATE)
|
||||
|
||||
explode()
|
||||
|
||||
//Ok, get the air from the turf
|
||||
var/datum/gas_mixture/env = L.return_air()
|
||||
|
||||
//Remove gas from surrounding area
|
||||
var/datum/gas_mixture/removed = env.remove(gasefficency * env.total_moles())
|
||||
|
||||
if(!removed || !removed.total_moles())
|
||||
damage += max((power-1600)/10, 0)
|
||||
power = min(power, 1600)
|
||||
return 1
|
||||
|
||||
damage_archived = damage
|
||||
damage = max( damage + ( (removed.temperature - 800) / 150 ) , 0 )
|
||||
//Ok, 100% oxygen atmosphere = best reaction
|
||||
//Maxes out at 100% oxygen pressure
|
||||
oxygen = max(min((removed.oxygen - (removed.nitrogen * NITROGEN_RETARDATION_FACTOR)) / MOLES_CELLSTANDARD, 1), 0)
|
||||
|
||||
var/temp_factor = 50
|
||||
|
||||
if(oxygen > 0.8)
|
||||
// with a perfect gas mix, make the power less based on heat
|
||||
icon_state = "[base_icon_state]_glow"
|
||||
else
|
||||
// in normal mode, base the produced energy around the heat
|
||||
temp_factor = 30
|
||||
icon_state = base_icon_state
|
||||
|
||||
power = max( (removed.temperature * temp_factor / T0C) * oxygen + power, 0) //Total laser power plus an overload
|
||||
|
||||
//We've generated power, now let's transfer it to the collectors for storing/usage
|
||||
transfer_energy()
|
||||
|
||||
var/device_energy = power * REACTION_POWER_MODIFIER
|
||||
|
||||
//To figure out how much temperature to add each tick, consider that at one atmosphere's worth
|
||||
//of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature
|
||||
//that the device energy is around 2140. At that stage, we don't want too much heat to be put out
|
||||
//Since the core is effectively "cold"
|
||||
|
||||
//Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock
|
||||
//is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall.
|
||||
removed.temperature += (device_energy / THERMAL_RELEASE_MODIFIER)
|
||||
|
||||
removed.temperature = max(0, min(removed.temperature, 2500))
|
||||
|
||||
//Calculate how much gas to release
|
||||
removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0)
|
||||
|
||||
removed.oxygen += max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0)
|
||||
|
||||
env.merge(removed)
|
||||
|
||||
for(var/mob/living/carbon/human/l in view(src, min(7, round(power ** 0.25)))) // If they can see it without mesons on. Bad on them.
|
||||
if(!istype(l.glasses, /obj/item/clothing/glasses/meson))
|
||||
l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / min(1, get_dist(l, src)) ) ) )
|
||||
|
||||
for(var/mob/living/l in range(src, round((power / 100) ** 0.25)))
|
||||
var/rads = (power / 10) * sqrt( 1 / min(get_dist(l, src),1) )
|
||||
l.apply_effect(rads, IRRADIATE)
|
||||
|
||||
power -= (power/500)**3
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/power/supermatter_shard/bullet_act(var/obj/item/projectile/Proj)
|
||||
var/turf/L = loc
|
||||
if(!istype(L)) // We don't run process() when we are in space
|
||||
return 0 // This stops people from being able to really power up the supermatter
|
||||
// Then bring it inside to explode instantly upon landing on a valid turf.
|
||||
|
||||
|
||||
if(Proj.flag != "bullet")
|
||||
power += Proj.damage * config_bullet_energy
|
||||
if(!has_been_powered)
|
||||
investigate_log("has been powered for the first time.", "supermatter")
|
||||
message_admins("[src] has been powered for the first time <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>(JMP)</a>.")
|
||||
has_been_powered = 1
|
||||
else
|
||||
damage += Proj.damage * config_bullet_energy
|
||||
return 0
|
||||
|
||||
|
||||
/obj/machinery/power/supermatter_shard/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/power/supermatter_shard/attack_robot(mob/user as mob)
|
||||
if(Adjacent(user))
|
||||
return attack_hand(user)
|
||||
else
|
||||
user << "<span class = \"warning\">You attempt to interface with the control circuits but find they are not connected to your network. Maybe in a future firmware update.</span>"
|
||||
return
|
||||
|
||||
/obj/machinery/power/supermatter_shard/attack_ai(mob/user as mob)
|
||||
user << "<span class = \"warning\">You attempt to interface with the control circuits but find they are not connected to your network. Maybe in a future firmware update.</span>"
|
||||
|
||||
/obj/machinery/power/supermatter_shard/attack_hand(mob/user as mob)
|
||||
user.visible_message("<span class=\"warning\">\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.</span>",\
|
||||
"<span class=\"danger\">You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"</span>",\
|
||||
"<span class=\"warning\">You hear an unearthly noise as a wave of heat washes over you.</span>")
|
||||
|
||||
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
|
||||
|
||||
Consume(user)
|
||||
|
||||
/obj/machinery/power/supermatter_shard/proc/transfer_energy()
|
||||
for(var/obj/machinery/power/rad_collector/R in rad_collectors)
|
||||
if(get_dist(R, src) <= 15) // Better than using orange() every process
|
||||
R.receive_pulse(power/10)
|
||||
return
|
||||
|
||||
/obj/machinery/power/supermatter_shard/attackby(obj/item/weapon/W as obj, mob/living/user as mob)
|
||||
if(user.drop_item(W))
|
||||
Consume(W)
|
||||
user.visible_message("<span class=\"warning\">As [user] touches \the [src] with \a [W], silence fills the room...</span>",\
|
||||
"<span class=\"danger\">You touch \the [src] with \the [W], and everything suddenly goes silent.\"</span>\n<span class=\"notice\">\The [W] flashes into dust as you flinch away from \the [src].</span>",\
|
||||
"<span class=\"warning\">Everything suddenly goes silent.</span>")
|
||||
|
||||
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
|
||||
|
||||
user.apply_effect(150, IRRADIATE)
|
||||
|
||||
|
||||
/obj/machinery/power/supermatter_shard/Bumped(atom/AM as mob|obj)
|
||||
if(istype(AM, /mob/living))
|
||||
AM.visible_message("<span class=\"warning\">\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.</span>",\
|
||||
"<span class=\"danger\">You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"</span>",\
|
||||
"<span class=\"warning\">You hear an unearthly noise as a wave of heat washes over you.</span>")
|
||||
else
|
||||
AM.visible_message("<span class=\"warning\">\The [AM] smacks into \the [src] and rapidly flashes to ash.</span>",\
|
||||
"<span class=\"warning\">You hear a loud crack as you are washed with a wave of heat.</span>")
|
||||
|
||||
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
|
||||
|
||||
Consume(AM)
|
||||
|
||||
|
||||
/obj/machinery/power/supermatter_shard/proc/Consume(atom/movable/AM)
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/user = AM
|
||||
user.dust()
|
||||
power += 200
|
||||
message_admins("[src] has consumed [key_name(user)]<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A> <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>(JMP)</a>.")
|
||||
else
|
||||
qdel(AM)
|
||||
|
||||
investigate_log("has consumed [AM].", "supermatter")
|
||||
|
||||
power += 200
|
||||
|
||||
//Some poor sod got eaten, go ahead and irradiate people nearby.
|
||||
for(var/mob/living/L in range(10))
|
||||
var/rads = 500 * sqrt( 1 / (get_dist(L, src) + 1) )
|
||||
L.apply_effect(rads, IRRADIATE)
|
||||
investigate_log("has irradiated [L] after consuming [AM].", "supermatter")
|
||||
if(L in view())
|
||||
L.show_message("<span class=\"warning\">As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.</span>", 1,\
|
||||
"<span class=\"warning\">The unearthly ringing subsides and you notice you have new radiation burns.</span>", 2)
|
||||
else
|
||||
L.show_message("<span class=\"warning\">You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.</span>", 2)
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/supply_packs/engineering/engine/supermatter_shard
|
||||
name = "Supermatter Shard Crate"
|
||||
contains = list(/obj/machinery/power/supermatter_shard)
|
||||
cost = 100 //So cargo thinks twice before killing themselves with it
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "supermatter shard crate"
|
||||
access = access_ce
|
||||
@@ -27,9 +27,10 @@
|
||||
|
||||
//set the control of the tracker to a given computer if closer than SOLAR_MAX_DIST
|
||||
/obj/machinery/power/tracker/proc/set_control(var/obj/machinery/power/solar_control/SC)
|
||||
if(SC && (get_dist(src, SC) > SOLAR_MAX_DIST))
|
||||
if(!SC || (get_dist(src, SC) > SOLAR_MAX_DIST))
|
||||
return 0
|
||||
control = SC
|
||||
SC.connected_tracker = src
|
||||
return 1
|
||||
|
||||
//set the control of the tracker to null and removes it from the previous control computer if needed
|
||||
|
||||
@@ -73,21 +73,34 @@
|
||||
stored_ammo.Insert(1,b)
|
||||
return b
|
||||
|
||||
/obj/item/ammo_box/proc/give_round(var/obj/item/ammo_casing/r)
|
||||
var/obj/item/ammo_casing/rb = r
|
||||
if (rb)
|
||||
if (stored_ammo.len < max_ammo && rb.caliber == caliber)
|
||||
stored_ammo += rb
|
||||
rb.loc = src
|
||||
return 1
|
||||
/obj/item/ammo_box/proc/give_round(var/obj/item/ammo_casing/R, var/replace_spent = 0)
|
||||
if(!R || (R.caliber != caliber))
|
||||
return 0
|
||||
|
||||
if (stored_ammo.len < max_ammo)
|
||||
stored_ammo += R
|
||||
R.loc = src
|
||||
return 1
|
||||
|
||||
//for accessibles magazines (e.g internal ones) when full, start replacing spent ammo
|
||||
else if(replace_spent)
|
||||
for(var/obj/item/ammo_casing/AC in stored_ammo)
|
||||
if(!AC.BB)//found a spent ammo
|
||||
stored_ammo -= AC
|
||||
AC.loc = get_turf(src.loc)
|
||||
|
||||
stored_ammo += R
|
||||
R.loc = src
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
/obj/item/ammo_box/attackby(var/obj/item/A as obj, mob/user as mob, var/silent = 0)
|
||||
/obj/item/ammo_box/attackby(var/obj/item/A as obj, mob/user as mob, var/silent = 0, var/replace_spent = 0)
|
||||
var/num_loaded = 0
|
||||
if(istype(A, /obj/item/ammo_box))
|
||||
var/obj/item/ammo_box/AM = A
|
||||
for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
|
||||
var/did_load = give_round(AC)
|
||||
var/did_load = give_round(AC, replace_spent)
|
||||
if(did_load)
|
||||
AM.stored_ammo -= AC
|
||||
num_loaded++
|
||||
@@ -95,17 +108,18 @@
|
||||
break
|
||||
if(istype(A, /obj/item/ammo_casing))
|
||||
var/obj/item/ammo_casing/AC = A
|
||||
if(give_round(AC))
|
||||
if(give_round(AC, replace_spent))
|
||||
user.drop_item()
|
||||
AC.loc = src
|
||||
num_loaded++
|
||||
|
||||
if(num_loaded)
|
||||
if(!silent)
|
||||
user << "<span class='notice'>You load [num_loaded] shell\s into \the [src]!</span>"
|
||||
A.update_icon()
|
||||
update_icon()
|
||||
return num_loaded
|
||||
return 0
|
||||
|
||||
return num_loaded
|
||||
|
||||
/obj/item/ammo_box/attack_self(mob/user as mob)
|
||||
var/obj/item/ammo_casing/A = get_round()
|
||||
|
||||
@@ -96,6 +96,12 @@
|
||||
icon_state = "ishell"
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/shell
|
||||
|
||||
/obj/item/ammo_casing/shotgun/frag12
|
||||
name = "FRAG-12 slug"
|
||||
desc = "A high explosive breaching round for a 12 gauge shotgun."
|
||||
icon_state = "heshell"
|
||||
projectile_type = /obj/item/projectile/bullet/frag12
|
||||
|
||||
/obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
|
||||
name = "dragonsbreath shell"
|
||||
desc = "A shotgun shell which fires a spread of incendiary pellets."
|
||||
@@ -157,4 +163,4 @@
|
||||
desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher."
|
||||
caliber = "40mm"
|
||||
icon_state = "40mmHE"
|
||||
projectile_type = /obj/item/projectile/bullet/a40mm
|
||||
projectile_type = /obj/item/projectile/bullet/a40mm
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
/obj/item/ammo_casing/energy/ion
|
||||
projectile_type = /obj/item/projectile/ion
|
||||
select_name = "ion"
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
fire_sound = 'sound/weapons/IonRifle.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/declone
|
||||
projectile_type = /obj/item/projectile/energy/declone
|
||||
@@ -114,10 +114,10 @@
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
select_name = "kinetic"
|
||||
e_cost = 500
|
||||
fire_sound = 'sound/weapons/Gunshot4.ogg'
|
||||
fire_sound = 'sound/weapons/Kenetic_accel.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/disabler
|
||||
projectile_type = /obj/item/projectile/energy/disabler
|
||||
projectile_type = /obj/item/projectile/beam/disabler
|
||||
select_name = "disable"
|
||||
e_cost = 50
|
||||
fire_sound = "sound/weapons/taser.ogg"
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
////////////////INTERNAL MAGAZINES//////////////////////
|
||||
|
||||
//internals magazines are accessible, so replace spent ammo if full when trying to put a live one in
|
||||
/obj/item/ammo_box/magazine/internal/give_round(var/obj/item/ammo_casing/R)
|
||||
return ..(R,1)
|
||||
|
||||
/obj/item/ammo_box/magazine/internal/cylinder
|
||||
name = "revolver cylinder"
|
||||
desc = "Oh god, this shouldn't be here"
|
||||
@@ -126,7 +131,7 @@
|
||||
caliber = ".45"
|
||||
max_ammo = 20
|
||||
|
||||
/obj/item/ammo_box/magazine/smgm/update_icon()
|
||||
/obj/item/ammo_box/magazine/smgm45/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)]-[round(ammo_count(),2)]"
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
return 0
|
||||
if(targloc == curloc) //Fire the projectile
|
||||
user.bullet_act(BB)
|
||||
qdel(BB)
|
||||
del(BB)
|
||||
return 1
|
||||
BB.loc = get_turf(user)
|
||||
BB.starting = get_turf(user)
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
#define SAWN_INTACT 0
|
||||
#define SAWN_OFF 1
|
||||
#define SAWN_SAWING -1
|
||||
|
||||
/obj/item/weapon/gun
|
||||
name = "gun"
|
||||
desc = "It's a gun. It's pretty terrible, though."
|
||||
@@ -23,6 +27,7 @@
|
||||
var/obj/item/ammo_casing/chambered = null
|
||||
var/trigger_guard = 1
|
||||
var/sawn_desc = null
|
||||
var/sawn_state = SAWN_INTACT
|
||||
|
||||
/obj/item/weapon/gun/proc/process_chamber()
|
||||
return 0
|
||||
@@ -30,12 +35,17 @@
|
||||
/obj/item/weapon/gun/proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver.
|
||||
return 1
|
||||
|
||||
//check if there's enough ammo/energy/whatever to shoot one time
|
||||
//i.e if clicking would make it shoot
|
||||
/obj/item/weapon/gun/proc/can_shoot()
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj)
|
||||
user << "<span class='danger'>*click*</span>"
|
||||
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/proc/shoot_live_shot(mob/living/user as mob|obj, var/pointblank = 0, var/mob/pbtarget = null)
|
||||
/obj/item/weapon/gun/proc/shoot_live_shot(mob/living/user as mob|obj, var/pointblank = 0, var/mob/pbtarget = null, var/message = 1)
|
||||
if(recoil)
|
||||
spawn()
|
||||
shake_camera(user, recoil + 1, recoil)
|
||||
@@ -44,6 +54,8 @@
|
||||
playsound(user, fire_sound, 10, 1)
|
||||
else
|
||||
playsound(user, fire_sound, 50, 1)
|
||||
if(!message)
|
||||
return
|
||||
if(pointblank)
|
||||
user.visible_message("<span class='danger'>[user] fires [src] point blank at [pbtarget]!</span>", "<span class='danger'>You fire [src] point blank at [pbtarget]!</span>", "You hear a [istype(src, /obj/item/weapon/gun/energy) ? "laser blast" : "gunshot"]!")
|
||||
else
|
||||
@@ -62,43 +74,53 @@
|
||||
return
|
||||
|
||||
//Exclude lasertag guns from the CLUMSY check.
|
||||
if(clumsy_check)
|
||||
if(clumsy_check && can_shoot())
|
||||
if(istype(user, /mob/living))
|
||||
var/mob/living/M = user
|
||||
if ((CLUMSY in M.mutations) && prob(40))
|
||||
M << "<span class='danger'>You shoot yourself in the foot with \the [src]!</span>"
|
||||
afterattack(user, user)
|
||||
user << "<span class='danger'>You shoot yourself in the foot with \the [src]!</span>"
|
||||
process_fire(user,user,0,params)
|
||||
M.drop_item()
|
||||
return
|
||||
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
if(!can_trigger_gun(L))
|
||||
return
|
||||
|
||||
process_fire(target,user,flag,params)
|
||||
|
||||
/obj/item/weapon/gun/proc/can_trigger_gun(mob/living/user)
|
||||
if (!user.IsAdvancedToolUser())
|
||||
user << "<span class='notice'>You don't have the dexterity to do this!</span>"
|
||||
return
|
||||
return 0
|
||||
|
||||
if(trigger_guard)
|
||||
if(istype(user, /mob/living))
|
||||
var/mob/living/M = user
|
||||
if (HULK in M.mutations)
|
||||
M << "<span class='notice'>Your meaty finger is much too large for the trigger guard!</span>"
|
||||
return
|
||||
if (HULK in user.mutations)
|
||||
user << "<span class='notice'>Your meaty finger is much too large for the trigger guard!</span>"
|
||||
return 0
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.dna && NOGUNS in H.dna.species.specflags)
|
||||
user << "<span class='notice'>Your fingers don't fit in the trigger guard!</span>"
|
||||
return
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, var/message = 1, params)
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
if(!special_check(user))
|
||||
return
|
||||
|
||||
if(chambered)
|
||||
if(!chambered.fire(target, user, params, , suppressed))
|
||||
shoot_with_empty_chamber(user)
|
||||
else
|
||||
if(!special_check(user))
|
||||
return
|
||||
if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot
|
||||
shoot_live_shot(user, 1, target)
|
||||
shoot_live_shot(user, 1, target,message)
|
||||
else
|
||||
shoot_live_shot(user)
|
||||
shoot_live_shot(user,message)
|
||||
else
|
||||
shoot_with_empty_chamber(user)
|
||||
process_chamber()
|
||||
|
||||
@@ -35,7 +35,9 @@
|
||||
/obj/item/weapon/gun/energy/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, params)
|
||||
newshot() //prepare a new shot
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/energy/can_shoot()
|
||||
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
|
||||
return power_supply.charge >= shot.e_cost
|
||||
|
||||
/obj/item/weapon/gun/energy/proc/newshot()
|
||||
if (!ammo_type || !power_supply)
|
||||
|
||||
@@ -125,9 +125,11 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/bluetag/process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4) return 0
|
||||
if(charge_tick < 4)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply) return 0
|
||||
if(!power_supply)
|
||||
return 0
|
||||
power_supply.give(100)
|
||||
update_icon()
|
||||
return 1
|
||||
@@ -162,9 +164,11 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/redtag/process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4) return 0
|
||||
if(charge_tick < 4)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply) return 0
|
||||
if(!power_supply)
|
||||
return 0
|
||||
power_supply.give(100)
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A basic hybrid energy gun with two settings: Stun and kill."
|
||||
icon_state = "energy"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser)
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser)
|
||||
origin_tech = "combat=3;magnets=2"
|
||||
modifystate = 2
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
select_fire(user)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/nuclear
|
||||
name = "advanced energy gun"
|
||||
desc = "An energy gun with an experimental miniaturized nuclear reactor that automatically charges the internal power cell."
|
||||
@@ -21,6 +20,7 @@
|
||||
var/lightfail = 0
|
||||
var/charge_tick = 0
|
||||
modifystate = 0
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser)
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/nuclear/New()
|
||||
..()
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
if(overheat || recent_reload)
|
||||
return
|
||||
power_supply.give(500)
|
||||
playsound(src.loc, 'sound/weapons/shotgunpump.ogg', 60, 1)
|
||||
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
|
||||
recent_reload = 1
|
||||
update_icon()
|
||||
return
|
||||
|
||||
@@ -7,25 +7,37 @@
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/electrode)
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/crap"
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg
|
||||
name = "taser gun"
|
||||
desc = "An integrated taser that draws directly from a cyborg's power cell. The weapon contains a limiter to prevent the cyborg's power cell from overheating."
|
||||
icon_state = "taser"
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
/obj/item/weapon/gun/energy/stunrevolver
|
||||
name = "stun revolver"
|
||||
desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder."
|
||||
icon_state = "stunrevolver"
|
||||
origin_tech = "combat=3;materials=3;powerstorage=2"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/electrode/gun)
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell"
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/advtaser
|
||||
name = "advanced taser"
|
||||
desc = "A hybrid taser designed to fire both short-range high-power electrodes and long-range disabler beams."
|
||||
icon_state = "advtaser"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler)
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/advtaser/cyborg
|
||||
name = "advanced taser"
|
||||
desc = "An integrated advanced taser that draws directly from a cyborg's power cell. The weapon contains a limiter to prevent the cyborg's power cell from overheating."
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/secborg"
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 10 //Time it takes for shots to recharge (in ticks)
|
||||
var/recharge_time = 10
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg/New()
|
||||
/obj/item/weapon/gun/energy/gun/advtaser/cyborg/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg/Destroy()
|
||||
/obj/item/weapon/gun/energy/gun/advtaser/cyborg/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
|
||||
/obj/item/weapon/gun/energy/gun/advtaser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_time) return 0
|
||||
charge_tick = 0
|
||||
@@ -42,16 +54,6 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver
|
||||
name = "stun revolver"
|
||||
desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder."
|
||||
icon_state = "stunrevolver"
|
||||
origin_tech = "combat=3;materials=3;powerstorage=2"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/electrode/gun)
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell"
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow
|
||||
name = "mini energy crossbow"
|
||||
desc = "A weapon favored by syndicate stealth specialists."
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
no_den_usage = 0
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/magic/can_shoot()
|
||||
return charges
|
||||
|
||||
/obj/item/weapon/gun/magic/proc/newshot()
|
||||
if (charges && chambered)
|
||||
chambered.newshot()
|
||||
|
||||
@@ -40,6 +40,11 @@
|
||||
chambered.loc = src
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/projectile/can_shoot()
|
||||
if(!magazine || !magazine.ammo_count(0))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(A, /obj/item/ammo_box/magazine))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user