mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
Merge branch 'master' into upstream-merge-8808
This commit is contained in:
6
.github/workflows/autochangelog.yml
vendored
6
.github/workflows/autochangelog.yml
vendored
@@ -1,6 +1,6 @@
|
|||||||
name: Autochangelog
|
name: Autochangelog
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request_target:
|
||||||
types: closed
|
types: closed
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
@@ -15,6 +15,10 @@ jobs:
|
|||||||
if: github.event.pull_request.merged == true
|
if: github.event.pull_request.merged == true
|
||||||
steps:
|
steps:
|
||||||
- uses: /actions/checkout@v2
|
- uses: /actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: master
|
||||||
|
- name: Update repository to master
|
||||||
|
run: git pull "origin" master
|
||||||
- name: Ensure +x on CI directory
|
- name: Ensure +x on CI directory
|
||||||
run: |
|
run: |
|
||||||
chmod -R +x ./tools/ci
|
chmod -R +x ./tools/ci
|
||||||
|
|||||||
@@ -62,3 +62,7 @@
|
|||||||
#define INFECTION_LEVEL_TWO 500
|
#define INFECTION_LEVEL_TWO 500
|
||||||
#define INFECTION_LEVEL_THREE 1000
|
#define INFECTION_LEVEL_THREE 1000
|
||||||
#define INFECTION_LEVEL_MAX 1500
|
#define INFECTION_LEVEL_MAX 1500
|
||||||
|
|
||||||
|
#define MODULAR_BODYPART_INVALID 0 // Cannot be detached or reattached.
|
||||||
|
#define MODULAR_BODYPART_PROSTHETIC 1 // Can be detached or reattached freely.
|
||||||
|
#define MODULAR_BODYPART_CYBERNETIC 2 // Can be detached or reattached to compatible parent organs.
|
||||||
|
|||||||
@@ -8,3 +8,4 @@ GLOBAL_LIST_EMPTY(wire_color_directory) // This is an associative list with the
|
|||||||
GLOBAL_LIST_EMPTY(tagger_locations)
|
GLOBAL_LIST_EMPTY(tagger_locations)
|
||||||
|
|
||||||
GLOBAL_LIST_INIT(char_directory_tags, list("Pred", "Prey", "Switch", "Non-Vore", "Unset"))
|
GLOBAL_LIST_INIT(char_directory_tags, list("Pred", "Prey", "Switch", "Non-Vore", "Unset"))
|
||||||
|
GLOBAL_LIST_INIT(char_directory_erptags, list("Top", "Bottom", "Switch", "No ERP", "Unset"))
|
||||||
@@ -93,7 +93,6 @@ var/global/list/string_slot_flags = list(
|
|||||||
"holster" = SLOT_HOLSTER
|
"holster" = SLOT_HOLSTER
|
||||||
)
|
)
|
||||||
|
|
||||||
//CHOMP Edit: This fix is taken from citadel station pr #2779. Fixes a "pretty horrific memory leak" that is called any time someone opens character creator.
|
|
||||||
GLOBAL_LIST_EMPTY(mannequins)
|
GLOBAL_LIST_EMPTY(mannequins)
|
||||||
/proc/get_mannequin(var/ckey = "NULL")
|
/proc/get_mannequin(var/ckey = "NULL")
|
||||||
var/mob/living/carbon/human/dummy/mannequin/M = GLOB.mannequins[ckey]
|
var/mob/living/carbon/human/dummy/mannequin/M = GLOB.mannequins[ckey]
|
||||||
|
|||||||
@@ -539,4 +539,22 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
|
|||||||
for(var/species_name in whitelisted_icons)
|
for(var/species_name in whitelisted_icons)
|
||||||
custom_species_bases += species_name
|
custom_species_bases += species_name
|
||||||
|
|
||||||
|
// Weaver recipe stuff
|
||||||
|
paths = typesof(/datum/weaver_recipe/structure) - /datum/weaver_recipe/structure
|
||||||
|
for(var/path in paths)
|
||||||
|
var/datum/weaver_recipe/instance = new path()
|
||||||
|
if(!instance.title)
|
||||||
|
continue //A prototype or something
|
||||||
|
weavable_structures[instance.title] = instance
|
||||||
|
|
||||||
|
paths = typesof(/datum/weaver_recipe/item) - /datum/weaver_recipe/item
|
||||||
|
for(var/path in paths)
|
||||||
|
var/datum/weaver_recipe/instance = new path()
|
||||||
|
if(!instance.title)
|
||||||
|
continue //A prototype or something
|
||||||
|
weavable_items[instance.title] = instance
|
||||||
|
|
||||||
return 1 // Hooks must return 1
|
return 1 // Hooks must return 1
|
||||||
|
|
||||||
|
var/global/list/weavable_structures = list()
|
||||||
|
var/global/list/weavable_items = list()
|
||||||
@@ -122,14 +122,18 @@ Proc for attack log creation, because really why not
|
|||||||
|
|
||||||
if(ismob(user)) //CHOMPEdit Begin
|
if(ismob(user)) //CHOMPEdit Begin
|
||||||
//user.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [target_str]: [what_done]</font>")
|
//user.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [target_str]: [what_done]</font>")
|
||||||
var/DBQuery/query_insert = SSdbcore.NewQuery("INSERT INTO erro_attacklog (id, time, ckey, mob, message) VALUES (null, NOW(), :t_ckey, :t_mob, :t_content)", list("t_ckey" = user.ckey, "t_mob" = user.real_name, "t_content" = "<font color='red'>Attacked [target_str]: [what_done]</font>"))
|
//var/DBQuery/query_insert = SSdbcore.NewQuery("INSERT INTO erro_attacklog (id, time, ckey, mob, message) VALUES (null, NOW(), :t_ckey, :t_mob, :t_content)", list("t_ckey" = user.ckey, "t_mob" = user.real_name, "t_content" = "<font color='red'>Attacked [target_str]: [what_done]</font>"))
|
||||||
query_insert.Execute(async=use_async)
|
//query_insert.Execute(async=use_async)
|
||||||
qdel(query_insert)
|
//qdel(query_insert)
|
||||||
|
if(SSdbcore.Connect())
|
||||||
|
rustg_sql_query_async(SSdbcore.connection, "INSERT INTO erro_attacklog (id, time, ckey, mob, message) VALUES (null, NOW(), :t_ckey, :t_mob, :t_content)", json_encode(list("t_ckey" = user.ckey, "t_mob" = user.real_name, "t_content" = "<font color='red'>Attacked [target_str]: [what_done]</font>")))
|
||||||
if(ismob(target))
|
if(ismob(target))
|
||||||
//target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Attacked by [user_str]: [what_done]</font>")
|
//target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Attacked by [user_str]: [what_done]</font>")
|
||||||
var/DBQuery/query_insert = SSdbcore.NewQuery("INSERT INTO erro_attacklog (id, time, ckey, mob, message) VALUES (null, NOW(), :t_ckey, :t_mob, :t_content)", list("t_ckey" = target.ckey, "t_mob" = target.real_name, "t_content" = "<font color='orange'>Attacked by [user_str]: [what_done]</font>"))
|
//var/DBQuery/query_insert = SSdbcore.NewQuery("INSERT INTO erro_attacklog (id, time, ckey, mob, message) VALUES (null, NOW(), :t_ckey, :t_mob, :t_content)", list("t_ckey" = target.ckey, "t_mob" = target.real_name, "t_content" = "<font color='orange'>Attacked by [user_str]: [what_done]</font>"))
|
||||||
query_insert.Execute(async=use_async)
|
//query_insert.Execute(async=use_async)
|
||||||
qdel(query_insert)
|
//qdel(query_insert)
|
||||||
|
if(SSdbcore.Connect())
|
||||||
|
rustg_sql_query_async(SSdbcore.connection, "INSERT INTO erro_attacklog (id, time, ckey, mob, message) VALUES (null, NOW(), :t_ckey, :t_mob, :t_content)", json_encode(list("t_ckey" = target.ckey, "t_mob" = target.real_name, "t_content" = "<font color='orange'>Attacked by [user_str]: [what_done]</font>")))
|
||||||
//CHOMPEdit End
|
//CHOMPEdit End
|
||||||
log_attack(user_str,target_str,what_done)
|
log_attack(user_str,target_str,what_done)
|
||||||
if(admin_notify)
|
if(admin_notify)
|
||||||
|
|||||||
@@ -60,6 +60,8 @@
|
|||||||
|
|
||||||
// Cyborgs have no range-checking unless there is item use
|
// Cyborgs have no range-checking unless there is item use
|
||||||
if(!W)
|
if(!W)
|
||||||
|
if(bolt && !bolt.malfunction && A.loc != module)
|
||||||
|
return
|
||||||
A.add_hiddenprint(src)
|
A.add_hiddenprint(src)
|
||||||
A.attack_robot(src)
|
A.attack_robot(src)
|
||||||
return
|
return
|
||||||
@@ -119,35 +121,56 @@
|
|||||||
/atom/proc/BorgCtrlShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
|
/atom/proc/BorgCtrlShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
|
||||||
CtrlShiftClick(user)
|
CtrlShiftClick(user)
|
||||||
|
|
||||||
/obj/machinery/door/airlock/BorgCtrlShiftClick(mob/user)
|
/obj/machinery/door/airlock/BorgCtrlShiftClick(var/mob/living/silicon/robot/user)
|
||||||
|
if(user.bolt && !user.bolt.malfunction)
|
||||||
|
return
|
||||||
|
|
||||||
AICtrlShiftClick(user)
|
AICtrlShiftClick(user)
|
||||||
|
|
||||||
/atom/proc/BorgShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
|
/atom/proc/BorgShiftClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
|
||||||
ShiftClick(user)
|
ShiftClick(user)
|
||||||
|
|
||||||
/obj/machinery/door/airlock/BorgShiftClick(mob/user) // Opens and closes doors! Forwards to AI code.
|
/obj/machinery/door/airlock/BorgShiftClick(var/mob/living/silicon/robot/user) // Opens and closes doors! Forwards to AI code.
|
||||||
|
if(user.bolt && !user.bolt.malfunction)
|
||||||
|
return
|
||||||
|
|
||||||
AIShiftClick(user)
|
AIShiftClick(user)
|
||||||
|
|
||||||
/atom/proc/BorgCtrlClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
|
/atom/proc/BorgCtrlClick(var/mob/living/silicon/robot/user) //forward to human click if not overriden
|
||||||
CtrlClick(user)
|
CtrlClick(user)
|
||||||
|
|
||||||
/obj/machinery/door/airlock/BorgCtrlClick(mob/user) // Bolts doors. Forwards to AI code.
|
/obj/machinery/door/airlock/BorgCtrlClick(var/mob/living/silicon/robot/user) // Bolts doors. Forwards to AI code.
|
||||||
|
if(user.bolt && !user.bolt.malfunction)
|
||||||
|
return
|
||||||
|
|
||||||
AICtrlClick(user)
|
AICtrlClick(user)
|
||||||
|
|
||||||
/obj/machinery/power/apc/BorgCtrlClick(mob/user) // turns off/on APCs. Forwards to AI code.
|
/obj/machinery/power/apc/BorgCtrlClick(var/mob/living/silicon/robot/user) // turns off/on APCs. Forwards to AI code.
|
||||||
|
if(user.bolt && !user.bolt.malfunction)
|
||||||
|
return
|
||||||
|
|
||||||
AICtrlClick(user)
|
AICtrlClick(user)
|
||||||
|
|
||||||
/obj/machinery/turretid/BorgCtrlClick(mob/user) //turret control on/off. Forwards to AI code.
|
/obj/machinery/turretid/BorgCtrlClick(var/mob/living/silicon/robot/user) //turret control on/off. Forwards to AI code.
|
||||||
|
if(user.bolt && !user.bolt.malfunction)
|
||||||
|
return
|
||||||
|
|
||||||
AICtrlClick(user)
|
AICtrlClick(user)
|
||||||
|
|
||||||
/atom/proc/BorgAltClick(var/mob/living/silicon/robot/user)
|
/atom/proc/BorgAltClick(var/mob/living/silicon/robot/user)
|
||||||
AltClick(user)
|
AltClick(user)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/door/airlock/BorgAltClick(mob/user) // Eletrifies doors. Forwards to AI code.
|
/obj/machinery/door/airlock/BorgAltClick(var/mob/living/silicon/robot/user) // Eletrifies doors. Forwards to AI code.
|
||||||
|
if(user.bolt && !user.bolt.malfunction)
|
||||||
|
return
|
||||||
|
|
||||||
AIAltClick(user)
|
AIAltClick(user)
|
||||||
|
|
||||||
/obj/machinery/turretid/BorgAltClick(mob/user) //turret lethal on/off. Forwards to AI code.
|
/obj/machinery/turretid/BorgAltClick(var/mob/living/silicon/robot/user) //turret lethal on/off. Forwards to AI code.
|
||||||
|
if(user.bolt && !user.bolt.malfunction)
|
||||||
|
return
|
||||||
|
|
||||||
AIAltClick(user)
|
AIAltClick(user)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ SUBSYSTEM_DEF(overlays)
|
|||||||
priority = FIRE_PRIORITY_OVERLAYS
|
priority = FIRE_PRIORITY_OVERLAYS
|
||||||
init_order = INIT_ORDER_OVERLAY
|
init_order = INIT_ORDER_OVERLAY
|
||||||
|
|
||||||
var/initialized = FALSE
|
|
||||||
var/list/queue // Queue of atoms needing overlay compiling (TODO-VERIFY!)
|
var/list/queue // Queue of atoms needing overlay compiling (TODO-VERIFY!)
|
||||||
var/list/stats
|
var/list/stats
|
||||||
var/list/overlay_icon_state_caches // Cache thing
|
var/list/overlay_icon_state_caches // Cache thing
|
||||||
@@ -22,7 +21,6 @@ var/global/image/appearance_bro = new() // Temporarily super-global because of B
|
|||||||
stats = list()
|
stats = list()
|
||||||
|
|
||||||
/datum/controller/subsystem/overlays/Initialize()
|
/datum/controller/subsystem/overlays/Initialize()
|
||||||
initialized = TRUE
|
|
||||||
fire(mc_check = FALSE)
|
fire(mc_check = FALSE)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ PROCESSING_SUBSYSTEM_DEF(chemistry)
|
|||||||
/datum/controller/subsystem/processing/chemistry/Initialize()
|
/datum/controller/subsystem/processing/chemistry/Initialize()
|
||||||
initialize_chemical_reactions()
|
initialize_chemical_reactions()
|
||||||
initialize_chemical_reagents()
|
initialize_chemical_reagents()
|
||||||
|
..()
|
||||||
|
|
||||||
//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
|
//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
|
||||||
// It is filtered into multiple lists within a list.
|
// It is filtered into multiple lists within a list.
|
||||||
|
|||||||
@@ -510,8 +510,9 @@
|
|||||||
|
|
||||||
//HUMAN
|
//HUMAN
|
||||||
/mob/living/carbon/human/mind_initialize()
|
/mob/living/carbon/human/mind_initialize()
|
||||||
..()
|
. = ..()
|
||||||
if(!mind.assigned_role) mind.assigned_role = USELESS_JOB //defualt //VOREStation Edit - Visitor not Assistant
|
if(!mind.assigned_role)
|
||||||
|
mind.assigned_role = USELESS_JOB //defualt //VOREStation Edit - Visitor not Assistant
|
||||||
|
|
||||||
//slime
|
//slime
|
||||||
/mob/living/simple_mob/slime/mind_initialize()
|
/mob/living/simple_mob/slime/mind_initialize()
|
||||||
|
|||||||
101
code/datums/roundstats/departmentgoal.dm
Normal file
101
code/datums/roundstats/departmentgoal.dm
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
|
||||||
|
GLOBAL_LIST(department_goals)
|
||||||
|
GLOBAL_LIST(active_department_goals)
|
||||||
|
|
||||||
|
/hook/startup/proc/initializeDepartmentGoals()
|
||||||
|
GLOB.department_goals = list(GOAL_GENERAL, GOAL_MEDICAL, GOAL_SECURITY, GOAL_ENGINEERING, GOAL_CARGO, GOAL_RESEARCH)
|
||||||
|
GLOB.active_department_goals = list(GOAL_GENERAL, GOAL_MEDICAL, GOAL_SECURITY, GOAL_ENGINEERING, GOAL_CARGO, GOAL_RESEARCH)
|
||||||
|
|
||||||
|
for(var/category in GLOB.department_goals)
|
||||||
|
GLOB.department_goals[category] = list()
|
||||||
|
|
||||||
|
for(var/subtype in subtypesof(/datum/goal))
|
||||||
|
var/datum/goal/SG = new subtype()
|
||||||
|
|
||||||
|
if(SG.name == "goal")
|
||||||
|
continue
|
||||||
|
|
||||||
|
if(SG.category == category)
|
||||||
|
GLOB.department_goals[category] |= SG
|
||||||
|
|
||||||
|
for(var/category in GLOB.active_department_goals)
|
||||||
|
GLOB.active_department_goals[category] = list()
|
||||||
|
var/list/cat_goals = GLOB.department_goals[category]
|
||||||
|
|
||||||
|
var/goal_count = rand(2,4)
|
||||||
|
|
||||||
|
for(var/count = 1 to goal_count)
|
||||||
|
var/datum/goal/G
|
||||||
|
|
||||||
|
if(LAZYLEN(cat_goals))
|
||||||
|
G = pick(cat_goals)
|
||||||
|
|
||||||
|
if(G)
|
||||||
|
G.active_goal = TRUE
|
||||||
|
cat_goals -= G
|
||||||
|
|
||||||
|
GLOB.active_department_goals[category] |= G
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/hook/roundend/proc/checkDepartmentGoals()
|
||||||
|
for(var/category in GLOB.active_department_goals)
|
||||||
|
var/list/cat_goals = GLOB.active_department_goals[category]
|
||||||
|
|
||||||
|
to_world("<span class='filter_system'><b>[category]</b></span>")
|
||||||
|
|
||||||
|
if(!LAZYLEN(cat_goals))
|
||||||
|
to_world("<span class='filter_system'>There were no assigned goals!</span>")
|
||||||
|
|
||||||
|
else
|
||||||
|
for(var/datum/goal/G in cat_goals)
|
||||||
|
var/success = G.check_completion()
|
||||||
|
to_world("<span class='filter_system'>[success ? "<span class='notice'>[G.name]</span>" : "<span class='warning'>[G.name]</span>"]</span>")
|
||||||
|
to_world("<span class='filter_system'>[G.goal_text]</span>")
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/datum/goal
|
||||||
|
var/name = "goal"
|
||||||
|
|
||||||
|
var/goal_text = "Do nothing! Congratulations."
|
||||||
|
|
||||||
|
var/active_goal = FALSE
|
||||||
|
|
||||||
|
var/category = GOAL_GENERAL
|
||||||
|
|
||||||
|
/datum/goal/proc/check_completion()
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
/datum/goal/common
|
||||||
|
name = "goal"
|
||||||
|
|
||||||
|
goal_text = "Congratulations, you still do nothing."
|
||||||
|
|
||||||
|
/datum/goal/medical
|
||||||
|
name = "goal"
|
||||||
|
|
||||||
|
goal_text = "Congratulations, you still do nothing."
|
||||||
|
category = GOAL_MEDICAL
|
||||||
|
|
||||||
|
/datum/goal/security
|
||||||
|
name = "goal"
|
||||||
|
|
||||||
|
goal_text = "Congratulations, you still do nothing."
|
||||||
|
category = GOAL_SECURITY
|
||||||
|
|
||||||
|
/datum/goal/engineering
|
||||||
|
name = "goal"
|
||||||
|
|
||||||
|
goal_text = "Congratulations, you still do nothing."
|
||||||
|
category = GOAL_ENGINEERING
|
||||||
|
|
||||||
|
/datum/goal/cargo
|
||||||
|
name = "goal"
|
||||||
|
|
||||||
|
goal_text = "Congratulations, you still do nothing."
|
||||||
|
category = GOAL_CARGO
|
||||||
|
|
||||||
|
/datum/goal/research
|
||||||
|
name = "goal"
|
||||||
|
|
||||||
|
goal_text = "Congratulations, you still do nothing."
|
||||||
|
category = GOAL_RESEARCH
|
||||||
@@ -189,6 +189,17 @@
|
|||||||
containername = "Jumper kit crate"
|
containername = "Jumper kit crate"
|
||||||
access = access_robotics
|
access = access_robotics
|
||||||
|
|
||||||
|
/datum/supply_pack/robotics/restrainingbolt
|
||||||
|
name = "Restraining bolt crate"
|
||||||
|
contains = list(
|
||||||
|
/obj/item/weapon/implanter = 1,
|
||||||
|
/obj/item/weapon/implantcase/restrainingbolt = 2
|
||||||
|
)
|
||||||
|
cost = 40
|
||||||
|
containertype = /obj/structure/closet/crate/secure/cybersolutions
|
||||||
|
containername = "Restraining bolt crate"
|
||||||
|
access = access_robotics
|
||||||
|
|
||||||
/datum/supply_pack/robotics/bike
|
/datum/supply_pack/robotics/bike
|
||||||
name = "Spacebike Crate"
|
name = "Spacebike Crate"
|
||||||
contains = list()
|
contains = list()
|
||||||
|
|||||||
@@ -187,3 +187,13 @@
|
|||||||
/datum/category_item/underwear/undershirt/pinkblack_tshirt
|
/datum/category_item/underwear/undershirt/pinkblack_tshirt
|
||||||
name = "Pink and Black T-Shirt"
|
name = "Pink and Black T-Shirt"
|
||||||
icon_state = "pinkblack_tshirt"
|
icon_state = "pinkblack_tshirt"
|
||||||
|
|
||||||
|
/datum/category_item/underwear/undershirt/turtle
|
||||||
|
name = "Turtleneck"
|
||||||
|
icon_state = "turtleneck"
|
||||||
|
has_color = TRUE
|
||||||
|
|
||||||
|
/datum/category_item/underwear/undershirt/sleevelessturtle
|
||||||
|
name = "Turtleneck, Sleeveless"
|
||||||
|
icon_state = "sleevelessturtle"
|
||||||
|
has_color = TRUE
|
||||||
@@ -50,13 +50,12 @@
|
|||||||
var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf
|
var/turf/base_turf //The base turf type of the area, which can be used to override the z-level's base turf
|
||||||
var/forbid_events = FALSE // If true, random events will not start inside this area.
|
var/forbid_events = FALSE // If true, random events will not start inside this area.
|
||||||
var/no_spoilers = FALSE // If true, makes it much more difficult to see what is inside an area with things like mesons.
|
var/no_spoilers = FALSE // If true, makes it much more difficult to see what is inside an area with things like mesons.
|
||||||
|
var/soundproofed = FALSE // If true, blocks sounds from other areas and prevents hearers on other areas from hearing the sounds within.
|
||||||
|
|
||||||
/area/Initialize()
|
/area/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
luminosity = !(dynamic_lighting)
|
luminosity = !(dynamic_lighting)
|
||||||
icon_state = ""
|
icon_state = ""
|
||||||
|
|
||||||
return INITIALIZE_HINT_LATELOAD // Areas tradiationally are initialized AFTER other atoms.
|
return INITIALIZE_HINT_LATELOAD // Areas tradiationally are initialized AFTER other atoms.
|
||||||
|
|
||||||
/area/LateInitialize()
|
/area/LateInitialize()
|
||||||
@@ -67,7 +66,6 @@
|
|||||||
power_change() // all machines set to current power level, also updates lighting icon
|
power_change() // all machines set to current power level, also updates lighting icon
|
||||||
if(no_spoilers)
|
if(no_spoilers)
|
||||||
set_spoiler_obfuscation(TRUE)
|
set_spoiler_obfuscation(TRUE)
|
||||||
return INITIALIZE_HINT_LATELOAD
|
|
||||||
|
|
||||||
// Changes the area of T to A. Do not do this manually.
|
// Changes the area of T to A. Do not do this manually.
|
||||||
// Area is expected to be a non-null instance.
|
// Area is expected to be a non-null instance.
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
for(var/i in loc)
|
for(var/i in loc)
|
||||||
var/atom/movable/thing = i
|
var/atom/movable/thing = i
|
||||||
// We don't call parent so we are calling this for byond
|
// We don't call parent so we are calling this for byond
|
||||||
thing.Crossed(src)
|
thing.Crossed(src, oldloc)
|
||||||
|
|
||||||
// We're a multi-tile object (multiple locs)
|
// We're a multi-tile object (multiple locs)
|
||||||
else if(. && newloc)
|
else if(. && newloc)
|
||||||
@@ -462,6 +462,8 @@
|
|||||||
minor_dir = dx
|
minor_dir = dx
|
||||||
minor_dist = dist_x
|
minor_dist = dist_x
|
||||||
|
|
||||||
|
range = min(dist_x + dist_y, range)
|
||||||
|
|
||||||
while(src && target && src.throwing && istype(src.loc, /turf) \
|
while(src && target && src.throwing && istype(src.loc, /turf) \
|
||||||
&& ((abs(target.x - src.x)+abs(target.y - src.y) > 0 && dist_travelled < range) \
|
&& ((abs(target.x - src.x)+abs(target.y - src.y) > 0 && dist_travelled < range) \
|
||||||
|| (a && a.has_gravity == 0) \
|
|| (a && a.has_gravity == 0) \
|
||||||
|
|||||||
@@ -118,6 +118,10 @@ var/global/list/datum/dna/gene/dna_genes[0]
|
|||||||
var/base_species = "Human"
|
var/base_species = "Human"
|
||||||
var/list/species_traits = list()
|
var/list/species_traits = list()
|
||||||
var/blood_color = "#A10808"
|
var/blood_color = "#A10808"
|
||||||
|
var/custom_say
|
||||||
|
var/custom_ask
|
||||||
|
var/custom_whisper
|
||||||
|
var/custom_exclaim
|
||||||
// VOREStation
|
// VOREStation
|
||||||
|
|
||||||
// New stuff
|
// New stuff
|
||||||
@@ -139,6 +143,10 @@ var/global/list/datum/dna/gene/dna_genes[0]
|
|||||||
new_dna.custom_species=custom_species //VOREStaton Edit
|
new_dna.custom_species=custom_species //VOREStaton Edit
|
||||||
new_dna.species_traits=species_traits.Copy() //VOREStation Edit
|
new_dna.species_traits=species_traits.Copy() //VOREStation Edit
|
||||||
new_dna.blood_color=blood_color //VOREStation Edit
|
new_dna.blood_color=blood_color //VOREStation Edit
|
||||||
|
new_dna.custom_say=custom_say //VOREStaton Edit
|
||||||
|
new_dna.custom_ask=custom_ask //VOREStaton Edit
|
||||||
|
new_dna.custom_whisper=custom_whisper //VOREStaton Edit
|
||||||
|
new_dna.custom_exclaim=custom_exclaim //VOREStaton Edit
|
||||||
for(var/b=1;b<=DNA_SE_LENGTH;b++)
|
for(var/b=1;b<=DNA_SE_LENGTH;b++)
|
||||||
new_dna.SE[b]=SE[b]
|
new_dna.SE[b]=SE[b]
|
||||||
if(b<=DNA_UI_LENGTH)
|
if(b<=DNA_UI_LENGTH)
|
||||||
@@ -200,15 +208,15 @@ var/global/list/datum/dna/gene/dna_genes[0]
|
|||||||
size_multiplier = player_sizes_list.Find(N)
|
size_multiplier = player_sizes_list.Find(N)
|
||||||
break
|
break
|
||||||
|
|
||||||
var/taurtype = /datum/sprite_accessory/tail/taur/spider
|
|
||||||
if(istype(character.tail_style, taurtype))
|
|
||||||
character.verbs += /mob/living/proc/weaveWebBindings
|
|
||||||
|
|
||||||
// Technically custom_species is not part of the UI, but this place avoids merge problems.
|
// Technically custom_species is not part of the UI, but this place avoids merge problems.
|
||||||
src.custom_species = character.custom_species
|
src.custom_species = character.custom_species
|
||||||
src.base_species = character.species.base_species
|
src.base_species = character.species.base_species
|
||||||
src.blood_color = character.species.blood_color
|
src.blood_color = character.species.blood_color
|
||||||
src.species_traits = character.species.traits.Copy()
|
src.species_traits = character.species.traits.Copy()
|
||||||
|
src.custom_say = character.custom_say
|
||||||
|
src.custom_ask = character.custom_ask
|
||||||
|
src.custom_whisper = character.custom_whisper
|
||||||
|
src.custom_exclaim = character.custom_exclaim
|
||||||
|
|
||||||
// +1 to account for the none-of-the-above possibility
|
// +1 to account for the none-of-the-above possibility
|
||||||
SetUIValueRange(DNA_UI_EAR_STYLE, ear_style + 1, ear_styles_list.len + 1, 1)
|
SetUIValueRange(DNA_UI_EAR_STYLE, ear_style + 1, ear_styles_list.len + 1, 1)
|
||||||
|
|||||||
@@ -237,6 +237,10 @@
|
|||||||
|
|
||||||
// Technically custom_species is not part of the UI, but this place avoids merge problems.
|
// Technically custom_species is not part of the UI, but this place avoids merge problems.
|
||||||
H.custom_species = dna.custom_species
|
H.custom_species = dna.custom_species
|
||||||
|
H.custom_say = dna.custom_say
|
||||||
|
H.custom_ask = dna.custom_ask
|
||||||
|
H.custom_whisper = dna.custom_whisper
|
||||||
|
H.custom_exclaim = dna.custom_exclaim
|
||||||
H.species.blood_color = dna.blood_color
|
H.species.blood_color = dna.blood_color
|
||||||
var/datum/species/S = H.species
|
var/datum/species/S = H.species
|
||||||
S.produceCopy(dna.base_species,dna.species_traits,src)
|
S.produceCopy(dna.base_species,dna.species_traits,src)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
var/last_activation = 0
|
var/last_activation = 0
|
||||||
|
|
||||||
/obj/structure/cult/pylon/Initialize()
|
/obj/structure/cult/pylon/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
START_PROCESSING(SSobj, src)
|
START_PROCESSING(SSobj, src)
|
||||||
|
|
||||||
/obj/structure/cult/pylon/attack_hand(mob/M as mob)
|
/obj/structure/cult/pylon/attack_hand(mob/M as mob)
|
||||||
|
|||||||
9
code/game/jobs/job/alt_titles_zz_ch.dm
Normal file
9
code/game/jobs/job/alt_titles_zz_ch.dm
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
/datum/job/entertainer
|
||||||
|
alt_titles = list("Performer" = /datum/alt_title/performer, "Musician" = /datum/alt_title/musician, "Stagehand" = /datum/alt_title/stagehand,
|
||||||
|
"Actor" = /datum/alt_title/actor, "Dancer" = /datum/alt_title/dancer, "Singer" = /datum/alt_title/singer,
|
||||||
|
"Magician" = /datum/alt_title/magician, "Comedian" = /datum/alt_title/comedian, "Tragedian" = /datum/alt_title/tragedian,
|
||||||
|
"Fitness Instructor" = /datum/alt_title/fitness)
|
||||||
|
|
||||||
|
/datum/alt_title/fitness
|
||||||
|
title = "Fitness Instructor"
|
||||||
|
title_blurb = "A Fitness Instructor's goal is to keep the station in shape. Get the crew shaving up those built up pounds and get them to eat something other than chocolate bars and burgers for once"
|
||||||
@@ -529,5 +529,5 @@
|
|||||||
stasis_level = 100 //Just one setting
|
stasis_level = 100 //Just one setting
|
||||||
|
|
||||||
/obj/machinery/sleeper/survival_pod/Initialize()
|
/obj/machinery/sleeper/survival_pod/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
RefreshParts(1)
|
RefreshParts(1)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/obj/machinery/computer/arcade/
|
/obj/machinery/computer/arcade
|
||||||
name = "random arcade"
|
name = "random arcade"
|
||||||
desc = "random arcade machine"
|
desc = "random arcade machine"
|
||||||
icon_state = "arcade"
|
icon_state = "arcade"
|
||||||
@@ -25,15 +25,15 @@
|
|||||||
/obj/item/toy/stickhorse = 2
|
/obj/item/toy/stickhorse = 2
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/machinery/computer/arcade/New()
|
/obj/machinery/computer/arcade/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
// If it's a generic arcade machine, pick a random arcade
|
// If it's a generic arcade machine, pick a random arcade
|
||||||
// circuit board for it and make the new machine
|
// circuit board for it and make the new machine
|
||||||
if(!circuit)
|
if(!circuit)
|
||||||
var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/arcade) - /obj/item/weapon/circuitboard/arcade/clawmachine)
|
var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/arcade) - /obj/item/weapon/circuitboard/arcade/clawmachine)
|
||||||
var/obj/item/weapon/circuitboard/CB = new choice()
|
var/obj/item/weapon/circuitboard/CB = new choice()
|
||||||
new CB.build_path(loc, CB)
|
new CB.build_path(loc, CB)
|
||||||
qdel(src)
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|
||||||
/obj/machinery/computer/arcade/proc/prizevend()
|
/obj/machinery/computer/arcade/proc/prizevend()
|
||||||
if(!(contents-circuit).len)
|
if(!(contents-circuit).len)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
light_color = "#315ab4"
|
light_color = "#315ab4"
|
||||||
|
|
||||||
/obj/machinery/computer/cloning/Initialize()
|
/obj/machinery/computer/cloning/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
pods = list()
|
pods = list()
|
||||||
records = list()
|
records = list()
|
||||||
set_scan_temp("Scanner ready.", "good")
|
set_scan_temp("Scanner ready.", "good")
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/med_data/Initialize()
|
/obj/machinery/computer/med_data/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
field_edit_questions = list(
|
field_edit_questions = list(
|
||||||
// General
|
// General
|
||||||
"sex" = "Please select new sex:",
|
"sex" = "Please select new sex:",
|
||||||
|
|||||||
@@ -335,7 +335,7 @@
|
|||||||
name = "Monitor Decryption Key"
|
name = "Monitor Decryption Key"
|
||||||
|
|
||||||
/obj/item/weapon/paper/monitorkey/Initialize()
|
/obj/item/weapon/paper/monitorkey/Initialize()
|
||||||
..() //Late init
|
..()
|
||||||
return INITIALIZE_HINT_LATELOAD
|
return INITIALIZE_HINT_LATELOAD
|
||||||
|
|
||||||
/obj/item/weapon/paper/monitorkey/LateInitialize()
|
/obj/item/weapon/paper/monitorkey/LateInitialize()
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
var/title = "Mass Driver Controls"
|
var/title = "Mass Driver Controls"
|
||||||
|
|
||||||
/obj/machinery/computer/pod/Initialize()
|
/obj/machinery/computer/pod/Initialize()
|
||||||
..() //Not returning parent because lateload
|
..()
|
||||||
return INITIALIZE_HINT_LATELOAD
|
return INITIALIZE_HINT_LATELOAD
|
||||||
|
|
||||||
/obj/machinery/computer/pod/LateInitialize()
|
/obj/machinery/computer/pod/LateInitialize()
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
var/static/list/field_edit_choices
|
var/static/list/field_edit_choices
|
||||||
|
|
||||||
/obj/machinery/computer/secure_data/Initialize()
|
/obj/machinery/computer/secure_data/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
field_edit_questions = list(
|
field_edit_questions = list(
|
||||||
// General
|
// General
|
||||||
"name" = "Please enter new name:",
|
"name" = "Please enter new name:",
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
var/static/list/field_edit_choices
|
var/static/list/field_edit_choices
|
||||||
|
|
||||||
/obj/machinery/computer/skills/Initialize()
|
/obj/machinery/computer/skills/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
field_edit_questions = list(
|
field_edit_questions = list(
|
||||||
// General
|
// General
|
||||||
"name" = "Please input new name:",
|
"name" = "Please input new name:",
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
|
|
||||||
/obj/machinery/door_timer/Initialize()
|
/obj/machinery/door_timer/Initialize()
|
||||||
..()
|
..()
|
||||||
//Doors need to go first, and can't rely on init order, so come back to me.
|
|
||||||
return INITIALIZE_HINT_LATELOAD
|
return INITIALIZE_HINT_LATELOAD
|
||||||
|
|
||||||
/obj/machinery/door_timer/LateInitialize()
|
/obj/machinery/door_timer/LateInitialize()
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ GLOBAL_LIST_BOILERPLATE(allCasters, /obj/machinery/newscaster)
|
|||||||
securityCaster = 1
|
securityCaster = 1
|
||||||
|
|
||||||
/obj/machinery/newscaster/Initialize()
|
/obj/machinery/newscaster/Initialize()
|
||||||
..() //Not returning . because lateload below
|
..()
|
||||||
GLOB.allCasters += src
|
GLOB.allCasters += src
|
||||||
unit_no = ++unit_no_cur
|
unit_no = ++unit_no_cur
|
||||||
paper_remaining = 15
|
paper_remaining = 15
|
||||||
|
|||||||
72
code/game/machinery/telecomms/broadcaster_ch.dm
Normal file
72
code/game/machinery/telecomms/broadcaster_ch.dm
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
//This is meant for essentially linking a separate z-level to the rest with telecomms
|
||||||
|
/obj/machinery/telecomms/allinone/link
|
||||||
|
name = "Telecommunications Mainframe"
|
||||||
|
icon = 'icons/obj/stationobjs.dmi'
|
||||||
|
icon_state = "allinone"
|
||||||
|
desc = "A compact machine used for portable subspace telecommuniations processing."
|
||||||
|
density = 1
|
||||||
|
use_power = USE_POWER_IDLE
|
||||||
|
idle_power_usage = 20
|
||||||
|
anchored = 1
|
||||||
|
machinetype = 6
|
||||||
|
produces_heat = 0
|
||||||
|
|
||||||
|
/obj/machinery/telecomms/allinone/link/receive_signal(datum/signal/signal)
|
||||||
|
|
||||||
|
// Has to be on to receive messages
|
||||||
|
if(!on)
|
||||||
|
return
|
||||||
|
|
||||||
|
// Why did you use this subtype?
|
||||||
|
if(!using_map.use_overmap)
|
||||||
|
return
|
||||||
|
|
||||||
|
// Is there a valid signal
|
||||||
|
if(!signal)
|
||||||
|
return
|
||||||
|
|
||||||
|
// Where are we able to hear from (and talk to, since we're AIO) anyway?
|
||||||
|
//var/map_levels = using_map.get_map_levels(z, TRUE, overmap_range)
|
||||||
|
|
||||||
|
if("[signal.data["level"]]" == "[z]")
|
||||||
|
signal.data["level"] = list(0)
|
||||||
|
else
|
||||||
|
signal.data["level"] = list(z)
|
||||||
|
|
||||||
|
if(is_freq_listening(signal)) // detect subspace signals
|
||||||
|
|
||||||
|
signal.data["done"] = 1 // mark the signal as being broadcasted since we're a broadcaster
|
||||||
|
signal.data["compression"] = 0 // decompress since we're a processor
|
||||||
|
|
||||||
|
if(signal.data["slow"] > 0)
|
||||||
|
sleep(signal.data["slow"]) // simulate the network lag if necessary
|
||||||
|
|
||||||
|
/* ###### Broadcast a message using signal.data ###### */
|
||||||
|
|
||||||
|
var/datum/radio_frequency/connection = signal.data["connection"]
|
||||||
|
|
||||||
|
var/list/forced_radios
|
||||||
|
for(var/weakref/wr in linked_radios_weakrefs)
|
||||||
|
var/obj/item/device/radio/R = wr.resolve()
|
||||||
|
if(istype(R))
|
||||||
|
LAZYDISTINCTADD(forced_radios, R)
|
||||||
|
|
||||||
|
Broadcast_Message(
|
||||||
|
signal.data["connection"],
|
||||||
|
signal.data["mob"],
|
||||||
|
signal.data["vmask"],
|
||||||
|
signal.data["vmessage"],
|
||||||
|
signal.data["radio"],
|
||||||
|
signal.data["message"],
|
||||||
|
signal.data["name"],
|
||||||
|
signal.data["job"],
|
||||||
|
signal.data["realname"],
|
||||||
|
signal.data["vname"],
|
||||||
|
DATA_NORMAL,
|
||||||
|
signal.data["compression"],
|
||||||
|
signal.data["level"],
|
||||||
|
connection.frequency,
|
||||||
|
signal.data["verb"],
|
||||||
|
signal.data["language"],
|
||||||
|
forced_radios
|
||||||
|
)
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
sleep(2)
|
sleep(2)
|
||||||
go_out()
|
go_out()
|
||||||
sleep(2)
|
sleep(2)
|
||||||
del(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/machinery/transportpod/relaymove(mob/user as mob)
|
/obj/machinery/transportpod/relaymove(mob/user as mob)
|
||||||
if(user.stat)
|
if(user.stat)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
thrusters_possible = 1
|
thrusters_possible = 1
|
||||||
|
|
||||||
/obj/mecha/combat/gorilla/Initialize()
|
/obj/mecha/combat/gorilla/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) // This thing basically cannot function without an external power supply.
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay(src) // This thing basically cannot function without an external power supply.
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon(src)
|
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon(src)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
switch_dmg_type_possible = TRUE
|
switch_dmg_type_possible = TRUE
|
||||||
|
|
||||||
/obj/mecha/combat/phazon/equipped/Initialize()
|
/obj/mecha/combat/phazon/equipped/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
starting_equipment = list(
|
starting_equipment = list(
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/rcd,
|
/obj/item/mecha_parts/mecha_equipment/tool/rcd,
|
||||||
/obj/item/mecha_parts/mecha_equipment/gravcatapult
|
/obj/item/mecha_parts/mecha_equipment/gravcatapult
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
. += "<span class='warning'><b>It is completely destroyed.</b></span>"
|
. += "<span class='warning'><b>It is completely destroyed.</b></span>"
|
||||||
|
|
||||||
/obj/item/mecha_parts/component/Initialize()
|
/obj/item/mecha_parts/component/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
integrity = max_integrity
|
integrity = max_integrity
|
||||||
|
|
||||||
if(start_damaged)
|
if(start_damaged)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
var/obj/item/weapon/inflatable_dispenser/my_deployer = null
|
var/obj/item/weapon/inflatable_dispenser/my_deployer = null
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Initialize()
|
/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
my_deployer = my_tool
|
my_deployer = my_tool
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Topic(href, href_list)
|
/obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables/Topic(href, href_list)
|
||||||
|
|||||||
@@ -318,7 +318,7 @@
|
|||||||
equip_type = EQUIP_HULL
|
equip_type = EQUIP_HULL
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/crisis_drone/Initialize()
|
/obj/item/mecha_parts/mecha_equipment/crisis_drone/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
drone_overlay = new(src.icon, icon_state = droid_state)
|
drone_overlay = new(src.icon, icon_state = droid_state)
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/crisis_drone/Destroy()
|
/obj/item/mecha_parts/mecha_equipment/crisis_drone/Destroy()
|
||||||
|
|||||||
@@ -198,7 +198,7 @@
|
|||||||
var/weapons_only_cycle = FALSE //So combat mechs don't switch to their equipment at times.
|
var/weapons_only_cycle = FALSE //So combat mechs don't switch to their equipment at times.
|
||||||
|
|
||||||
/obj/mecha/Initialize()
|
/obj/mecha/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
|
|
||||||
for(var/path in starting_components)
|
for(var/path in starting_components)
|
||||||
var/obj/item/mecha_parts/component/C = new path(src)
|
var/obj/item/mecha_parts/component/C = new path(src)
|
||||||
|
|||||||
@@ -127,7 +127,7 @@
|
|||||||
C.images += holder
|
C.images += holder
|
||||||
*/
|
*/
|
||||||
/obj/mecha/medical/odysseus/loaded/Initialize()
|
/obj/mecha/medical/odysseus/loaded/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
ME = new /obj/item/mecha_parts/mecha_equipment/tool/sleeper
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
max_special_equip = 1
|
max_special_equip = 1
|
||||||
|
|
||||||
/obj/mecha/working/ripley/deathripley/Initialize()
|
/obj/mecha/working/ripley/deathripley/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/safety
|
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp/safety
|
||||||
ME.attach(src)
|
ME.attach(src)
|
||||||
return
|
return
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
name = "APLU \"Miner\""
|
name = "APLU \"Miner\""
|
||||||
|
|
||||||
/obj/mecha/working/ripley/mining/Initialize()
|
/obj/mecha/working/ripley/mining/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
//Attach drill
|
//Attach drill
|
||||||
if(prob(25)) //Possible diamond drill... Feeling lucky?
|
if(prob(25)) //Possible diamond drill... Feeling lucky?
|
||||||
var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
|
var/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill/D = new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
|
||||||
|
|||||||
@@ -40,10 +40,7 @@
|
|||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/atom/movable/proc/has_buckled_mobs()
|
/atom/movable/proc/has_buckled_mobs()
|
||||||
if(!buckled_mobs)
|
return LAZYLEN(buckled_mobs)
|
||||||
return FALSE
|
|
||||||
if(buckled_mobs.len)
|
|
||||||
return TRUE
|
|
||||||
|
|
||||||
/atom/movable/Destroy()
|
/atom/movable/Destroy()
|
||||||
unbuckle_all_mobs()
|
unbuckle_all_mobs()
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
create_reagents(100)
|
create_reagents(100)
|
||||||
|
|
||||||
/obj/effect/decal/cleanable/chemcoating/Initialize()
|
/obj/effect/decal/cleanable/chemcoating/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(T)
|
if(T)
|
||||||
for(var/obj/O in get_turf(src))
|
for(var/obj/O in get_turf(src))
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/obj/effect/decal/warning_stripes
|
/obj/effect/decal/warning_stripes
|
||||||
icon = 'icons/effects/warning_stripes.dmi'
|
icon = 'icons/effects/warning_stripes.dmi'
|
||||||
|
|
||||||
/obj/effect/decal/warning_stripes/New()
|
/obj/effect/decal/warning_stripes/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
var/turf/T=get_turf(src)
|
var/turf/T=get_turf(src)
|
||||||
var/image/I=image(icon, icon_state = icon_state, dir = dir)
|
var/image/I=image(icon, icon_state = icon_state, dir = dir)
|
||||||
I.color=color
|
I.color=color
|
||||||
T.overlays += I
|
T.overlays += I
|
||||||
qdel(src)
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|||||||
@@ -10,32 +10,37 @@
|
|||||||
var/obj/item/weapon/mine/mineitemtype = /obj/item/weapon/mine
|
var/obj/item/weapon/mine/mineitemtype = /obj/item/weapon/mine
|
||||||
var/panel_open = 0
|
var/panel_open = 0
|
||||||
var/datum/wires/mines/wires = null
|
var/datum/wires/mines/wires = null
|
||||||
register_as_dangerous_object = TRUE
|
|
||||||
|
|
||||||
var/camo_net = FALSE // Will the mine 'cloak' on deployment?
|
var/camo_net = FALSE // Will the mine 'cloak' on deployment?
|
||||||
|
|
||||||
// The trap item will be triggered in some manner when detonating. Default only checks for grenades.
|
// The trap item will be triggered in some manner when detonating. Default only checks for grenades.
|
||||||
var/obj/item/trap = null
|
var/obj/item/trap = null
|
||||||
|
|
||||||
/obj/effect/mine/New()
|
/obj/effect/mine/Initialize()
|
||||||
icon_state = "uglyminearmed"
|
icon_state = "uglyminearmed"
|
||||||
wires = new(src)
|
wires = new(src)
|
||||||
|
. = ..()
|
||||||
if(ispath(trap))
|
if(ispath(trap))
|
||||||
trap = new trap(src)
|
trap = new trap(src)
|
||||||
|
register_dangerous_to_step()
|
||||||
/obj/effect/mine/Initialize()
|
|
||||||
..()
|
|
||||||
|
|
||||||
if(camo_net)
|
if(camo_net)
|
||||||
alpha = 50
|
alpha = 50
|
||||||
|
|
||||||
/obj/effect/mine/Destroy()
|
/obj/effect/mine/Destroy()
|
||||||
|
unregister_dangerous_to_step()
|
||||||
if(trap)
|
if(trap)
|
||||||
QDEL_NULL(trap)
|
QDEL_NULL(trap)
|
||||||
qdel_null(wires)
|
qdel_null(wires)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/obj/effect/mine/Moved(atom/oldloc)
|
||||||
|
. = ..()
|
||||||
|
if(.)
|
||||||
|
var/turf/old_turf = get_turf(oldloc)
|
||||||
|
var/turf/new_turf = get_turf(src)
|
||||||
|
if(old_turf != new_turf)
|
||||||
|
old_turf.unregister_dangerous_object(src)
|
||||||
|
new_turf.register_dangerous_object(src)
|
||||||
|
|
||||||
/obj/effect/mine/proc/explode(var/mob/living/M)
|
/obj/effect/mine/proc/explode(var/mob/living/M)
|
||||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread()
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread()
|
||||||
triggered = 1
|
triggered = 1
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/effect/temporary_effect/eruption/Initialize()
|
/obj/effect/temporary_effect/eruption/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
flick("[icon_state]_create",src)
|
flick("[icon_state]_create",src)
|
||||||
|
|
||||||
/obj/effect/temporary_effect/eruption/Destroy()
|
/obj/effect/temporary_effect/eruption/Destroy()
|
||||||
|
|||||||
@@ -159,7 +159,6 @@
|
|||||||
|
|
||||||
/obj/effect/spawner/newbomb/Initialize(newloc)
|
/obj/effect/spawner/newbomb/Initialize(newloc)
|
||||||
..(newloc)
|
..(newloc)
|
||||||
|
|
||||||
var/obj/item/device/transfer_valve/V = new(src.loc)
|
var/obj/item/device/transfer_valve/V = new(src.loc)
|
||||||
var/obj/item/weapon/tank/phoron/PT = new(V)
|
var/obj/item/weapon/tank/phoron/PT = new(V)
|
||||||
var/obj/item/weapon/tank/oxygen/OT = new(V)
|
var/obj/item/weapon/tank/oxygen/OT = new(V)
|
||||||
@@ -183,19 +182,14 @@
|
|||||||
OT.air_contents.temperature = PHORON_MINIMUM_BURN_TEMPERATURE+1
|
OT.air_contents.temperature = PHORON_MINIMUM_BURN_TEMPERATURE+1
|
||||||
OT.air_contents.update_values()
|
OT.air_contents.update_values()
|
||||||
|
|
||||||
|
|
||||||
var/obj/item/device/assembly/S = new assembly_type(V)
|
var/obj/item/device/assembly/S = new assembly_type(V)
|
||||||
|
|
||||||
|
|
||||||
V.attached_device = S
|
V.attached_device = S
|
||||||
|
|
||||||
S.holder = V
|
S.holder = V
|
||||||
S.toggle_secure()
|
S.toggle_secure()
|
||||||
|
|
||||||
V.update_icon()
|
V.update_icon()
|
||||||
|
return INITIALIZE_HINT_QDEL
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////
|
///////////////////////
|
||||||
|
|||||||
@@ -20,10 +20,14 @@
|
|||||||
/obj/effect/simple_portal/proc/handle_teleport(atom/movable/AM)
|
/obj/effect/simple_portal/proc/handle_teleport(atom/movable/AM)
|
||||||
if(destination)
|
if(destination)
|
||||||
AM.forceMove(destination)
|
AM.forceMove(destination)
|
||||||
if(!AM.is_incorporeal())
|
if(!AM.is_incorporeal() && !istype(AM,/mob/observer))
|
||||||
playsound(get_turf(src),teleport_sound,60,1)
|
playsound(get_turf(src),teleport_sound,60,1)
|
||||||
playsound(get_turf(destination),teleport_sound,60,1)
|
playsound(get_turf(destination),teleport_sound,60,1)
|
||||||
|
|
||||||
|
/obj/effect/simple_portal/attack_ghost(var/mob/observer/dead/user)
|
||||||
|
. = ..()
|
||||||
|
handle_teleport(user)
|
||||||
|
|
||||||
/obj/effect/simple_portal/coords
|
/obj/effect/simple_portal/coords
|
||||||
var/tele_x
|
var/tele_x
|
||||||
var/tele_y
|
var/tele_y
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
var/cell_type = /obj/item/weapon/cell/device
|
var/cell_type = /obj/item/weapon/cell/device
|
||||||
|
|
||||||
/obj/item/device/flash/Initialize()
|
/obj/item/device/flash/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
power_supply = new cell_type(src)
|
power_supply = new cell_type(src)
|
||||||
|
|
||||||
/obj/item/device/flash/attackby(var/obj/item/W, var/mob/user)
|
/obj/item/device/flash/attackby(var/obj/item/W, var/mob/user)
|
||||||
|
|||||||
@@ -7,15 +7,12 @@
|
|||||||
var/obj/item/stack/type_to_spawn = null
|
var/obj/item/stack/type_to_spawn = null
|
||||||
|
|
||||||
/obj/fiftyspawner/Initialize()
|
/obj/fiftyspawner/Initialize()
|
||||||
..() //We're not returning . because we're going to ask to be deleted.
|
..()
|
||||||
|
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
var/obj/item/stack/M = new type_to_spawn(T)
|
var/obj/structure/closet/C = locate() in T
|
||||||
|
var/obj/item/stack/M = new type_to_spawn(C || T)
|
||||||
M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty
|
M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty
|
||||||
M.update_icon() // Some stacks have different sprites depending on how full they are.
|
M.update_icon() // Some stacks have different sprites depending on how full they are.
|
||||||
var/obj/structure/closet/C = locate() in T
|
|
||||||
if(C)
|
|
||||||
C.contents += M
|
|
||||||
return INITIALIZE_HINT_QDEL //Bye!
|
return INITIALIZE_HINT_QDEL //Bye!
|
||||||
|
|
||||||
/obj/fiftyspawner/rods
|
/obj/fiftyspawner/rods
|
||||||
|
|||||||
@@ -24,8 +24,8 @@
|
|||||||
stacktype = /obj/item/stack/rods
|
stacktype = /obj/item/stack/rods
|
||||||
no_variants = TRUE
|
no_variants = TRUE
|
||||||
|
|
||||||
/obj/item/stack/rods/New()
|
/obj/item/stack/rods/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
recipes = rods_recipes
|
recipes = rods_recipes
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
|
|||||||
@@ -32,19 +32,15 @@
|
|||||||
|
|
||||||
bag_material = MAT_SYNCLOTH
|
bag_material = MAT_SYNCLOTH
|
||||||
|
|
||||||
/obj/item/stack/sandbags/New(var/newloc, var/amt, var/bag_mat)
|
/obj/item/stack/sandbags/Initialize(var/ml, var/amt, var/bag_mat)
|
||||||
..()
|
. = ..(ml, amt)
|
||||||
recipes = sandbag_recipes
|
recipes = sandbag_recipes
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
if(bag_mat)
|
if(bag_mat)
|
||||||
bag_material = bag_mat
|
bag_material = bag_mat
|
||||||
|
|
||||||
var/datum/material/M = get_material_by_name("[bag_material]")
|
var/datum/material/M = get_material_by_name("[bag_material]")
|
||||||
if(!M)
|
if(!M)
|
||||||
qdel(src)
|
return INITIALIZE_HINT_QDEL
|
||||||
return
|
|
||||||
|
|
||||||
color = M.icon_colour
|
color = M.icon_colour
|
||||||
|
|
||||||
/obj/item/stack/sandbags/update_icon()
|
/obj/item/stack/sandbags/update_icon()
|
||||||
@@ -136,17 +132,13 @@ var/global/list/datum/stack_recipe/sandbag_recipes = list( \
|
|||||||
|
|
||||||
var/bag_material = "cloth"
|
var/bag_material = "cloth"
|
||||||
|
|
||||||
/obj/item/stack/emptysandbag/New(var/newloc, var/amt, var/bag_mat)
|
/obj/item/stack/emptysandbag/Initialize(var/ml, var/amt, var/bag_mat)
|
||||||
..(newloc, amt)
|
. = ..(ml, amt)
|
||||||
|
|
||||||
if(bag_mat)
|
if(bag_mat)
|
||||||
bag_material = bag_mat
|
bag_material = bag_mat
|
||||||
|
|
||||||
var/datum/material/M = get_material_by_name("[bag_material]")
|
var/datum/material/M = get_material_by_name("[bag_material]")
|
||||||
if(!M)
|
if(!M)
|
||||||
qdel(src)
|
return INITIALIZE_HINT_QDEL
|
||||||
return
|
|
||||||
|
|
||||||
color = M.icon_colour
|
color = M.icon_colour
|
||||||
|
|
||||||
/obj/item/stack/emptysandbag/attack_self(var/mob/user)
|
/obj/item/stack/emptysandbag/attack_self(var/mob/user)
|
||||||
|
|||||||
@@ -29,14 +29,13 @@
|
|||||||
var/pass_color = FALSE // Will the item pass its own color var to the created item? Dyed cloth, wood, etc.
|
var/pass_color = FALSE // Will the item pass its own color var to the created item? Dyed cloth, wood, etc.
|
||||||
var/strict_color_stacking = FALSE // Will the stack merge with other stacks that are different colors? (Dyed cloth, wood, etc)
|
var/strict_color_stacking = FALSE // Will the stack merge with other stacks that are different colors? (Dyed cloth, wood, etc)
|
||||||
|
|
||||||
/obj/item/stack/New(var/loc, var/amount=null)
|
/obj/item/stack/Initialize(var/ml, var/amount)
|
||||||
..()
|
. = ..()
|
||||||
if (!stacktype)
|
if(!stacktype)
|
||||||
stacktype = type
|
stacktype = type
|
||||||
if (amount)
|
if(amount)
|
||||||
src.amount = amount
|
src.amount = amount
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/stack/Destroy()
|
/obj/item/stack/Destroy()
|
||||||
if(uses_charge)
|
if(uses_charge)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
w_class = ITEMSIZE_TINY
|
w_class = ITEMSIZE_TINY
|
||||||
max_amount = 30
|
max_amount = 30
|
||||||
|
|
||||||
/obj/item/stack/arcadeticket/New(loc, amount = null)
|
/obj/item/stack/arcadeticket/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,8 @@
|
|||||||
var/perunit = SHEET_MATERIAL_AMOUNT
|
var/perunit = SHEET_MATERIAL_AMOUNT
|
||||||
var/apply_colour //CHOMPEDIT: End
|
var/apply_colour //CHOMPEDIT: End
|
||||||
|
|
||||||
/obj/item/stack/tile/New()
|
/obj/item/stack/tile/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
randpixel_xy()
|
randpixel_xy()
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
10
code/game/objects/items/weapons/id cards/cards_vr.dm
Normal file
10
code/game/objects/items/weapons/id cards/cards_vr.dm
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/obj/item/weapon/card/emag/examine(mob/user)
|
||||||
|
. = ..()
|
||||||
|
. += "[uses] uses remaining."
|
||||||
|
|
||||||
|
/obj/item/weapon/card/emag/used
|
||||||
|
uses = 1
|
||||||
|
|
||||||
|
/obj/item/weapon/card/emag/used/Initialize()
|
||||||
|
. = ..()
|
||||||
|
uses = rand(1, 5)
|
||||||
@@ -299,3 +299,13 @@
|
|||||||
src.imp = new /obj/item/weapon/implant/organ/limbaugment/wrist/blade( src )
|
src.imp = new /obj/item/weapon/implant/organ/limbaugment/wrist/blade( src )
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/item/weapon/implantcase/restrainingbolt
|
||||||
|
name = "glass case - 'Restraining Bolt'"
|
||||||
|
desc = "A case containing a restraining bolt."
|
||||||
|
icon_state = "implantcase-b"
|
||||||
|
|
||||||
|
/obj/item/weapon/implantcase/restrainingbolt/New()
|
||||||
|
src.imp = new /obj/item/weapon/implant/restrainingbolt( src )
|
||||||
|
..()
|
||||||
|
return
|
||||||
|
|||||||
@@ -150,3 +150,12 @@
|
|||||||
S.remove_from_storage(A)
|
S.remove_from_storage(A)
|
||||||
A.loc.contents.Remove(A)
|
A.loc.contents.Remove(A)
|
||||||
update()
|
update()
|
||||||
|
|
||||||
|
/obj/item/weapon/implanter/restrainingbolt
|
||||||
|
name = "implanter (bolt)"
|
||||||
|
|
||||||
|
/obj/item/weapon/implanter/restrainingbolt/New()
|
||||||
|
src.imp = new /obj/item/weapon/implant/restrainingbolt( src )
|
||||||
|
..()
|
||||||
|
update()
|
||||||
|
return
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
/obj/item/weapon/implant/restrainingbolt
|
||||||
|
name = "\improper restraining bolt"
|
||||||
|
icon = 'icons/obj/device.dmi'
|
||||||
|
icon_state = "implant"
|
||||||
@@ -103,9 +103,9 @@
|
|||||||
<h2>Meat Pie:</h2>
|
<h2>Meat Pie:</h2>
|
||||||
Flat Dough and Meat in an Oven Pan, same way you use the Grill; take the Pan out, put the ingredients in, and place it back to cook. Simple, but very good looking and tasty!
|
Flat Dough and Meat in an Oven Pan, same way you use the Grill; take the Pan out, put the ingredients in, and place it back to cook. Simple, but very good looking and tasty!
|
||||||
<h2>Burritos:</h2>
|
<h2>Burritos:</h2>
|
||||||
A personal favorite due to flexibility of options: Use a Tortilla as a base for all of these. For a meaty one, add 2 cooked cutlets to the Microwave; very simple and filling! To add some cheese to that meaty burrito use 2 meatballs and 1 cheese wedge <b>((For some reason only the base meaty burrito uses cutlets all the other recipies uses meatballs... please let someone in #wiki or #dev know if this changes.))</b> For a Breakfast Wrap, add a whole Egg, Cooked Bacon (Raw Bacon cooked in the Microwave), and Cheese in with the Tortilla. For Vegan Burritos, just cook a Tortilla and Tofu together in the Microwave.
|
Burritos: A personal favorite due to flexibility of options: Use a Tortilla as a base for all of these. For a Chili one, add 2 Meatballs and 1 Space Spice (found near the Flour) to the Microwave; very simple and filling! Add a Cheese Wedge instead of the spice to make a queso burrito. For a Breakfast Wrap, add a whole Egg, Cooked Bacon (Raw Bacon cooked in the Microwave), and Cheese in with the Tortilla. For Vegan Burritos, just cook a Tortilla and Tofu together in the Microwave.
|
||||||
<h2>Tacos:</h2>
|
<h2>Tacos:</h2>
|
||||||
Either a Tortilla or Dough Slice as the base, then 1 cooked Cutlet, and a Cheese Wedge. Very easy to mass produce, great in a pinch!
|
Use a tortilla then 1 cooked Cutlet, and a Cheese Wedge. Very easy to mass produce, great in a pinch!
|
||||||
<h2>Cheesy Nachos:</h2>
|
<h2>Cheesy Nachos:</h2>
|
||||||
Tortilla, Cheese and 1 unit of Salt in the microwave, the perfect Finger Food!
|
Tortilla, Cheese and 1 unit of Salt in the microwave, the perfect Finger Food!
|
||||||
<h2>Spaghetti:</h2>
|
<h2>Spaghetti:</h2>
|
||||||
@@ -126,11 +126,10 @@
|
|||||||
<h4>((The websites linked above are also on our stations wiki. Which is always in need of helping heads to fix it up. The recipes listed on the web link may not be fully accurate so please don't be afraid to pop into the discord wiki channel and lend a hand!))</h4>
|
<h4>((The websites linked above are also on our stations wiki. Which is always in need of helping heads to fix it up. The recipes listed on the web link may not be fully accurate so please don't be afraid to pop into the discord wiki channel and lend a hand!))</h4>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
"}
|
"}
|
||||||
|
|
||||||
//accurate as of 2/17/21
|
//accurate as of 2/23/21
|
||||||
/obj/item/weapon/book/manual//bar_guide
|
/obj/item/weapon/book/manual/bar_guide
|
||||||
name = "How to Alcohol (And other Drinks)"
|
name = "How to Alcohol (And other Drinks)"
|
||||||
desc = "A helpful guide to the world of barkeeping."
|
desc = "A helpful guide to the world of barkeeping."
|
||||||
icon_state = "bar-guide"
|
icon_state = "bar-guide"
|
||||||
@@ -214,7 +213,7 @@
|
|||||||
1 part Beer, 2 parts Ale
|
1 part Beer, 2 parts Ale
|
||||||
<h3>Whiskey Cola:</h3>
|
<h3>Whiskey Cola:</h3>
|
||||||
2 parts Whiskey, 1 part Space Cola
|
2 parts Whiskey, 1 part Space Cola
|
||||||
<h3>Binman Bliss:
|
<h3>Binman Bliss:</h3>
|
||||||
1 part Sake, 1 part Tequila
|
1 part Sake, 1 part Tequila
|
||||||
|
|
||||||
<h1>High Alcohol</h1>
|
<h1>High Alcohol</h1>
|
||||||
|
|||||||
@@ -77,14 +77,14 @@
|
|||||||
//visible_message("[user] has smashed the snowball in their hand!", "You smash the snowball in your hand.")
|
//visible_message("[user] has smashed the snowball in their hand!", "You smash the snowball in your hand.")
|
||||||
to_chat(user, "<span class='notice'>You smash the snowball in your hand.</span>")
|
to_chat(user, "<span class='notice'>You smash the snowball in your hand.</span>")
|
||||||
var/atom/S = new /obj/item/stack/material/snow(user.loc)
|
var/atom/S = new /obj/item/stack/material/snow(user.loc)
|
||||||
del(src)
|
qdel(src)
|
||||||
user.put_in_hands(S)
|
user.put_in_hands(S)
|
||||||
else
|
else
|
||||||
//visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.")
|
//visible_message("[user] starts compacting the snowball.", "You start compacting the snowball.")
|
||||||
to_chat(user, "<span class='notice'>You start compacting the snowball.</span>")
|
to_chat(user, "<span class='notice'>You start compacting the snowball.</span>")
|
||||||
if(do_after(user, 2 SECONDS))
|
if(do_after(user, 2 SECONDS))
|
||||||
var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc)
|
var/atom/S = new /obj/item/weapon/material/snow/snowball/reinforced(user.loc)
|
||||||
del(src)
|
qdel(src)
|
||||||
user.put_in_hands(S)
|
user.put_in_hands(S)
|
||||||
|
|
||||||
/obj/item/weapon/material/snow/snowball/reinforced
|
/obj/item/weapon/material/snow/snowball/reinforced
|
||||||
|
|||||||
@@ -174,7 +174,7 @@
|
|||||||
gauge_icon = "indicator_emergency"
|
gauge_icon = "indicator_emergency"
|
||||||
|
|
||||||
/obj/item/weapon/tank/emergency/nitrogen/Initialize()
|
/obj/item/weapon/tank/emergency/nitrogen/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
src.air_contents.adjust_gas("nitrogen", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
|
src.air_contents.adjust_gas("nitrogen", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
|
||||||
|
|
||||||
/obj/item/weapon/tank/emergency/nitrogen/double
|
/obj/item/weapon/tank/emergency/nitrogen/double
|
||||||
|
|||||||
@@ -671,7 +671,7 @@
|
|||||||
always_process = TRUE
|
always_process = TRUE
|
||||||
|
|
||||||
/obj/item/weapon/weldingtool/electric/mounted/exosuit/Initialize()
|
/obj/item/weapon/weldingtool/electric/mounted/exosuit/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
|
|
||||||
if(istype(loc, /obj/item/mecha_parts/mecha_equipment))
|
if(istype(loc, /obj/item/mecha_parts/mecha_equipment))
|
||||||
equip_mount = loc
|
equip_mount = loc
|
||||||
|
|||||||
@@ -19,29 +19,11 @@
|
|||||||
var/can_speak = 0 //For MMIs and admin trickery. If an object has a brainmob in its contents, set this to 1 to allow it to speak.
|
var/can_speak = 0 //For MMIs and admin trickery. If an object has a brainmob in its contents, set this to 1 to allow it to speak.
|
||||||
|
|
||||||
var/show_examine = TRUE // Does this pop up on a mob when the mob is examined?
|
var/show_examine = TRUE // Does this pop up on a mob when the mob is examined?
|
||||||
var/register_as_dangerous_object = FALSE // Should this tell its turf that it is dangerous automatically?
|
|
||||||
|
|
||||||
/obj/Initialize()
|
|
||||||
if(register_as_dangerous_object)
|
|
||||||
register_dangerous_to_step()
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/obj/Destroy()
|
/obj/Destroy()
|
||||||
STOP_PROCESSING(SSobj, src)
|
STOP_PROCESSING(SSobj, src)
|
||||||
if(register_as_dangerous_object)
|
|
||||||
unregister_dangerous_to_step()
|
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/Moved(atom/oldloc)
|
|
||||||
. = ..()
|
|
||||||
if(register_as_dangerous_object)
|
|
||||||
var/turf/old_turf = get_turf(oldloc)
|
|
||||||
var/turf/new_turf = get_turf(src)
|
|
||||||
|
|
||||||
if(old_turf != new_turf)
|
|
||||||
old_turf.unregister_dangerous_object(src)
|
|
||||||
new_turf.register_dangerous_object(src)
|
|
||||||
|
|
||||||
/obj/Topic(href, href_list, var/datum/tgui_state/state = GLOB.tgui_default_state)
|
/obj/Topic(href, href_list, var/datum/tgui_state/state = GLOB.tgui_default_state)
|
||||||
if(usr && ..())
|
if(usr && ..())
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
// creates a new object and deletes itself
|
// creates a new object and deletes itself
|
||||||
/obj/random/Initialize()
|
/obj/random/Initialize()
|
||||||
. = ..()
|
..()
|
||||||
if (!prob(spawn_nothing_percentage))
|
if (!prob(spawn_nothing_percentage))
|
||||||
spawn_item()
|
spawn_item()
|
||||||
return INITIALIZE_HINT_QDEL
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ two tiles on initialization, and which way a cliff is facing may change during m
|
|||||||
climbable = TRUE
|
climbable = TRUE
|
||||||
climb_delay = 10 SECONDS
|
climb_delay = 10 SECONDS
|
||||||
block_turf_edges = TRUE // Don't want turf edges popping up from the cliff edge.
|
block_turf_edges = TRUE // Don't want turf edges popping up from the cliff edge.
|
||||||
register_as_dangerous_object = TRUE
|
|
||||||
|
|
||||||
var/icon_variant = null // Used to make cliffs less repeative by having a selection of sprites to display.
|
var/icon_variant = null // Used to make cliffs less repeative by having a selection of sprites to display.
|
||||||
var/corner = FALSE // Used for icon things.
|
var/corner = FALSE // Used for icon things.
|
||||||
@@ -44,6 +43,23 @@ two tiles on initialization, and which way a cliff is facing may change during m
|
|||||||
var/is_double_cliff = FALSE // Set to true when making the two-tile cliffs, used for projectile checks.
|
var/is_double_cliff = FALSE // Set to true when making the two-tile cliffs, used for projectile checks.
|
||||||
var/uphill_penalty = 30 // Odds of a projectile not making it up the cliff.
|
var/uphill_penalty = 30 // Odds of a projectile not making it up the cliff.
|
||||||
|
|
||||||
|
/obj/structure/cliff/Initialize()
|
||||||
|
. = ..()
|
||||||
|
register_dangerous_to_step()
|
||||||
|
|
||||||
|
/obj/structure/cliff/Destroy()
|
||||||
|
unregister_dangerous_to_step()
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
/obj/structure/cliff/Moved(atom/oldloc)
|
||||||
|
. = ..()
|
||||||
|
if(.)
|
||||||
|
var/turf/old_turf = get_turf(oldloc)
|
||||||
|
var/turf/new_turf = get_turf(src)
|
||||||
|
if(old_turf != new_turf)
|
||||||
|
old_turf.unregister_dangerous_object(src)
|
||||||
|
new_turf.register_dangerous_object(src)
|
||||||
|
|
||||||
// These arrange their sprites at runtime, as opposed to being statically placed in the map file.
|
// These arrange their sprites at runtime, as opposed to being statically placed in the map file.
|
||||||
/obj/structure/cliff/automatic
|
/obj/structure/cliff/automatic
|
||||||
icon_state = "cliffbuilder"
|
icon_state = "cliffbuilder"
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
|
|
||||||
/obj/structure/closet/Initialize()
|
/obj/structure/closet/Initialize()
|
||||||
..()
|
..()
|
||||||
// Closets need to come later because of spawners potentially creating objects during init.
|
|
||||||
return INITIALIZE_HINT_LATELOAD
|
return INITIALIZE_HINT_LATELOAD
|
||||||
|
|
||||||
/obj/structure/closet/LateInitialize()
|
/obj/structure/closet/LateInitialize()
|
||||||
|
|||||||
25
code/game/objects/structures/dancepole_vr.dm
Normal file
25
code/game/objects/structures/dancepole_vr.dm
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
//Dance pole
|
||||||
|
/obj/structure/dancepole
|
||||||
|
name = "dance pole"
|
||||||
|
desc = "Engineered for your entertainment"
|
||||||
|
icon = 'icons/obj/objects_vr.dmi'
|
||||||
|
icon_state = "dancepole"
|
||||||
|
density = 0
|
||||||
|
anchored = 1
|
||||||
|
|
||||||
|
/obj/structure/dancepole/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||||
|
if(O.is_screwdriver())
|
||||||
|
anchored = !anchored
|
||||||
|
playsound(src, O.usesound, 50, 1)
|
||||||
|
if(anchored)
|
||||||
|
to_chat(user, "<font color='blue'>You secure \the [src].</font>")
|
||||||
|
else
|
||||||
|
to_chat(user, "<font color='blue'>You unsecure \the [src].</font>")
|
||||||
|
if(O.is_wrench())
|
||||||
|
playsound(src, O.usesound, 50, 1)
|
||||||
|
to_chat(user, "<span class='notice'>Now disassembling \the [src]...</span>")
|
||||||
|
if(do_after(user, 30 * O.toolspeed))
|
||||||
|
if(!src) return
|
||||||
|
to_chat(user, "<span class='notice'>You dissasembled \the [src]!</span>")
|
||||||
|
new /obj/item/stack/material/steel(src.loc, 1)
|
||||||
|
qdel(src)
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
var/smashed = 0
|
var/smashed = 0
|
||||||
|
|
||||||
/obj/structure/fireaxecabinet/Initialize()
|
/obj/structure/fireaxecabinet/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
fireaxe = new /obj/item/weapon/material/twohanded/fireaxe()
|
fireaxe = new /obj/item/weapon/material/twohanded/fireaxe()
|
||||||
|
|
||||||
/obj/structure/fireaxecabinet/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
|
/obj/structure/fireaxecabinet/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
var/list/harvest_loot = null // Should be an associative list for things to spawn, and their weights. An example would be a branch from a tree.
|
var/list/harvest_loot = null // Should be an associative list for things to spawn, and their weights. An example would be a branch from a tree.
|
||||||
|
|
||||||
/obj/structure/flora/Initialize()
|
/obj/structure/flora/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
|
|
||||||
if(randomize_size)
|
if(randomize_size)
|
||||||
icon_scale_x = rand(min_x_scale * 100, max_x_scale * 100) / 100
|
icon_scale_x = rand(min_x_scale * 100, max_x_scale * 100) / 100
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
icon_state = icon_state_opened
|
icon_state = icon_state_opened
|
||||||
if(needscharger)
|
if(needscharger)
|
||||||
new /obj/machinery/recharge_station/ghost_pod_recharger(src.loc)
|
new /obj/machinery/recharge_station/ghost_pod_recharger(src.loc)
|
||||||
del(src)
|
qdel(src)
|
||||||
return TRUE
|
return TRUE
|
||||||
else
|
else
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
var/list/clothing_possibilities
|
var/list/clothing_possibilities
|
||||||
|
|
||||||
/obj/structure/ghost_pod/ghost_activated/human/Initialize()
|
/obj/structure/ghost_pod/ghost_activated/human/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
|
|
||||||
handle_clothing_setup()
|
handle_clothing_setup()
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
var/list/clothing_possibilities
|
var/list/clothing_possibilities
|
||||||
|
|
||||||
/obj/structure/ghost_pod/manual/human/Initialize()
|
/obj/structure/ghost_pod/manual/human/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
|
|
||||||
handle_clothing_setup()
|
handle_clothing_setup()
|
||||||
|
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/ghost_pod/ghost_activated/swarm_drone/event/Initialize()
|
/obj/structure/ghost_pod/ghost_activated/swarm_drone/event/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
|
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
say_dead_object("A <span class='notice'>[drone_class] swarm drone</span> shell is now available in \the [T.loc].", src)
|
say_dead_object("A <span class='notice'>[drone_class] swarm drone</span> shell is now available in \the [T.loc].", src)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
var/total_creature_max //If set, it can spawn this many creatures, total, ever.
|
var/total_creature_max //If set, it can spawn this many creatures, total, ever.
|
||||||
|
|
||||||
/obj/structure/prop/nest/Initialize()
|
/obj/structure/prop/nest/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
den_mobs = list()
|
den_mobs = list()
|
||||||
START_PROCESSING(SSobj, src)
|
START_PROCESSING(SSobj, src)
|
||||||
last_spawn = world.time
|
last_spawn = world.time
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/structure/cult/pylon/swarm/Initialize()
|
/obj/structure/cult/pylon/swarm/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
active_beams = list()
|
active_beams = list()
|
||||||
|
|
||||||
/obj/structure/cult/pylon/swarm/Destroy()
|
/obj/structure/cult/pylon/swarm/Destroy()
|
||||||
|
|||||||
@@ -27,11 +27,10 @@
|
|||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
/obj/effect/wingrille_spawn/Initialize()
|
/obj/effect/wingrille_spawn/Initialize()
|
||||||
. = ..()
|
if(win_path && ticker && ticker.current_state < GAME_STATE_PLAYING)
|
||||||
if(!win_path)
|
|
||||||
return
|
|
||||||
if(ticker && ticker.current_state < GAME_STATE_PLAYING)
|
|
||||||
activate()
|
activate()
|
||||||
|
..()
|
||||||
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|
||||||
/obj/effect/wingrille_spawn/proc/activate()
|
/obj/effect/wingrille_spawn/proc/activate()
|
||||||
if(activated) return
|
if(activated) return
|
||||||
@@ -58,6 +57,7 @@
|
|||||||
activated = 1
|
activated = 1
|
||||||
for(var/obj/effect/wingrille_spawn/other in neighbours)
|
for(var/obj/effect/wingrille_spawn/other in neighbours)
|
||||||
if(!other.activated) other.activate()
|
if(!other.activated) other.activate()
|
||||||
|
if(initialized && !QDELETED(src))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/effect/wingrille_spawn/proc/handle_window_spawn(var/obj/structure/window/W)
|
/obj/effect/wingrille_spawn/proc/handle_window_spawn(var/obj/structure/window/W)
|
||||||
|
|||||||
@@ -4,6 +4,9 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/turf/turf_source = get_turf(source)
|
var/turf/turf_source = get_turf(source)
|
||||||
|
if(!turf_source)
|
||||||
|
return
|
||||||
|
var/area/area_source = turf_source.loc
|
||||||
|
|
||||||
//allocate a channel if necessary now so its the same for everyone
|
//allocate a channel if necessary now so its the same for everyone
|
||||||
channel = channel || open_sound_channel()
|
channel = channel || open_sound_channel()
|
||||||
@@ -19,6 +22,11 @@
|
|||||||
if(!M || !M.client)
|
if(!M || !M.client)
|
||||||
continue
|
continue
|
||||||
var/turf/T = get_turf(M)
|
var/turf/T = get_turf(M)
|
||||||
|
if(!T)
|
||||||
|
continue
|
||||||
|
var/area/A = T.loc
|
||||||
|
if((A.soundproofed || area_source.soundproofed) && (A != area_source))
|
||||||
|
continue
|
||||||
var/distance = get_dist(T, turf_source)
|
var/distance = get_dist(T, turf_source)
|
||||||
|
|
||||||
if(distance <= maxdistance)
|
if(distance <= maxdistance)
|
||||||
|
|||||||
@@ -12,9 +12,13 @@ var/list/floor_decals = list()
|
|||||||
|
|
||||||
/obj/effect/floor_decal/New(var/newloc, var/newdir, var/newcolour)
|
/obj/effect/floor_decal/New(var/newloc, var/newdir, var/newcolour)
|
||||||
supplied_dir = newdir
|
supplied_dir = newdir
|
||||||
if(newcolour) color = newcolour
|
if(newcolour)
|
||||||
|
color = newcolour
|
||||||
..(newloc)
|
..(newloc)
|
||||||
|
|
||||||
|
// TODO: identify what is causing these atoms to be qdeleted in New()/Initialize()
|
||||||
|
// somewhere in this chain. Alternatively repath to /obj/floor_decal or some other
|
||||||
|
// abstract handler that explicitly doesn't invoke any obj behavior.
|
||||||
/obj/effect/floor_decal/Initialize()
|
/obj/effect/floor_decal/Initialize()
|
||||||
add_to_turf_decals()
|
add_to_turf_decals()
|
||||||
initialized = TRUE
|
initialized = TRUE
|
||||||
@@ -42,11 +46,11 @@ var/list/floor_decals = list()
|
|||||||
name = "reset marker"
|
name = "reset marker"
|
||||||
|
|
||||||
/obj/effect/floor_decal/reset/Initialize()
|
/obj/effect/floor_decal/reset/Initialize()
|
||||||
|
..()
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(T.decals && T.decals.len)
|
if(T.decals && T.decals.len)
|
||||||
T.decals.Cut()
|
T.decals.Cut()
|
||||||
T.update_icon()
|
T.update_icon()
|
||||||
initialized = TRUE
|
|
||||||
return INITIALIZE_HINT_QDEL
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|
||||||
/obj/effect/floor_decal/corner
|
/obj/effect/floor_decal/corner
|
||||||
|
|||||||
@@ -317,7 +317,6 @@
|
|||||||
name = "tiles"
|
name = "tiles"
|
||||||
icon_state = "freezer"
|
icon_state = "freezer"
|
||||||
initial_flooring = /decl/flooring/tiling/freezer
|
initial_flooring = /decl/flooring/tiling/freezer
|
||||||
temperature = T0C - 5 // VOREStation Edit: Chillier Freezer Tiles on-start
|
|
||||||
|
|
||||||
/turf/simulated/floor/lino
|
/turf/simulated/floor/lino
|
||||||
name = "lino"
|
name = "lino"
|
||||||
|
|||||||
@@ -24,3 +24,6 @@
|
|||||||
/decl/flooring/grass/outdoors/forest
|
/decl/flooring/grass/outdoors/forest
|
||||||
icon = 'icons/turf/outdoors.dmi'
|
icon = 'icons/turf/outdoors.dmi'
|
||||||
icon_base = "grass-dark"
|
icon_base = "grass-dark"
|
||||||
|
|
||||||
|
/turf/simulated/floor/tiled/freezer/cold
|
||||||
|
temperature = T0C - 5
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
var/static/list/antilight_cache
|
var/static/list/antilight_cache
|
||||||
|
|
||||||
/turf/simulated/shuttle/Initialize(mapload)
|
/turf/simulated/shuttle/Initialize(mapload)
|
||||||
..()
|
. = ..()
|
||||||
if(!antilight_cache)
|
if(!antilight_cache)
|
||||||
antilight_cache = list()
|
antilight_cache = list()
|
||||||
for(var/diag in cornerdirs)
|
for(var/diag in cornerdirs)
|
||||||
|
|||||||
@@ -1014,10 +1014,3 @@
|
|||||||
oxygen = 0
|
oxygen = 0
|
||||||
nitrogen = 0
|
nitrogen = 0
|
||||||
temperature = TCMB
|
temperature = TCMB
|
||||||
|
|
||||||
/*
|
|
||||||
/turf/simulated/floor/hull/New()
|
|
||||||
if(icon_state != "hullcenter0")
|
|
||||||
overrided_icon_state = icon_state
|
|
||||||
..()
|
|
||||||
*/
|
|
||||||
@@ -31,7 +31,8 @@
|
|||||||
to_chat(user, "<span class='notice'>You begin to remove \the [src] with your [W].</span>")
|
to_chat(user, "<span class='notice'>You begin to remove \the [src] with your [W].</span>")
|
||||||
if(do_after(user, 4 SECONDS * W.toolspeed))
|
if(do_after(user, 4 SECONDS * W.toolspeed))
|
||||||
to_chat(user, "<span class='notice'>\The [src] has been dug up, and now lies in a pile nearby.</span>")
|
to_chat(user, "<span class='notice'>\The [src] has been dug up, and now lies in a pile nearby.</span>")
|
||||||
new /obj/item/stack/material/snow(src)
|
var/obj/item/stack/material/snow/S = new(src)
|
||||||
|
S.amount = 10
|
||||||
demote()
|
demote()
|
||||||
else
|
else
|
||||||
to_chat(user, "<span class='notice'>You decide to not finish removing \the [src].</span>")
|
to_chat(user, "<span class='notice'>You decide to not finish removing \the [src].</span>")
|
||||||
|
|||||||
@@ -11,9 +11,3 @@
|
|||||||
|
|
||||||
/turf/space/cracked_asteroid/is_space() // So people don't start floating when standing on it.
|
/turf/space/cracked_asteroid/is_space() // So people don't start floating when standing on it.
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
// u wot m8? ~Leshana
|
|
||||||
// /turf/space/cracked_asteroid/New()
|
|
||||||
// ..()
|
|
||||||
// spawn(2 SECONDS)
|
|
||||||
// overlays.Cut()
|
|
||||||
|
|||||||
@@ -2,7 +2,13 @@
|
|||||||
name = "command"
|
name = "command"
|
||||||
oxygen = MOLES_O2STANDARD
|
oxygen = MOLES_O2STANDARD
|
||||||
nitrogen = MOLES_N2STANDARD
|
nitrogen = MOLES_N2STANDARD
|
||||||
initialized = TRUE // Don't call init on unsimulated turfs (at least not yet)
|
var/skip_init = TRUE // Don't call down the chain, apparently for performance when loading maps at runtime.
|
||||||
|
|
||||||
|
/turf/unsimulated/Initialize(mapload)
|
||||||
|
if(skip_init)
|
||||||
|
initialized = TRUE
|
||||||
|
return INITIALIZE_HINT_NORMAL
|
||||||
|
. = ..()
|
||||||
|
|
||||||
//VOREStation Add
|
//VOREStation Add
|
||||||
/turf/unsimulated/fake_space
|
/turf/unsimulated/fake_space
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
/turf/unsimulated/beach/water
|
/turf/unsimulated/beach/water
|
||||||
name = "Water"
|
name = "Water"
|
||||||
icon_state = "water"
|
icon_state = "water"
|
||||||
initialized = FALSE
|
skip_init = FALSE
|
||||||
movement_cost = 4 // Water should slow you down, just like simulated turf.
|
movement_cost = 4 // Water should slow you down, just like simulated turf.
|
||||||
|
|
||||||
/turf/unsimulated/beach/water/Initialize()
|
/turf/unsimulated/beach/water/Initialize()
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
density = 1
|
density = 1
|
||||||
alpha = 0
|
alpha = 0
|
||||||
blocks_air = 0
|
blocks_air = 0
|
||||||
initialized = FALSE
|
|
||||||
|
|
||||||
// Set these to get your desired planetary atmosphere.
|
// Set these to get your desired planetary atmosphere.
|
||||||
oxygen = 0
|
oxygen = 0
|
||||||
@@ -17,6 +16,7 @@
|
|||||||
carbon_dioxide = 0
|
carbon_dioxide = 0
|
||||||
phoron = 0
|
phoron = 0
|
||||||
temperature = T20C
|
temperature = T20C
|
||||||
|
skip_init = FALSE
|
||||||
|
|
||||||
/turf/unsimulated/wall/planetary/Initialize()
|
/turf/unsimulated/wall/planetary/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|||||||
@@ -86,6 +86,7 @@
|
|||||||
entry += " - <span class='blue'>In Lobby</span><br>"
|
entry += " - <span class='blue'>In Lobby</span><br>"
|
||||||
else
|
else
|
||||||
entry += " - <span class='green'>Playing</span><br>"
|
entry += " - <span class='green'>Playing</span><br>"
|
||||||
|
|
||||||
Lines += entry
|
Lines += entry
|
||||||
|
|
||||||
msg += "<table>"
|
msg += "<table>"
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
|||||||
var/list/data = ..()
|
var/list/data = ..()
|
||||||
|
|
||||||
data["personalVisibility"] = user?.client?.prefs?.show_in_directory
|
data["personalVisibility"] = user?.client?.prefs?.show_in_directory
|
||||||
data["personalTag"] = user?.client?.prefs?.directory_tag
|
data["personalTag"] = user?.client?.prefs?.directory_tag || "Unset"
|
||||||
|
data["personalErpTag"] = user?.client?.prefs?.directory_erptag || "Unset"
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@@ -49,7 +50,8 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
|||||||
var/name = null
|
var/name = null
|
||||||
var/ooc_notes = null
|
var/ooc_notes = null
|
||||||
var/flavor_text = null
|
var/flavor_text = null
|
||||||
var/tag = C.prefs.directory_tag
|
var/tag = C.prefs.directory_tag || "Unset"
|
||||||
|
var/erptag = C.prefs.directory_erptag || "Unset"
|
||||||
var/character_ad = C.prefs.directory_ad
|
var/character_ad = C.prefs.directory_ad
|
||||||
|
|
||||||
if(ishuman(C.mob))
|
if(ishuman(C.mob))
|
||||||
@@ -85,6 +87,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
|||||||
"name" = name,
|
"name" = name,
|
||||||
"ooc_notes" = ooc_notes,
|
"ooc_notes" = ooc_notes,
|
||||||
"tag" = tag,
|
"tag" = tag,
|
||||||
|
"erptag" = erptag,
|
||||||
"character_ad" = character_ad,
|
"character_ad" = character_ad,
|
||||||
"flavor_text" = flavor_text,
|
"flavor_text" = flavor_text,
|
||||||
)))
|
)))
|
||||||
@@ -109,11 +112,17 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
|||||||
update_tgui_static_data(usr, ui)
|
update_tgui_static_data(usr, ui)
|
||||||
return TRUE
|
return TRUE
|
||||||
if("setTag")
|
if("setTag")
|
||||||
var/list/new_tag = input(usr, "Pick a new tag for the character directory", "Character Tag", usr?.client?.prefs?.directory_tag) as null|anything in GLOB.char_directory_tags
|
var/list/new_tag = input(usr, "Pick a new Vore tag for the character directory", "Character Tag", usr?.client?.prefs?.directory_tag) as null|anything in GLOB.char_directory_tags
|
||||||
if(!new_tag)
|
if(!new_tag)
|
||||||
return
|
return
|
||||||
usr?.client?.prefs?.directory_tag = new_tag
|
usr?.client?.prefs?.directory_tag = new_tag
|
||||||
return TRUE
|
return TRUE
|
||||||
|
if("setErpTag")
|
||||||
|
var/list/new_erptag = input(usr, "Pick a new ERP tag for the character directory", "Character ERP Tag", usr?.client?.prefs?.directory_erptag) as null|anything in GLOB.char_directory_erptags
|
||||||
|
if(!new_erptag)
|
||||||
|
return
|
||||||
|
usr?.client?.prefs?.directory_erptag = new_erptag
|
||||||
|
return TRUE
|
||||||
if("setVisible")
|
if("setVisible")
|
||||||
usr?.client?.prefs?.show_in_directory = !usr?.client?.prefs?.show_in_directory
|
usr?.client?.prefs?.show_in_directory = !usr?.client?.prefs?.show_in_directory
|
||||||
to_chat(usr, "<span class='notice'>You are now [usr.client.prefs.show_in_directory ? "shown" : "not shown"] in the directory.</span>")
|
to_chat(usr, "<span class='notice'>You are now [usr.client.prefs.show_in_directory ? "shown" : "not shown"] in the directory.</span>")
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/client/verb/who()
|
/client/verb/who()
|
||||||
set name = "Who"
|
set name = "Who"
|
||||||
set category = "OOC"
|
set category = "OOC"
|
||||||
@@ -206,3 +205,4 @@
|
|||||||
msg += "\n<span class='info'>Adminhelps are also sent to Discord. If no admins are available in game try anyway and an admin on Discord may see it and respond.</span>"
|
msg += "\n<span class='info'>Adminhelps are also sent to Discord. If no admins are available in game try anyway and an admin on Discord may see it and respond.</span>"
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name = "Form - Inventory Requisition r10.7.1E"
|
name = "Form - Inventory Requisition r10.7.1E"
|
||||||
|
|
||||||
/obj/item/weapon/paper/carbon/cursedform/Initialize()
|
/obj/item/weapon/paper/carbon/cursedform/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
info = {"<font face="Comic Sans MS" color=#DA0000><b><center></center><BR><center><I><B>Form - Inventory Requisition r10.7.1E</I></B></center><BR><center><font size="4">General Request Form</font></center><BR><BR><center><B>General</B></center><BR><BR>Name: <span class="paper_field"></span><BR>Department: <span class="paper_field"></span><BR>Departmental Rank: <span class="paper_field"></span><BR>Organization(If not Nanotrasen): <span class="paper_field"></span><BR>Date: <span class="paper_field"></span><BR><BR><BR><BR>Requested Item(s): <span class="paper_field"></span><BR>Quantity: <span class="paper_field"></span><BR>Reason for request: <span class="paper_field"></span><BR>Is this replacement equipment?: <span class="paper_field"></span><BR>If `Yes`; above, specify equiment and reason for replacement: <span class="paper_field"></span><BR><BR><BR><center><B>Authorization</B></center><BR><BR>Authorizing Department: <span class="paper_field"></span><BR>Authorizing Dept. Head: <span class="paper_field"></span><BR><BR><BR><center><B>Contact and Delivery</B></center><BR><BR>EPv2 Address of requesting party(Do not leave blank): <span class="paper_field"></span><BR>Delivery location or department: <span class="paper_field"></span><BR><BR><BR>Nanotrasen Employee Identification Number: <span class="paper_field"></span><BR><U>Signature of Requester and Date</U><BR><BR><span class="paper_field"></span><BR><BR><BR><BR>Authorizor`s Nanotrasen Employee Identification Number: <span class="paper_field"></span><BR><U>Authorizing Signature and Date(Include authorizing department`s stamp below)</U><BR><BR><span class="paper_field"></span><BR><BR><BR><center><B>Shipping Department Only</B></center><BR><center><I>(Do not write below this line)</I></center><BR>Nanotrasen Purchasing Approval Code: <span class="paper_field"></span><BR>Nanotrasen Employee Identification Number: <span class="paper_field"></span><BR>Receiving Shipping Employee: <span class="paper_field"></span><BR><U>Signature and Date</U><BR><BR><span class="paper_field"></span><BR></b></font>"}
|
info = {"<font face="Comic Sans MS" color=#DA0000><b><center></center><BR><center><I><B>Form - Inventory Requisition r10.7.1E</I></B></center><BR><center><font size="4">General Request Form</font></center><BR><BR><center><B>General</B></center><BR><BR>Name: <span class="paper_field"></span><BR>Department: <span class="paper_field"></span><BR>Departmental Rank: <span class="paper_field"></span><BR>Organization(If not Nanotrasen): <span class="paper_field"></span><BR>Date: <span class="paper_field"></span><BR><BR><BR><BR>Requested Item(s): <span class="paper_field"></span><BR>Quantity: <span class="paper_field"></span><BR>Reason for request: <span class="paper_field"></span><BR>Is this replacement equipment?: <span class="paper_field"></span><BR>If `Yes`; above, specify equiment and reason for replacement: <span class="paper_field"></span><BR><BR><BR><center><B>Authorization</B></center><BR><BR>Authorizing Department: <span class="paper_field"></span><BR>Authorizing Dept. Head: <span class="paper_field"></span><BR><BR><BR><center><B>Contact and Delivery</B></center><BR><BR>EPv2 Address of requesting party(Do not leave blank): <span class="paper_field"></span><BR>Delivery location or department: <span class="paper_field"></span><BR><BR><BR>Nanotrasen Employee Identification Number: <span class="paper_field"></span><BR><U>Signature of Requester and Date</U><BR><BR><span class="paper_field"></span><BR><BR><BR><BR>Authorizor`s Nanotrasen Employee Identification Number: <span class="paper_field"></span><BR><U>Authorizing Signature and Date(Include authorizing department`s stamp below)</U><BR><BR><span class="paper_field"></span><BR><BR><BR><center><B>Shipping Department Only</B></center><BR><center><I>(Do not write below this line)</I></center><BR>Nanotrasen Purchasing Approval Code: <span class="paper_field"></span><BR>Nanotrasen Employee Identification Number: <span class="paper_field"></span><BR>Receiving Shipping Employee: <span class="paper_field"></span><BR><U>Signature and Date</U><BR><BR><span class="paper_field"></span><BR></b></font>"}
|
||||||
info_links = {"<font face="Comic Sans MS" color=#FF9300><b><center></center><BR><center><I><B>Form - Inventory Requisition r10.7.1E</I></B></center><BR><center><font size="4">General Request Form</font></center><BR><BR><center><B>General</B></center><BR><BR>Name: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=1'>write</A></font></span><BR>Department: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=2'>write</A></font></span><BR>Departmental Rank: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=3'>write</A></font></span><BR>Organization(If not Nanotrasen): <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=4'>write</A></font></span><BR>Date: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=5'>write</A></font></span><BR><BR><BR><BR>Requested Item(s): <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=6'>write</A></font></span><BR>Quantity: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=7'>write</A></font></span><BR>Reason for request: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=8'>write</A></font></span><BR>Is this replacement equipment?: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=9'>write</A></font></span><BR>If `Yes` above, specify equiment and reason for replacement: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=10'>write</A></font></span><BR><BR><BR><center><B>Authorization</B></center><BR><BR>Authorizing Department: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=11'>write</A></font></span><BR>Authorizing Dept. Head: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=12'>write</A></font></span><BR><BR><BR><center><B>Contact and Delivery</B></center><BR><BR>EPv2 Address of requesting party(Do not leave blank): <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=13'>write</A></font></span><BR>Delivery location or department: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=14'>write</A></font></span><BR><BR><BR>Nanotrasen Employee Identification Number: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=15'>write</A></font></span><BR><U>Signature of Requester and Date</U><BR><BR><span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=16'>write</A></font></span><BR><BR><BR><BR>Authorizor`s Nanotrasen Employee Identification Number: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=17'>write</A></font></span><BR><U>Authorizing Signature and Date(Include authorizing department`s stamp below)</U><BR><BR><span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=18'>write</A></font></span><BR><BR><BR><center><B>Shipping Department Only</B></center><BR><center><I>(Do not write below this line)</I></center><BR>Nanotrasen Purchasing Approval Code: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=19'>write</A></font></span><BR>Nanotrasen Employee Identification Number: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=20'>write</A></font></span><BR>Receiving Shipping Employee: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=21'>write</A></font></span><BR><U>Signature and Date</U><BR><BR><span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=22'>write</A></font></span><BR></b></font><font face="Verdana"><A href='?src=[0x2057e0c];write=end'>write</A></font>"}
|
info_links = {"<font face="Comic Sans MS" color=#FF9300><b><center></center><BR><center><I><B>Form - Inventory Requisition r10.7.1E</I></B></center><BR><center><font size="4">General Request Form</font></center><BR><BR><center><B>General</B></center><BR><BR>Name: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=1'>write</A></font></span><BR>Department: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=2'>write</A></font></span><BR>Departmental Rank: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=3'>write</A></font></span><BR>Organization(If not Nanotrasen): <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=4'>write</A></font></span><BR>Date: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=5'>write</A></font></span><BR><BR><BR><BR>Requested Item(s): <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=6'>write</A></font></span><BR>Quantity: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=7'>write</A></font></span><BR>Reason for request: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=8'>write</A></font></span><BR>Is this replacement equipment?: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=9'>write</A></font></span><BR>If `Yes` above, specify equiment and reason for replacement: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=10'>write</A></font></span><BR><BR><BR><center><B>Authorization</B></center><BR><BR>Authorizing Department: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=11'>write</A></font></span><BR>Authorizing Dept. Head: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=12'>write</A></font></span><BR><BR><BR><center><B>Contact and Delivery</B></center><BR><BR>EPv2 Address of requesting party(Do not leave blank): <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=13'>write</A></font></span><BR>Delivery location or department: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=14'>write</A></font></span><BR><BR><BR>Nanotrasen Employee Identification Number: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=15'>write</A></font></span><BR><U>Signature of Requester and Date</U><BR><BR><span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=16'>write</A></font></span><BR><BR><BR><BR>Authorizor`s Nanotrasen Employee Identification Number: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=17'>write</A></font></span><BR><U>Authorizing Signature and Date(Include authorizing department`s stamp below)</U><BR><BR><span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=18'>write</A></font></span><BR><BR><BR><center><B>Shipping Department Only</B></center><BR><center><I>(Do not write below this line)</I></center><BR>Nanotrasen Purchasing Approval Code: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=19'>write</A></font></span><BR>Nanotrasen Employee Identification Number: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=20'>write</A></font></span><BR>Receiving Shipping Employee: <span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=21'>write</A></font></span><BR><U>Signature and Date</U><BR><BR><span class="paper_field"><font face="Verdana"><A href='?src=[0x2057e0c];write=22'>write</A></font></span><BR></b></font><font face="Verdana"><A href='?src=[0x2057e0c];write=end'>write</A></font>"}
|
||||||
|
|
||||||
|
|||||||
@@ -8,18 +8,14 @@
|
|||||||
/obj/effect/spawner/lootdrop/Initialize()
|
/obj/effect/spawner/lootdrop/Initialize()
|
||||||
..()
|
..()
|
||||||
var/list/things = params2list(loot)
|
var/list/things = params2list(loot)
|
||||||
|
|
||||||
if(things && things.len)
|
if(things && things.len)
|
||||||
for(var/i = lootcount, i > 0, i--)
|
for(var/i = lootcount, i > 0, i--)
|
||||||
if(!things.len)
|
if(!things.len)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/loot_spawn = pick(things)
|
var/loot_spawn = pick(things)
|
||||||
var/loot_path = text2path(loot_spawn)
|
var/loot_path = text2path(loot_spawn)
|
||||||
|
|
||||||
if(!loot_path || !lootdoubles)
|
if(!loot_path || !lootdoubles)
|
||||||
things.Remove(loot_spawn)
|
things.Remove(loot_spawn)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
new loot_path(get_turf(src))
|
new loot_path(get_turf(src))
|
||||||
return INITIALIZE_HINT_QDEL
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|||||||
@@ -45,7 +45,6 @@
|
|||||||
if( findtext(href,"<script",1,0) )
|
if( findtext(href,"<script",1,0) )
|
||||||
to_world_log("Attempted use of scripts within a topic call, by [src]")
|
to_world_log("Attempted use of scripts within a topic call, by [src]")
|
||||||
message_admins("Attempted use of scripts within a topic call, by [src]")
|
message_admins("Attempted use of scripts within a topic call, by [src]")
|
||||||
//del(usr)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
// Tgui Topic middleware
|
// Tgui Topic middleware
|
||||||
|
|||||||
@@ -23,7 +23,8 @@
|
|||||||
|
|
||||||
// Physical traits are what they sound like, and involve the character's physical body, as opposed to their mental state.
|
// Physical traits are what they sound like, and involve the character's physical body, as opposed to their mental state.
|
||||||
/datum/trait/modifier/physical
|
/datum/trait/modifier/physical
|
||||||
category = "Physical Quirks" //VOREStation Edit
|
name = "Physical"
|
||||||
|
category = "Physical"
|
||||||
|
|
||||||
|
|
||||||
/datum/trait/modifier/physical/flimsy
|
/datum/trait/modifier/physical/flimsy
|
||||||
@@ -194,6 +195,7 @@
|
|||||||
// 'Mental' traits are just those that only sapients can have, for now, and generally involves fears.
|
// 'Mental' traits are just those that only sapients can have, for now, and generally involves fears.
|
||||||
// So far, all of them are just for fluff/don't have mechanical effects.
|
// So far, all of them are just for fluff/don't have mechanical effects.
|
||||||
/datum/trait/modifier/mental
|
/datum/trait/modifier/mental
|
||||||
|
name = "Mental"
|
||||||
category = "Mental"
|
category = "Mental"
|
||||||
|
|
||||||
/datum/trait/modifier/mental/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup)
|
/datum/trait/modifier/mental/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup)
|
||||||
|
|||||||
@@ -45,7 +45,6 @@
|
|||||||
character.weight_gain = pref.weight_gain
|
character.weight_gain = pref.weight_gain
|
||||||
character.weight_loss = pref.weight_loss
|
character.weight_loss = pref.weight_loss
|
||||||
character.fuzzy = pref.fuzzy
|
character.fuzzy = pref.fuzzy
|
||||||
character.appearance_flags -= pref.fuzzy*PIXEL_SCALE
|
|
||||||
character.resize(pref.size_multiplier, animate = FALSE)
|
character.resize(pref.size_multiplier, animate = FALSE)
|
||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/size/content(var/mob/user)
|
/datum/category_item/player_setup_item/vore/size/content(var/mob/user)
|
||||||
@@ -70,7 +69,7 @@
|
|||||||
|
|
||||||
else if(href_list["toggle_fuzzy"])
|
else if(href_list["toggle_fuzzy"])
|
||||||
pref.fuzzy = pref.fuzzy ? 0 : 1;
|
pref.fuzzy = pref.fuzzy ? 0 : 1;
|
||||||
return TOPIC_REFRESH
|
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||||
|
|
||||||
else if(href_list["weight"])
|
else if(href_list["weight"])
|
||||||
var/new_weight = input(user, "Choose your character's relative body weight.\n\
|
var/new_weight = input(user, "Choose your character's relative body weight.\n\
|
||||||
|
|||||||
@@ -2,11 +2,19 @@
|
|||||||
#define NEUTRAL_MODE 2
|
#define NEUTRAL_MODE 2
|
||||||
#define NEGATIVE_MODE 3
|
#define NEGATIVE_MODE 3
|
||||||
|
|
||||||
|
#define ORGANICS 1
|
||||||
|
#define SYNTHETICS 2
|
||||||
|
|
||||||
/datum/preferences
|
/datum/preferences
|
||||||
var/custom_species // Custom species name, can't be changed due to it having been used in savefiles already.
|
var/custom_species // Custom species name, can't be changed due to it having been used in savefiles already.
|
||||||
var/custom_base // What to base the custom species on
|
var/custom_base // What to base the custom species on
|
||||||
var/blood_color = "#A10808"
|
var/blood_color = "#A10808"
|
||||||
|
|
||||||
|
var/custom_say = null
|
||||||
|
var/custom_whisper = null
|
||||||
|
var/custom_ask = null
|
||||||
|
var/custom_exclaim = null
|
||||||
|
|
||||||
var/list/pos_traits = list() // What traits they've selected for their custom species
|
var/list/pos_traits = list() // What traits they've selected for their custom species
|
||||||
var/list/neu_traits = list()
|
var/list/neu_traits = list()
|
||||||
var/list/neg_traits = list()
|
var/list/neg_traits = list()
|
||||||
@@ -15,6 +23,7 @@
|
|||||||
var/starting_trait_points = STARTING_SPECIES_POINTS
|
var/starting_trait_points = STARTING_SPECIES_POINTS
|
||||||
var/max_traits = MAX_SPECIES_TRAITS
|
var/max_traits = MAX_SPECIES_TRAITS
|
||||||
var/dirty_synth = 0 //Are you a synth
|
var/dirty_synth = 0 //Are you a synth
|
||||||
|
var/gross_meatbag = 0 //Where'd I leave my Voight-Kampff test kit?
|
||||||
|
|
||||||
// Definition of the stuff for Ears
|
// Definition of the stuff for Ears
|
||||||
/datum/category_item/player_setup_item/vore/traits
|
/datum/category_item/player_setup_item/vore/traits
|
||||||
@@ -29,10 +38,15 @@
|
|||||||
S["neg_traits"] >> pref.neg_traits
|
S["neg_traits"] >> pref.neg_traits
|
||||||
S["blood_color"] >> pref.blood_color
|
S["blood_color"] >> pref.blood_color
|
||||||
|
|
||||||
S["traits_cheating"]>> pref.traits_cheating
|
S["traits_cheating"] >> pref.traits_cheating
|
||||||
S["max_traits"] >> pref.max_traits
|
S["max_traits"] >> pref.max_traits
|
||||||
S["trait_points"] >> pref.starting_trait_points
|
S["trait_points"] >> pref.starting_trait_points
|
||||||
|
|
||||||
|
S["custom_say"] >> pref.custom_say
|
||||||
|
S["custom_whisper"] >> pref.custom_whisper
|
||||||
|
S["custom_ask"] >> pref.custom_ask
|
||||||
|
S["custom_exclaim"] >> pref.custom_exclaim
|
||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/traits/save_character(var/savefile/S)
|
/datum/category_item/player_setup_item/vore/traits/save_character(var/savefile/S)
|
||||||
S["custom_species"] << pref.custom_species
|
S["custom_species"] << pref.custom_species
|
||||||
S["custom_base"] << pref.custom_base
|
S["custom_base"] << pref.custom_base
|
||||||
@@ -41,10 +55,15 @@
|
|||||||
S["neg_traits"] << pref.neg_traits
|
S["neg_traits"] << pref.neg_traits
|
||||||
S["blood_color"] << pref.blood_color
|
S["blood_color"] << pref.blood_color
|
||||||
|
|
||||||
S["traits_cheating"]<< pref.traits_cheating
|
S["traits_cheating"] << pref.traits_cheating
|
||||||
S["max_traits"] << pref.max_traits
|
S["max_traits"] << pref.max_traits
|
||||||
S["trait_points"] << pref.starting_trait_points
|
S["trait_points"] << pref.starting_trait_points
|
||||||
|
|
||||||
|
S["custom_say"] << pref.custom_say
|
||||||
|
S["custom_whisper"] << pref.custom_whisper
|
||||||
|
S["custom_ask"] << pref.custom_ask
|
||||||
|
S["custom_exclaim"] << pref.custom_exclaim
|
||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/traits/sanitize_character()
|
/datum/category_item/player_setup_item/vore/traits/sanitize_character()
|
||||||
if(!pref.pos_traits) pref.pos_traits = list()
|
if(!pref.pos_traits) pref.pos_traits = list()
|
||||||
if(!pref.neu_traits) pref.neu_traits = list()
|
if(!pref.neu_traits) pref.neu_traits = list()
|
||||||
@@ -82,11 +101,17 @@
|
|||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/traits/copy_to_mob(var/mob/living/carbon/human/character)
|
/datum/category_item/player_setup_item/vore/traits/copy_to_mob(var/mob/living/carbon/human/character)
|
||||||
character.custom_species = pref.custom_species
|
character.custom_species = pref.custom_species
|
||||||
|
character.custom_say = pref.custom_say
|
||||||
|
character.custom_ask = pref.custom_ask
|
||||||
|
character.custom_whisper = pref.custom_whisper
|
||||||
|
character.custom_exclaim = pref.custom_exclaim
|
||||||
|
|
||||||
if(character.isSynthetic()) //Checking if we have a synth on our hands, boys.
|
if(character.isSynthetic()) //Checking if we have a synth on our hands, boys.
|
||||||
pref.dirty_synth = 1
|
pref.dirty_synth = 1
|
||||||
else //CHOMPEdit
|
pref.gross_meatbag = 0
|
||||||
pref.dirty_synth = 0 //CHOMPEdit
|
else
|
||||||
|
pref.gross_meatbag = 1
|
||||||
|
pref.dirty_synth = 0
|
||||||
|
|
||||||
var/datum/species/S = character.species
|
var/datum/species/S = character.species
|
||||||
var/SB
|
var/SB
|
||||||
@@ -153,6 +178,16 @@
|
|||||||
. += "<b>Blood Color: </b>" //People that want to use a certain species to have that species traits (xenochimera/promethean/spider) should be able to set their own blood color.
|
. += "<b>Blood Color: </b>" //People that want to use a certain species to have that species traits (xenochimera/promethean/spider) should be able to set their own blood color.
|
||||||
. += "<a href='?src=\ref[src];blood_color=1'>Set Color</a>"
|
. += "<a href='?src=\ref[src];blood_color=1'>Set Color</a>"
|
||||||
. += "<a href='?src=\ref[src];blood_reset=1'>R</a><br>"
|
. += "<a href='?src=\ref[src];blood_reset=1'>R</a><br>"
|
||||||
|
. += "<br>"
|
||||||
|
|
||||||
|
. += "<b>Custom Say: </b>"
|
||||||
|
. += "<a href='?src=\ref[src];custom_say=1'>Set Say Verb</a><br>"
|
||||||
|
. += "<b>Custom Whisper: </b>"
|
||||||
|
. += "<a href='?src=\ref[src];custom_whisper=1'>Set Whisper Verb</a><br>"
|
||||||
|
. += "<b>Custom Ask: </b>"
|
||||||
|
. += "<a href='?src=\ref[src];custom_ask=1'>Set Ask Verb</a><br>"
|
||||||
|
. += "<b>Custom Exclaim: </b>"
|
||||||
|
. += "<a href='?src=\ref[src];custom_exclaim=1'>Set Exclaim Verb</a><br>"
|
||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/traits/OnTopic(var/href,var/list/href_list, var/mob/user)
|
/datum/category_item/player_setup_item/vore/traits/OnTopic(var/href,var/list/href_list, var/mob/user)
|
||||||
if(!CanUseTopic(user))
|
if(!CanUseTopic(user))
|
||||||
@@ -216,6 +251,30 @@
|
|||||||
pref.neg_traits -= trait
|
pref.neg_traits -= trait
|
||||||
return TOPIC_REFRESH
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
|
else if(href_list["custom_say"])
|
||||||
|
var/say_choice = sanitize(input(usr, "This word or phrase will appear instead of 'says': [pref.real_name] says, \"Hi.\"", "Custom Say", pref.custom_say) as null|text, 12)
|
||||||
|
if(say_choice)
|
||||||
|
pref.custom_say = say_choice
|
||||||
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
|
else if(href_list["custom_whisper"])
|
||||||
|
var/whisper_choice = sanitize(input(usr, "This word or phrase will appear instead of 'whispers': [pref.real_name] whispers, \"Hi...\"", "Custom Whisper", pref.custom_whisper) as null|text, 12)
|
||||||
|
if(whisper_choice)
|
||||||
|
pref.custom_whisper = whisper_choice
|
||||||
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
|
else if(href_list["custom_ask"])
|
||||||
|
var/ask_choice = sanitize(input(usr, "This word or phrase will appear instead of 'asks': [pref.real_name] asks, \"Hi?\"", "Custom Ask", pref.custom_ask) as null|text, 12)
|
||||||
|
if(ask_choice)
|
||||||
|
pref.custom_ask = ask_choice
|
||||||
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
|
else if(href_list["custom_exclaim"])
|
||||||
|
var/exclaim_choice = sanitize(input(usr, "This word or phrase will appear instead of 'exclaims', 'shouts' or 'yells': [pref.real_name] exclaims, \"Hi!\"", "Custom Exclaim", pref.custom_exclaim) as null|text, 12)
|
||||||
|
if(exclaim_choice)
|
||||||
|
pref.custom_exclaim = exclaim_choice
|
||||||
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
else if(href_list["add_trait"])
|
else if(href_list["add_trait"])
|
||||||
var/mode = text2num(href_list["add_trait"])
|
var/mode = text2num(href_list["add_trait"])
|
||||||
var/list/picklist
|
var/list/picklist
|
||||||
@@ -276,13 +335,19 @@
|
|||||||
|
|
||||||
var/conflict = FALSE
|
var/conflict = FALSE
|
||||||
|
|
||||||
user.isSynthetic() //Recheck just to be sure
|
if(pref.dirty_synth && !(instance.can_take & SYNTHETICS))
|
||||||
if(pref.dirty_synth && instance.not_for_synths)//if you are a synth you can't take this trait.
|
alert("The trait you've selected can only be taken by organic characters!","Error")
|
||||||
alert("You cannot take this trait as a SYNTH.\
|
//pref.dirty_synth = 0 //Just to be sure //CHOMPEdit this shit broke, stop.
|
||||||
Please remove that trait, or pick another trait to add.","Error")
|
|
||||||
//pref.dirty_synth = 0 //Just to be sure // Commented out because it allow for someone to take a synth-blacklisted trait CHOMP Edit
|
|
||||||
return TOPIC_REFRESH
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
|
if(pref.gross_meatbag && !(instance.can_take & ORGANICS))
|
||||||
|
alert("The trait you've selected can only be taken by synthetic characters!","Error")
|
||||||
|
pref.gross_meatbag = 0 //Just to be sure
|
||||||
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
|
if(pref.species in instance.banned_species)
|
||||||
|
alert("The trait you've selected cannot be taken by the species you've chosen!","Error")
|
||||||
|
return TOPIC_REFRESH
|
||||||
|
|
||||||
if(trait_choice in pref.pos_traits + pref.neu_traits + pref.neg_traits)
|
if(trait_choice in pref.pos_traits + pref.neu_traits + pref.neg_traits)
|
||||||
conflict = instance.name
|
conflict = instance.name
|
||||||
|
|||||||
@@ -7,12 +7,14 @@
|
|||||||
/datum/category_item/player_setup_item/vore/misc/load_character(var/savefile/S)
|
/datum/category_item/player_setup_item/vore/misc/load_character(var/savefile/S)
|
||||||
S["show_in_directory"] >> pref.show_in_directory
|
S["show_in_directory"] >> pref.show_in_directory
|
||||||
S["directory_tag"] >> pref.directory_tag
|
S["directory_tag"] >> pref.directory_tag
|
||||||
|
S["directory_erptag"] >> pref.directory_erptag
|
||||||
S["directory_ad"] >> pref.directory_ad
|
S["directory_ad"] >> pref.directory_ad
|
||||||
S["sensorpref"] >> pref.sensorpref //TFF 5/8/19 - add sensor pref setting to load after saved
|
S["sensorpref"] >> pref.sensorpref //TFF 5/8/19 - add sensor pref setting to load after saved
|
||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S)
|
/datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S)
|
||||||
S["show_in_directory"] << pref.show_in_directory
|
S["show_in_directory"] << pref.show_in_directory
|
||||||
S["directory_tag"] << pref.directory_tag
|
S["directory_tag"] << pref.directory_tag
|
||||||
|
S["directory_erptag"] << pref.directory_erptag
|
||||||
S["directory_ad"] << pref.directory_ad
|
S["directory_ad"] << pref.directory_ad
|
||||||
S["sensorpref"] << pref.sensorpref //TFF 5/8/19 - add sensor pref setting to be saveable
|
S["sensorpref"] << pref.sensorpref //TFF 5/8/19 - add sensor pref setting to be saveable
|
||||||
|
|
||||||
@@ -25,12 +27,14 @@
|
|||||||
/datum/category_item/player_setup_item/vore/misc/sanitize_character()
|
/datum/category_item/player_setup_item/vore/misc/sanitize_character()
|
||||||
pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory))
|
pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory))
|
||||||
pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag))
|
pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag))
|
||||||
|
pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag))
|
||||||
pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) //TFF - 5/8/19 - add santisation for sensor prefs
|
pref.sensorpref = sanitize_integer(pref.sensorpref, 1, sensorpreflist.len, initial(pref.sensorpref)) //TFF - 5/8/19 - add santisation for sensor prefs
|
||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/misc/content(var/mob/user)
|
/datum/category_item/player_setup_item/vore/misc/content(var/mob/user)
|
||||||
. += "<br>"
|
. += "<br>"
|
||||||
. += "<b>Appear in Character Directory:</b> <a [pref.show_in_directory ? "class='linkOn'" : ""] href='?src=\ref[src];toggle_show_in_directory=1'><b>[pref.show_in_directory ? "Yes" : "No"]</b></a><br>"
|
. += "<b>Appear in Character Directory:</b> <a [pref.show_in_directory ? "class='linkOn'" : ""] href='?src=\ref[src];toggle_show_in_directory=1'><b>[pref.show_in_directory ? "Yes" : "No"]</b></a><br>"
|
||||||
. += "<b>Character Directory Tag:</b> <a href='?src=\ref[src];directory_tag=1'><b>[pref.directory_tag]</b></a><br>"
|
. += "<b>Character Directory Vore Tag:</b> <a href='?src=\ref[src];directory_tag=1'><b>[pref.directory_tag]</b></a><br>"
|
||||||
|
. += "<b>Character Directory ERP Tag:</b> <a href='?src=\ref[src];directory_erptag=1'><b>[pref.directory_erptag]</b></a><br>"
|
||||||
. += "<b>Character Directory Advertisement:</b> <a href='?src=\ref[src];directory_ad=1'><b>Set Directory Ad</b></a><br>"
|
. += "<b>Character Directory Advertisement:</b> <a href='?src=\ref[src];directory_ad=1'><b>Set Directory Ad</b></a><br>"
|
||||||
. += "<b>Suit Sensors Preference:</b> <a [pref.sensorpref ? "" : ""] href='?src=\ref[src];toggle_sensor_setting=1'><b>[sensorpreflist[pref.sensorpref]]</b></a><br>" //TFF 5/8/19 - Allow selection of sensor settings from off, binary, vitals, tracking, or random
|
. += "<b>Suit Sensors Preference:</b> <a [pref.sensorpref ? "" : ""] href='?src=\ref[src];toggle_sensor_setting=1'><b>[sensorpreflist[pref.sensorpref]]</b></a><br>" //TFF 5/8/19 - Allow selection of sensor settings from off, binary, vitals, tracking, or random
|
||||||
|
|
||||||
@@ -39,11 +43,17 @@
|
|||||||
pref.show_in_directory = pref.show_in_directory ? 0 : 1;
|
pref.show_in_directory = pref.show_in_directory ? 0 : 1;
|
||||||
return TOPIC_REFRESH
|
return TOPIC_REFRESH
|
||||||
else if(href_list["directory_tag"])
|
else if(href_list["directory_tag"])
|
||||||
var/new_tag = input(user, "Pick a new tag for the character directory", "Character Tag", pref.directory_tag) as null|anything in GLOB.char_directory_tags
|
var/new_tag = input(user, "Pick a new Vore tag for the character directory", "Character Vore Tag", pref.directory_tag) as null|anything in GLOB.char_directory_tags
|
||||||
if(!new_tag)
|
if(!new_tag)
|
||||||
return
|
return
|
||||||
pref.directory_tag = new_tag
|
pref.directory_tag = new_tag
|
||||||
return TOPIC_REFRESH
|
return TOPIC_REFRESH
|
||||||
|
else if(href_list["directory_erptag"])
|
||||||
|
var/new_erptag = input(user, "Pick a new ERP tag for the character directory", "Character ERP Tag", pref.directory_erptag) as null|anything in GLOB.char_directory_erptags
|
||||||
|
if(!new_erptag)
|
||||||
|
return
|
||||||
|
pref.directory_erptag = new_erptag
|
||||||
|
return TOPIC_REFRESH
|
||||||
else if(href_list["directory_ad"])
|
else if(href_list["directory_ad"])
|
||||||
var/msg = sanitize(input(user,"Write your advertisement here!", "Flavor Text", html_decode(pref.directory_ad)) as message, extra = 0) //VOREStation Edit: separating out OOC notes
|
var/msg = sanitize(input(user,"Write your advertisement here!", "Flavor Text", html_decode(pref.directory_ad)) as message, extra = 0) //VOREStation Edit: separating out OOC notes
|
||||||
pref.directory_ad = msg
|
pref.directory_ad = msg
|
||||||
|
|||||||
12
code/modules/client/verbs/ping.dm
Normal file
12
code/modules/client/verbs/ping.dm
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/client/proc/pingfromtime(time)
|
||||||
|
return ((world.time+world.tick_lag*world.tick_usage/100)-time)*100
|
||||||
|
|
||||||
|
/client/verb/display_ping(time as num)
|
||||||
|
set instant = TRUE
|
||||||
|
set name = ".display_ping"
|
||||||
|
to_chat(src, "<span class='notice'>Round trip ping took [round(pingfromtime(time),1)]ms</span>")
|
||||||
|
|
||||||
|
/client/verb/ping()
|
||||||
|
set name = "Ping"
|
||||||
|
set category = "OOC"
|
||||||
|
winset(src, null, "command=.display_ping+[world.time+world.tick_lag*world.tick_usage/100]")
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
return battery
|
return battery
|
||||||
|
|
||||||
/obj/item/clothing/gloves/ring/buzzer/Initialize()
|
/obj/item/clothing/gloves/ring/buzzer/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
if(!battery)
|
if(!battery)
|
||||||
battery = new battery_type(src)
|
battery = new battery_type(src)
|
||||||
|
|
||||||
|
|||||||
@@ -130,14 +130,40 @@
|
|||||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
|
||||||
siemens_coefficient = 0.5
|
siemens_coefficient = 0.5
|
||||||
icon = 'icons/obj/clothing/hats_vr.dmi'
|
icon = 'icons/obj/clothing/hats_vr.dmi'
|
||||||
|
enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED)
|
||||||
|
var/away_planes = null
|
||||||
|
plane_slots = list(slot_head)
|
||||||
|
var/hud_active = 1
|
||||||
|
var/activation_sound = 'sound/items/nif_click.ogg'
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/space/void/responseteam/verb/toggle()
|
||||||
|
set category = "Object"
|
||||||
|
set name = "Toggle Mark 7 Suit HUD"
|
||||||
|
set src in usr
|
||||||
|
|
||||||
|
if(usr.canmove && !usr.stat && !usr.restrained())
|
||||||
|
if(src.hud_active)
|
||||||
|
away_planes = enables_planes
|
||||||
|
enables_planes = null
|
||||||
|
to_chat(usr, "You disable the inbuilt heads-up display.")
|
||||||
|
hud_active = 0
|
||||||
|
else
|
||||||
|
enables_planes = away_planes
|
||||||
|
away_planes = null
|
||||||
|
to_chat(usr, "You enable the inbuilt heads-up display.")
|
||||||
|
hud_active = 1
|
||||||
|
usr << activation_sound
|
||||||
|
usr.recalculate_vis()
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/void/responseteam/command
|
/obj/item/clothing/head/helmet/space/void/responseteam/command
|
||||||
name = "Mark VII-C Emergency Response Team Commander Helmet"
|
name = "Mark VII-C Emergency Response Team Commander Helmet"
|
||||||
|
enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_CH_WANTED,VIS_AUGMENTED)
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/void/responseteam/medical
|
/obj/item/clothing/head/helmet/space/void/responseteam/medical
|
||||||
name = "Mark VII-M Emergency Medical Response Helmet"
|
name = "Mark VII-M Emergency Medical Response Helmet"
|
||||||
icon_state = "erthelmet_m"
|
icon_state = "erthelmet_m"
|
||||||
item_state = "erthelmet_m"
|
item_state = "erthelmet_m"
|
||||||
|
enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_STATUS_R,VIS_CH_BACKUP,VIS_AUGMENTED)
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/void/responseteam/engineer
|
/obj/item/clothing/head/helmet/space/void/responseteam/engineer
|
||||||
name = "Mark VII-E Emergency Engineering Response Helmet"
|
name = "Mark VII-E Emergency Engineering Response Helmet"
|
||||||
@@ -148,6 +174,7 @@
|
|||||||
name = "Mark VII-S Emergency Security Response Helmet"
|
name = "Mark VII-S Emergency Security Response Helmet"
|
||||||
icon_state = "erthelmet_s"
|
icon_state = "erthelmet_s"
|
||||||
item_state = "erthelmet_s"
|
item_state = "erthelmet_s"
|
||||||
|
enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_CH_WANTED,VIS_AUGMENTED)
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/void/responseteam/janitor
|
/obj/item/clothing/head/helmet/space/void/responseteam/janitor
|
||||||
name = "Mark VII-J Emergency Cleanup Response Helmet"
|
name = "Mark VII-J Emergency Cleanup Response Helmet"
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
var/hide_on_roll = FALSE
|
var/hide_on_roll = FALSE
|
||||||
|
|
||||||
/obj/item/clothing/accessory/storage/Initialize()
|
/obj/item/clothing/accessory/storage/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
hold = new/obj/item/weapon/storage/internal(src)
|
hold = new/obj/item/weapon/storage/internal(src)
|
||||||
hold.max_storage_space = slots * 2
|
hold.max_storage_space = slots * 2
|
||||||
hold.max_w_class = ITEMSIZE_SMALL
|
hold.max_w_class = ITEMSIZE_SMALL
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
slots = 2
|
slots = 2
|
||||||
|
|
||||||
/obj/item/clothing/accessory/storage/knifeharness/Initialize()
|
/obj/item/clothing/accessory/storage/knifeharness/Initialize()
|
||||||
..()
|
. = ..()
|
||||||
hold.max_storage_space = ITEMSIZE_COST_SMALL * 2
|
hold.max_storage_space = ITEMSIZE_COST_SMALL * 2
|
||||||
hold.can_hold = list(/obj/item/weapon/material/knife/machete/hatchet/unathiknife,\
|
hold.can_hold = list(/obj/item/weapon/material/knife/machete/hatchet/unathiknife,\
|
||||||
/obj/item/weapon/material/knife,\
|
/obj/item/weapon/material/knife,\
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
to_chat(H,"<span class='warning'>You must be WEARING the uniform to change your size.</span>")
|
to_chat(H,"<span class='warning'>You must be WEARING the uniform to change your size.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
var/new_size = input("Put the desired size (25-200%)", "Set Size", 200) as num|null
|
var/new_size = input("Put the desired size (25-200%), or (1-600%) in dormitory areas.", "Set Size", 200) as num|null
|
||||||
|
|
||||||
//Check AGAIN because we accepted user input which is blocking.
|
//Check AGAIN because we accepted user input which is blocking.
|
||||||
if (src != H.w_uniform)
|
if (src != H.w_uniform)
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
H.update_icons() //Just want the matrix transform
|
H.update_icons() //Just want the matrix transform
|
||||||
return
|
return
|
||||||
|
|
||||||
if (!ISINRANGE(new_size,25,200))
|
if (!H.size_range_check(new_size))
|
||||||
to_chat(H,"<span class='notice'>The safety features of the uniform prevent you from choosing this size.</span>")
|
to_chat(H,"<span class='notice'>The safety features of the uniform prevent you from choosing this size.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user