mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-21 15:42:53 +00:00
Merge branch 'master' of github.com:Baystation12/Baystation12 into Airlocks
This commit is contained in:
@@ -22,7 +22,6 @@
|
|||||||
#define FILE_DIR "code/defines/mob/living"
|
#define FILE_DIR "code/defines/mob/living"
|
||||||
#define FILE_DIR "code/defines/mob/living/carbon"
|
#define FILE_DIR "code/defines/mob/living/carbon"
|
||||||
#define FILE_DIR "code/defines/mob/living/silicon"
|
#define FILE_DIR "code/defines/mob/living/silicon"
|
||||||
#define FILE_DIR "code/defines/mob/simple_animal"
|
|
||||||
#define FILE_DIR "code/defines/obj"
|
#define FILE_DIR "code/defines/obj"
|
||||||
#define FILE_DIR "code/defines/procs"
|
#define FILE_DIR "code/defines/procs"
|
||||||
#define FILE_DIR "code/defines/sd_procs"
|
#define FILE_DIR "code/defines/sd_procs"
|
||||||
@@ -73,7 +72,6 @@
|
|||||||
#define FILE_DIR "code/game/objects/devices"
|
#define FILE_DIR "code/game/objects/devices"
|
||||||
#define FILE_DIR "code/game/objects/devices/PDA"
|
#define FILE_DIR "code/game/objects/devices/PDA"
|
||||||
#define FILE_DIR "code/game/objects/items"
|
#define FILE_DIR "code/game/objects/items"
|
||||||
#define FILE_DIR "code/game/objects/items/clothing"
|
|
||||||
#define FILE_DIR "code/game/objects/items/weapons"
|
#define FILE_DIR "code/game/objects/items/weapons"
|
||||||
#define FILE_DIR "code/game/objects/items/weapons/implants"
|
#define FILE_DIR "code/game/objects/items/weapons/implants"
|
||||||
#define FILE_DIR "code/game/objects/radio"
|
#define FILE_DIR "code/game/objects/radio"
|
||||||
@@ -153,6 +151,7 @@
|
|||||||
#define FILE_DIR "code/unused/mining"
|
#define FILE_DIR "code/unused/mining"
|
||||||
#define FILE_DIR "code/unused/optics"
|
#define FILE_DIR "code/unused/optics"
|
||||||
#define FILE_DIR "code/unused/pda2"
|
#define FILE_DIR "code/unused/pda2"
|
||||||
|
#define FILE_DIR "code/unused/powerarmor"
|
||||||
#define FILE_DIR "code/unused/spacecraft"
|
#define FILE_DIR "code/unused/spacecraft"
|
||||||
#define FILE_DIR "code/WorkInProgress"
|
#define FILE_DIR "code/WorkInProgress"
|
||||||
#define FILE_DIR "code/WorkInProgress/Apples"
|
#define FILE_DIR "code/WorkInProgress/Apples"
|
||||||
@@ -315,15 +314,10 @@
|
|||||||
#include "code\defines\mob\living\silicon\pai.dm"
|
#include "code\defines\mob\living\silicon\pai.dm"
|
||||||
#include "code\defines\mob\living\silicon\robot.dm"
|
#include "code\defines\mob\living\silicon\robot.dm"
|
||||||
#include "code\defines\mob\living\silicon\silicon.dm"
|
#include "code\defines\mob\living\silicon\silicon.dm"
|
||||||
#include "code\defines\mob\simple_animal\cat.dm"
|
|
||||||
#include "code\defines\mob\simple_animal\corgi.dm"
|
|
||||||
#include "code\defines\mob\simple_animal\crab.dm"
|
|
||||||
#include "code\defines\mob\simple_animal\life.dm"
|
|
||||||
#include "code\defines\obj\closet.dm"
|
#include "code\defines\obj\closet.dm"
|
||||||
#include "code\defines\obj\clothing.dm"
|
#include "code\defines\obj\clothing.dm"
|
||||||
#include "code\defines\obj\computer.dm"
|
#include "code\defines\obj\computer.dm"
|
||||||
#include "code\defines\obj\decal.dm"
|
#include "code\defines\obj\decal.dm"
|
||||||
#include "code\defines\obj\door.dm"
|
|
||||||
#include "code\defines\obj\hydro.dm"
|
#include "code\defines\obj\hydro.dm"
|
||||||
#include "code\defines\obj\machinery.dm"
|
#include "code\defines\obj\machinery.dm"
|
||||||
#include "code\defines\obj\radio.dm"
|
#include "code\defines\obj\radio.dm"
|
||||||
@@ -545,6 +539,7 @@
|
|||||||
#include "code\game\machinery\doors\firedoor.dm"
|
#include "code\game\machinery\doors\firedoor.dm"
|
||||||
#include "code\game\machinery\doors\poddoor.dm"
|
#include "code\game\machinery\doors\poddoor.dm"
|
||||||
#include "code\game\machinery\doors\shutters.dm"
|
#include "code\game\machinery\doors\shutters.dm"
|
||||||
|
#include "code\game\machinery\doors\unpowered.dm"
|
||||||
#include "code\game\machinery\doors\windowdoor.dm"
|
#include "code\game\machinery\doors\windowdoor.dm"
|
||||||
#include "code\game\machinery\embedded_controller\access_controller.dm"
|
#include "code\game\machinery\embedded_controller\access_controller.dm"
|
||||||
#include "code\game\machinery\embedded_controller\airlock_controller.dm"
|
#include "code\game\machinery\embedded_controller\airlock_controller.dm"
|
||||||
@@ -631,6 +626,8 @@
|
|||||||
#include "code\game\objects\alien\weeds.dm"
|
#include "code\game\objects\alien\weeds.dm"
|
||||||
#include "code\game\objects\closets\bombsuit.dm"
|
#include "code\game\objects\closets\bombsuit.dm"
|
||||||
#include "code\game\objects\closets\emergency.dm"
|
#include "code\game\objects\closets\emergency.dm"
|
||||||
|
#include "code\game\objects\closets\extinguisher.dm"
|
||||||
|
#include "code\game\objects\closets\fireaxe.dm"
|
||||||
#include "code\game\objects\closets\firecloset.dm"
|
#include "code\game\objects\closets\firecloset.dm"
|
||||||
#include "code\game\objects\closets\gimmick.dm"
|
#include "code\game\objects\closets\gimmick.dm"
|
||||||
#include "code\game\objects\closets\gmcloset.dm"
|
#include "code\game\objects\closets\gmcloset.dm"
|
||||||
@@ -678,8 +675,6 @@
|
|||||||
#include "code\game\objects\items\shock_kit.dm"
|
#include "code\game\objects\items\shock_kit.dm"
|
||||||
#include "code\game\objects\items\tk_grab.dm"
|
#include "code\game\objects\items\tk_grab.dm"
|
||||||
#include "code\game\objects\items\trash.dm"
|
#include "code\game\objects\items\trash.dm"
|
||||||
#include "code\game\objects\items\clothing\powerarmor.dm"
|
|
||||||
#include "code\game\objects\items\clothing\powerarmorcomponents.dm"
|
|
||||||
#include "code\game\objects\items\weapons\AI_modules.dm"
|
#include "code\game\objects\items\weapons\AI_modules.dm"
|
||||||
#include "code\game\objects\items\weapons\cameras.dm"
|
#include "code\game\objects\items\weapons\cameras.dm"
|
||||||
#include "code\game\objects\items\weapons\cards_ids.dm"
|
#include "code\game\objects\items\weapons\cards_ids.dm"
|
||||||
@@ -792,6 +787,7 @@
|
|||||||
#include "code\modules\assembly\timer.dm"
|
#include "code\modules\assembly\timer.dm"
|
||||||
#include "code\modules\chemical\Chemistry-Holder.dm"
|
#include "code\modules\chemical\Chemistry-Holder.dm"
|
||||||
#include "code\modules\chemical\Chemistry-Machinery.dm"
|
#include "code\modules\chemical\Chemistry-Machinery.dm"
|
||||||
|
#include "code\modules\chemical\Chemistry-Readme.dm"
|
||||||
#include "code\modules\chemical\Chemistry-Reagents.dm"
|
#include "code\modules\chemical\Chemistry-Reagents.dm"
|
||||||
#include "code\modules\chemical\Chemistry-Recipes.dm"
|
#include "code\modules\chemical\Chemistry-Recipes.dm"
|
||||||
#include "code\modules\chemical\Chemistry-Tools.dm"
|
#include "code\modules\chemical\Chemistry-Tools.dm"
|
||||||
@@ -840,6 +836,7 @@
|
|||||||
#include "code\modules\flufftext\Hallucination.dm"
|
#include "code\modules\flufftext\Hallucination.dm"
|
||||||
#include "code\modules\flufftext\TextFilters.dm"
|
#include "code\modules\flufftext\TextFilters.dm"
|
||||||
#include "code\modules\food\food.dm"
|
#include "code\modules\food\food.dm"
|
||||||
|
#include "code\modules\food\meat.dm"
|
||||||
#include "code\modules\food\recipes_microwave.dm"
|
#include "code\modules\food\recipes_microwave.dm"
|
||||||
#include "code\modules\mining\datum_processing_recipe.dm"
|
#include "code\modules\mining\datum_processing_recipe.dm"
|
||||||
#include "code\modules\mining\machine_input_output_plates.dm"
|
#include "code\modules\mining\machine_input_output_plates.dm"
|
||||||
@@ -856,6 +853,7 @@
|
|||||||
#include "code\modules\mob\login.dm"
|
#include "code\modules\mob\login.dm"
|
||||||
#include "code\modules\mob\logout.dm"
|
#include "code\modules\mob\logout.dm"
|
||||||
#include "code\modules\mob\mob.dm"
|
#include "code\modules\mob\mob.dm"
|
||||||
|
#include "code\modules\mob\mob_cleanup.dm"
|
||||||
#include "code\modules\mob\mob_defines.dm"
|
#include "code\modules\mob\mob_defines.dm"
|
||||||
#include "code\modules\mob\mob_grab.dm"
|
#include "code\modules\mob\mob_grab.dm"
|
||||||
#include "code\modules\mob\mob_helpers.dm"
|
#include "code\modules\mob\mob_helpers.dm"
|
||||||
@@ -990,6 +988,11 @@
|
|||||||
#include "code\modules\mob\organ\organ_external.dm"
|
#include "code\modules\mob\organ\organ_external.dm"
|
||||||
#include "code\modules\mob\organ\organ_internal.dm"
|
#include "code\modules\mob\organ\organ_internal.dm"
|
||||||
#include "code\modules\mob\organ\pain.dm"
|
#include "code\modules\mob\organ\pain.dm"
|
||||||
|
#include "code\modules\mob\simple_animal\cat.dm"
|
||||||
|
#include "code\modules\mob\simple_animal\corgi.dm"
|
||||||
|
#include "code\modules\mob\simple_animal\crab.dm"
|
||||||
|
#include "code\modules\mob\simple_animal\life.dm"
|
||||||
|
#include "code\modules\mob\simple_animal\shade.dm"
|
||||||
#include "code\modules\power\apc.dm"
|
#include "code\modules\power\apc.dm"
|
||||||
#include "code\modules\power\cable.dm"
|
#include "code\modules\power\cable.dm"
|
||||||
#include "code\modules\power\cell.dm"
|
#include "code\modules\power\cell.dm"
|
||||||
@@ -1081,6 +1084,7 @@
|
|||||||
#include "code\WorkInProgress\AI_Visibility.dm"
|
#include "code\WorkInProgress\AI_Visibility.dm"
|
||||||
#include "code\WorkInProgress\buildmode.dm"
|
#include "code\WorkInProgress\buildmode.dm"
|
||||||
#include "code\WorkInProgress\explosion_particles.dm"
|
#include "code\WorkInProgress\explosion_particles.dm"
|
||||||
|
#include "code\WorkInProgress\Cael_Aislinn\Tajara\examine.dm"
|
||||||
#include "code\WorkInProgress\Cael_Aislinn\Tajara\say.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Tajara\say.dm"
|
||||||
#include "code\WorkInProgress\Cael_Aislinn\Tajara\tajara_transformation.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Tajara\tajara_transformation.dm"
|
||||||
#include "code\WorkInProgress\Cael_Aislinn\Tajara\tajaran.dm"
|
#include "code\WorkInProgress\Cael_Aislinn\Tajara\tajaran.dm"
|
||||||
@@ -1091,6 +1095,8 @@
|
|||||||
#include "code\WorkInProgress\Mini\atmos_control.dm"
|
#include "code\WorkInProgress\Mini\atmos_control.dm"
|
||||||
#include "code\WorkInProgress\Mini\pipe_heater.dm"
|
#include "code\WorkInProgress\Mini\pipe_heater.dm"
|
||||||
#include "code\WorkInProgress\Mloc\Shortcuts.dm"
|
#include "code\WorkInProgress\Mloc\Shortcuts.dm"
|
||||||
|
#include "code\WorkInProgress\organs\implants.dm"
|
||||||
|
#include "code\WorkInProgress\organs\organs.dm"
|
||||||
#include "code\WorkInProgress\Ported\head.dm"
|
#include "code\WorkInProgress\Ported\head.dm"
|
||||||
#include "code\WorkInProgress\Ported\policetape.dm"
|
#include "code\WorkInProgress\Ported\policetape.dm"
|
||||||
#include "code\WorkInProgress\Ported\Abi79\uplink_kits.dm"
|
#include "code\WorkInProgress\Ported\Abi79\uplink_kits.dm"
|
||||||
|
|||||||
@@ -12,20 +12,10 @@ atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
|
|||||||
|
|
||||||
turf
|
turf
|
||||||
assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
|
assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
|
||||||
//First, ensure there is no movable shuttle or what not on tile that is taking over
|
|
||||||
// var/obj/movable/floor/movable_on_me = locate(/obj/movable/floor) in src
|
|
||||||
// if(istype(movable_on_me))
|
|
||||||
// return movable_on_me.assume_air(giver)
|
|
||||||
|
|
||||||
del(giver)
|
del(giver)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
return_air()
|
return_air()
|
||||||
//First, ensure there is no movable shuttle or what not on tile that is taking over
|
|
||||||
// var/obj/movable/floor/movable_on_me = locate(/obj/movable/floor) in src
|
|
||||||
// if(istype(movable_on_me))
|
|
||||||
// return movable_on_me.return_air()
|
|
||||||
|
|
||||||
//Create gas mixture to hold data for passing
|
//Create gas mixture to hold data for passing
|
||||||
var/datum/gas_mixture/GM = new
|
var/datum/gas_mixture/GM = new
|
||||||
|
|
||||||
@@ -39,11 +29,6 @@ turf
|
|||||||
return GM
|
return GM
|
||||||
|
|
||||||
remove_air(amount as num)
|
remove_air(amount as num)
|
||||||
//First, ensure there is no movable shuttle or what not on tile that is taking over
|
|
||||||
// var/obj/movable/floor/movable_on_me = locate(/obj/movable/floor) in src
|
|
||||||
// if(istype(movable_on_me))
|
|
||||||
// return movable_on_me.remove_air(amount)
|
|
||||||
|
|
||||||
var/datum/gas_mixture/GM = new
|
var/datum/gas_mixture/GM = new
|
||||||
|
|
||||||
var/sum = oxygen + carbon_dioxide + nitrogen + toxins
|
var/sum = oxygen + carbon_dioxide + nitrogen + toxins
|
||||||
|
|||||||
@@ -103,72 +103,11 @@
|
|||||||
/obj/organ/torso
|
/obj/organ/torso
|
||||||
name = "torso"
|
name = "torso"
|
||||||
var/maxHealth = 50 //right now, the mob's (only humans for now) health depends only on it. Will be fixed later
|
var/maxHealth = 50 //right now, the mob's (only humans for now) health depends only on it. Will be fixed later
|
||||||
var/ear_damage = null//Carbon
|
|
||||||
var/cloneloss = 0//Carbon
|
|
||||||
var/nodamage = 0
|
|
||||||
// flags = NOREACT //uncomment this out later
|
|
||||||
var/viruses = list() // replaces var/datum/disease/virus
|
|
||||||
var/list/resistances = list()
|
|
||||||
var/datum/disease/virus = null
|
|
||||||
var/emote_allowed = 1
|
|
||||||
var/sdisabilities = 0//Carbon
|
|
||||||
var/disabilities = 0//Carbon
|
|
||||||
var/monkeyizing = null//Carbon
|
|
||||||
var/lying = 0.0
|
|
||||||
var/resting = 0.0//Carbon
|
|
||||||
var/sleeping = 0.0//Carbon
|
|
||||||
var/oxyloss = 0.0//Living
|
|
||||||
var/toxloss = 0.0//Living
|
|
||||||
var/fireloss = 0.0//Living
|
|
||||||
var/bruteloss = 0.0//Living
|
|
||||||
var/timeofdeath = 0.0//Living
|
|
||||||
var/rejuv = null
|
|
||||||
var/antitoxs = null
|
|
||||||
var/plasma = null
|
|
||||||
var/cpr_time = 1.0//Carbon
|
|
||||||
var/health = 100//Living
|
|
||||||
var/bodytemperature = 310.055 //98.7 F
|
|
||||||
var/bhunger = 0//Carbon
|
|
||||||
var/nutrition = 400.0//Carbon
|
|
||||||
var/overeatduration = 0 // How long this guy is overeating //Carbon
|
|
||||||
var/paralysis = 0.0
|
|
||||||
var/stunned = 0.0
|
|
||||||
var/weakened = 0.0
|
|
||||||
var/losebreath = 0.0//Carbon
|
|
||||||
|
|
||||||
var/obj/item/weapon/storage/s_active = null//Carbon
|
|
||||||
var/inertia_dir = 0
|
|
||||||
var/datum/dna/dna = null//Carbon
|
|
||||||
var/radiation = 0.0//Carbon
|
|
||||||
var/mutations = 0//Carbon
|
|
||||||
//telekinesis = 1
|
|
||||||
//firemut = 2
|
|
||||||
//xray = 4
|
|
||||||
//hulk = 8
|
|
||||||
//clumsy = 16
|
|
||||||
//obese = 32
|
|
||||||
//husk = 64
|
|
||||||
/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
|
|
||||||
through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
|
|
||||||
the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
|
|
||||||
//0 is off, 1 is normal, 2 is for ninjas.
|
|
||||||
var/incorporeal_move = 0
|
|
||||||
//The last mob/living/carbon to push/drag/grab this mob (mostly used by Metroids friend recognition)
|
|
||||||
var/mob/living/carbon/LAssailant = null
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/organ/torso/human
|
/obj/organ/torso/human
|
||||||
name = "human torso"
|
name = "human torso"
|
||||||
species = "human"
|
species = "human"
|
||||||
maxHealth = 100
|
maxHealth = 100
|
||||||
var/underwear = 1//Human
|
|
||||||
var/obj/item/weapon/back = null//Human/Monkey
|
|
||||||
var/obj/item/weapon/tank/internal = null//Human/Monkey
|
|
||||||
var/alien_egg_flag = 0//Have you been infected?
|
|
||||||
var/last_special = 0
|
|
||||||
|
|
||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
@@ -196,14 +135,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
|||||||
var/minDamage = 5 //punching damage
|
var/minDamage = 5 //punching damage
|
||||||
var/maxDamage = 5
|
var/maxDamage = 5
|
||||||
|
|
||||||
var/atom/movable/pulling = null
|
|
||||||
var/hand = null
|
|
||||||
var/obj/item/weapon/handcuffs/handcuffed = null//Living
|
|
||||||
var/obj/item/l_hand = null//Living
|
|
||||||
var/obj/item/r_hand = null//Living
|
|
||||||
var/in_throw_mode = 0
|
|
||||||
// var/strangleDelay = 1 //The code is a bit too complicated for that right now
|
|
||||||
|
|
||||||
/obj/organ/limb/arms/alien
|
/obj/organ/limb/arms/alien
|
||||||
name = "alien arms"
|
name = "alien arms"
|
||||||
species = "alien"
|
species = "alien"
|
||||||
@@ -220,15 +151,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
|||||||
/obj/organ/limb/legs
|
/obj/organ/limb/legs
|
||||||
name = "legs"
|
name = "legs"
|
||||||
|
|
||||||
var/moveRunDelay = 1 //not sure about how that works
|
|
||||||
var/moveWalkDelay = 7
|
|
||||||
//var/knockdownResist = 0
|
|
||||||
var/next_move = null
|
|
||||||
var/prev_move = null
|
|
||||||
var/canmove = 1.0
|
|
||||||
var/obj/structure/stool/buckled = null//Living
|
|
||||||
var/footstep = 1
|
|
||||||
|
|
||||||
/obj/organ/limb/legs/human
|
/obj/organ/limb/legs/human
|
||||||
name = "human legs"
|
name = "human legs"
|
||||||
species = "human"
|
species = "human"
|
||||||
@@ -241,47 +163,9 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
|||||||
/obj/organ/head
|
/obj/organ/head
|
||||||
name = "head"
|
name = "head"
|
||||||
|
|
||||||
var/stuttering = null//Carbon
|
|
||||||
var/druggy = 0//Carbon
|
|
||||||
var/confused = 0//Carbon
|
|
||||||
var/drowsyness = 0.0//Carbon
|
|
||||||
var/dizziness = 0//Carbon
|
|
||||||
var/is_dizzy = 0
|
|
||||||
var/is_jittery = 0
|
|
||||||
var/jitteriness = 0//Carbon
|
|
||||||
var/r_epil = 0
|
|
||||||
var/r_ch_cou = 0
|
|
||||||
var/r_Tourette = 0//Carbon
|
|
||||||
var/miming = null //checks if the guy is a mime//Human
|
|
||||||
var/silent = null //Can't talk. Value goes down every life proc.//Human
|
|
||||||
var/voice_name = "unidentifiable voice"
|
|
||||||
var/voice_message = null // When you are not understood by others (replaced with just screeches, hisses, chimpers etc.)
|
|
||||||
var/say_message = null // When you are understood by others. Currently only used by aliens and monkeys in their say_quote procs
|
|
||||||
var/coughedtime = null
|
|
||||||
var/job = null//Living
|
|
||||||
var/const/blindness = 1//Carbon
|
|
||||||
var/const/deafness = 2//Carbon
|
|
||||||
var/const/muteness = 4//Carbon
|
|
||||||
var/brainloss = 0//Carbon
|
|
||||||
var/robot_talk_understand = 0
|
|
||||||
var/alien_talk_understand = 0
|
|
||||||
var/taj_talk_understand = 0
|
|
||||||
var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
|
|
||||||
var/ear_deaf = null//Carbon
|
|
||||||
var/eye_blind = null//Carbon
|
|
||||||
var/eye_blurry = null//Carbon
|
|
||||||
var/eye_stat = null//Living, potentially Carbon
|
|
||||||
var/blinded = null
|
|
||||||
var/shakecamera = 0
|
|
||||||
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
|
|
||||||
var/obj/proc_holder/spell/list/spell_list = list()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/organ/head/human
|
/obj/organ/head/human
|
||||||
name = "human head"
|
name = "human head"
|
||||||
species = "human"
|
species = "human"
|
||||||
var/obj/item/clothing/mask/wear_mask = null//Carbon
|
|
||||||
|
|
||||||
/obj/organ/head/alien
|
/obj/organ/head/alien
|
||||||
name = "alien head"
|
name = "alien head"
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
|||||||
stage = 4
|
stage = 4
|
||||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||||
mob << "\red You feel something tearing its way out of your stomach..."
|
mob << "\red You feel something tearing its way out of your stomach..."
|
||||||
mob.toxloss += 10
|
mob.adjustToxLoss(10)
|
||||||
mob.updatehealth()
|
mob.updatehealth()
|
||||||
if(prob(40))
|
if(prob(40))
|
||||||
if(mob.client)
|
if(mob.client)
|
||||||
@@ -340,7 +340,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
|||||||
stage = 3
|
stage = 3
|
||||||
maxm = 3
|
maxm = 3
|
||||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||||
mob.toxloss += (2*multiplier)
|
mob.adjustToxLoss((2*multiplier))
|
||||||
|
|
||||||
/datum/disease2/effect/greater/drowsness
|
/datum/disease2/effect/greater/drowsness
|
||||||
name = "Automated sleeping syndrome"
|
name = "Automated sleeping syndrome"
|
||||||
@@ -425,7 +425,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
|||||||
name = "Toxification syndrome"
|
name = "Toxification syndrome"
|
||||||
stage = 4
|
stage = 4
|
||||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||||
mob.toxloss += 15
|
mob.adjustToxLoss(15)
|
||||||
|
|
||||||
/datum/disease2/effect/greater/sleepy
|
/datum/disease2/effect/greater/sleepy
|
||||||
name = "Resting syndrome"
|
name = "Resting syndrome"
|
||||||
@@ -437,7 +437,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
|||||||
name = "Lazy mind syndrome"
|
name = "Lazy mind syndrome"
|
||||||
stage = 3
|
stage = 3
|
||||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||||
mob.brainloss = 50
|
mob.setBrainLoss(50)
|
||||||
|
|
||||||
/datum/disease2/effect/greater/suicide
|
/datum/disease2/effect/greater/suicide
|
||||||
name = "Suicidal syndrome"
|
name = "Suicidal syndrome"
|
||||||
@@ -446,7 +446,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
|||||||
mob.suiciding = 1
|
mob.suiciding = 1
|
||||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||||
viewers(mob) << "\red <b>[mob.name] is holding \his breath. It looks like \he's trying to commit suicide.</b>"
|
viewers(mob) << "\red <b>[mob.name] is holding \his breath. It looks like \he's trying to commit suicide.</b>"
|
||||||
mob.oxyloss = max(175 - mob.toxloss - mob.fireloss - mob.bruteloss, mob.oxyloss)
|
mob.adjustOxyLoss(175 - mob.getToxLoss() - mob.getFireLoss() - mob.getBruteLoss() - mob.getOxyLoss())
|
||||||
mob.updatehealth()
|
mob.updatehealth()
|
||||||
spawn(200) //in case they get revived by cryo chamber or something stupid like that, let them suicide again in 20 seconds
|
spawn(200) //in case they get revived by cryo chamber or something stupid like that, let them suicide again in 20 seconds
|
||||||
mob.suiciding = 0
|
mob.suiciding = 0
|
||||||
@@ -462,7 +462,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
|||||||
name = "Lazy mind syndrome"
|
name = "Lazy mind syndrome"
|
||||||
stage = 3
|
stage = 3
|
||||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||||
mob.brainloss = 20
|
mob.setBrainLoss(20)
|
||||||
|
|
||||||
/datum/disease2/effect/lesser/deaf
|
/datum/disease2/effect/lesser/deaf
|
||||||
name = "Hard of hearing syndrome"
|
name = "Hard of hearing syndrome"
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
if(M.virus2)
|
if(M.virus2)
|
||||||
M.virus2.cure_added(resistance)
|
M.virus2.cure_added(resistance)
|
||||||
else if(works == 1)
|
else if(works == 1)
|
||||||
M.toxloss += 60
|
M.adjustToxLoss(60)
|
||||||
else if(works == 2)
|
else if(works == 2)
|
||||||
M.gib()
|
M.gib()
|
||||||
else if(works == 3)
|
else if(works == 3)
|
||||||
|
|||||||
@@ -23,15 +23,15 @@
|
|||||||
if(prob(2))
|
if(prob(2))
|
||||||
affected_mob << "\red Your don't feel like yourself."
|
affected_mob << "\red Your don't feel like yourself."
|
||||||
if(prob(5))
|
if(prob(5))
|
||||||
affected_mob.brainloss +=1
|
affected_mob.adjustBrainLoss(1)
|
||||||
affected_mob.updatehealth()
|
affected_mob.updatehealth()
|
||||||
if(3)
|
if(3)
|
||||||
if(prob(2))
|
if(prob(2))
|
||||||
affected_mob.emote("stare")
|
affected_mob.emote("stare")
|
||||||
if(prob(2))
|
if(prob(2))
|
||||||
affected_mob.emote("drool")
|
affected_mob.emote("drool")
|
||||||
if(prob(10) && affected_mob.brainloss<=98)//shouldn't retard you to death now
|
if(prob(10) && affected_mob.getBrainLoss()<=98)//shouldn't retard you to death now
|
||||||
affected_mob.brainloss += 2
|
affected_mob.adjustBrainLoss(2)
|
||||||
affected_mob.updatehealth()
|
affected_mob.updatehealth()
|
||||||
if(prob(2))
|
if(prob(2))
|
||||||
affected_mob << "\red Your try to remember something important...but can't."
|
affected_mob << "\red Your try to remember something important...but can't."
|
||||||
@@ -50,8 +50,8 @@
|
|||||||
affected_mob.updatehealth()
|
affected_mob.updatehealth()
|
||||||
if(prob(2))
|
if(prob(2))
|
||||||
affected_mob << "\red Your head hurts." */
|
affected_mob << "\red Your head hurts." */
|
||||||
if(prob(15) && affected_mob.brainloss<=98) //shouldn't retard you to death now
|
if(prob(15) && affected_mob.getBrainLoss()<=98) //shouldn't retard you to death now
|
||||||
affected_mob.brainloss +=3
|
affected_mob.adjustBrainLoss(3)
|
||||||
affected_mob.updatehealth()
|
affected_mob.updatehealth()
|
||||||
if(prob(2))
|
if(prob(2))
|
||||||
affected_mob << "\red Strange buzzing fills your head, removing all thoughts."
|
affected_mob << "\red Strange buzzing fills your head, removing all thoughts."
|
||||||
|
|||||||
@@ -14,11 +14,13 @@
|
|||||||
..()
|
..()
|
||||||
switch(stage)
|
switch(stage)
|
||||||
if(2)
|
if(2)
|
||||||
if(affected_mob.sleeping && prob(40))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(40)) //removed until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
if(affected_mob.lying && prob(10))
|
*/
|
||||||
|
if(affected_mob.lying && prob(40)) //changed FROM prob(10) until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
@@ -35,11 +37,13 @@
|
|||||||
if(prob(1))
|
if(prob(1))
|
||||||
affected_mob << "\red Mucus runs down the back of your throat."
|
affected_mob << "\red Mucus runs down the back of your throat."
|
||||||
if(3)
|
if(3)
|
||||||
if(affected_mob.sleeping && prob(25))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(25)) //removed until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
if(affected_mob.lying && prob(5))
|
*/
|
||||||
|
if(affected_mob.lying && prob(25)) //changed FROM prob(5) until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -15,7 +15,13 @@
|
|||||||
..()
|
..()
|
||||||
switch(stage)
|
switch(stage)
|
||||||
if(2)
|
if(2)
|
||||||
if(affected_mob.sleeping && prob(20))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed --Blaank
|
||||||
|
affected_mob << "\blue You feel better."
|
||||||
|
stage--
|
||||||
|
return
|
||||||
|
*/
|
||||||
|
if(affected_mob.lying && prob(20)) //added until sleeping is fixed --Blaank
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
stage--
|
stage--
|
||||||
return
|
return
|
||||||
@@ -34,7 +40,13 @@
|
|||||||
affected_mob.updatehealth()
|
affected_mob.updatehealth()
|
||||||
|
|
||||||
if(3)
|
if(3)
|
||||||
if(affected_mob.sleeping && prob(15))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(15)) //removed until sleeping is fixed
|
||||||
|
affected_mob << "\blue You feel better."
|
||||||
|
stage--
|
||||||
|
return
|
||||||
|
*/
|
||||||
|
if(affected_mob.lying && prob(15)) //added until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
stage--
|
stage--
|
||||||
return
|
return
|
||||||
@@ -51,9 +63,4 @@
|
|||||||
if(prob(20))
|
if(prob(20))
|
||||||
affected_mob.adjustToxLoss(1)
|
affected_mob.adjustToxLoss(1)
|
||||||
affected_mob.updatehealth()
|
affected_mob.updatehealth()
|
||||||
if(prob(25))
|
|
||||||
affected_mob << "\red The world around you feels surreal"
|
|
||||||
if(prob(50))
|
|
||||||
affected_mob.hallucination += 100
|
|
||||||
shake_camera(affected_mob,20)
|
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -30,11 +30,13 @@
|
|||||||
switch(stage)
|
switch(stage)
|
||||||
if(1)
|
if(1)
|
||||||
if(restcure)
|
if(restcure)
|
||||||
if(affected_mob.sleeping && prob(30))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(30)) //removed until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
if(affected_mob.lying && prob(20))
|
*/
|
||||||
|
if(affected_mob.lying && prob(30)) //changed FROM prob(20) until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
@@ -46,11 +48,13 @@
|
|||||||
affected_mob << "\red You feel angry."
|
affected_mob << "\red You feel angry."
|
||||||
if(2)
|
if(2)
|
||||||
if(restcure)
|
if(restcure)
|
||||||
if(affected_mob.sleeping && prob(20))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
if(affected_mob.lying && prob(10))
|
*/
|
||||||
|
if(affected_mob.lying && prob(20)) //changed FROM prob(10) until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
@@ -65,11 +69,13 @@
|
|||||||
affected_mob << "\red Your stomach churns."
|
affected_mob << "\red Your stomach churns."
|
||||||
if(3)
|
if(3)
|
||||||
if(restcure)
|
if(restcure)
|
||||||
if(affected_mob.sleeping && prob(20))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(20)) //removed until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
if(affected_mob.lying && prob(10))
|
*/
|
||||||
|
if(affected_mob.lying && prob(20)) //changed FROM prob(10) until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
@@ -84,11 +90,13 @@
|
|||||||
|
|
||||||
if(4)
|
if(4)
|
||||||
if(restcure)
|
if(restcure)
|
||||||
if(affected_mob.sleeping && prob(10))
|
/*
|
||||||
|
if(affected_mob.sleeping && prob(10)) //removed until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
if(affected_mob.lying && prob(5))
|
*/
|
||||||
|
if(affected_mob.lying && prob(5)) //changed FROM prob(5) until sleeping is fixed
|
||||||
affected_mob << "\blue You feel better."
|
affected_mob << "\blue You feel better."
|
||||||
cure()
|
cure()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ datum/shuttle_controller
|
|||||||
fake_recall = 0 //Used in rounds to prevent "ON NOES, IT MUST [INSERT ROUND] BECAUSE SHUTTLE CAN'T BE CALLED"
|
fake_recall = 0 //Used in rounds to prevent "ON NOES, IT MUST [INSERT ROUND] BECAUSE SHUTTLE CAN'T BE CALLED"
|
||||||
deny_shuttle = 0 //for admins not allowing it to be called.
|
deny_shuttle = 0 //for admins not allowing it to be called.
|
||||||
departed = 0
|
departed = 0
|
||||||
|
sound_siren = 1 //if siren should go off
|
||||||
// call the shuttle
|
// call the shuttle
|
||||||
// if not called before, set the endtime to T+600 seconds
|
// if not called before, set the endtime to T+600 seconds
|
||||||
// otherwise if outgoing, switch to incoming
|
// otherwise if outgoing, switch to incoming
|
||||||
@@ -34,6 +34,13 @@ datum/shuttle_controller
|
|||||||
else
|
else
|
||||||
settimeleft(SHUTTLEARRIVETIME*coeff)
|
settimeleft(SHUTTLEARRIVETIME*coeff)
|
||||||
online = 1
|
online = 1
|
||||||
|
//turning on the red lights in hallways and siren
|
||||||
|
for(var/area/A in world)
|
||||||
|
if(istype(A, /area/hallway))
|
||||||
|
A.readyalert()
|
||||||
|
sound_siren = 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
proc/recall()
|
proc/recall()
|
||||||
if(direction == 1)
|
if(direction == 1)
|
||||||
@@ -45,6 +52,11 @@ datum/shuttle_controller
|
|||||||
world << sound('shuttlerecalled.ogg')
|
world << sound('shuttlerecalled.ogg')
|
||||||
setdirection(-1)
|
setdirection(-1)
|
||||||
online = 1
|
online = 1
|
||||||
|
//turning off the red lights in hallways and siren
|
||||||
|
for(var/area/A in world)
|
||||||
|
if(istype(A, /area/hallway))
|
||||||
|
A.readyreset()
|
||||||
|
sound_siren = 0
|
||||||
|
|
||||||
|
|
||||||
// returns the time (in seconds) before shuttle arrival
|
// returns the time (in seconds) before shuttle arrival
|
||||||
@@ -83,6 +95,11 @@ datum/shuttle_controller
|
|||||||
var/timeleft = timeleft()
|
var/timeleft = timeleft()
|
||||||
if(timeleft > 1e5) // midnight rollover protection
|
if(timeleft > 1e5) // midnight rollover protection
|
||||||
timeleft = 0
|
timeleft = 0
|
||||||
|
if (sound_siren && (direction == 1)) //playing siren every 90 seconds
|
||||||
|
sound_siren = 0
|
||||||
|
world << sound('siren.ogg')
|
||||||
|
spawn(900)
|
||||||
|
sound_siren = 1
|
||||||
switch(location)
|
switch(location)
|
||||||
if(0)
|
if(0)
|
||||||
if(timeleft>timelimit)
|
if(timeleft>timelimit)
|
||||||
|
|||||||
@@ -28,7 +28,11 @@
|
|||||||
return null
|
return null
|
||||||
|
|
||||||
proc/return_air()
|
proc/return_air()
|
||||||
return null
|
if(loc)
|
||||||
|
return loc.return_air()
|
||||||
|
else
|
||||||
|
return null
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Convenience proc to see if a container is open for chemistry handling
|
// Convenience proc to see if a container is open for chemistry handling
|
||||||
|
|||||||
@@ -14,3 +14,8 @@
|
|||||||
|
|
||||||
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
|
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
|
||||||
var/has_fine_manipulation = 0
|
var/has_fine_manipulation = 0
|
||||||
|
|
||||||
|
var/move_delay_add = 0 // movement delay to add
|
||||||
|
|
||||||
|
canstun = 0
|
||||||
|
canweaken = 0 // aliens cannot be stunned or knocked down. Massive buff!
|
||||||
@@ -19,6 +19,11 @@
|
|||||||
|
|
||||||
see_in_dark = 8
|
see_in_dark = 8
|
||||||
|
|
||||||
|
// canstun and canweaken don't affect metroids because they ignore stun and weakened variables
|
||||||
|
// for the sake of cleanliness, though, here they are.
|
||||||
|
canstun = 0
|
||||||
|
canweaken = 0
|
||||||
|
|
||||||
var/amount_grown = 0// controls how long the metroid has been overfed, if 10, grows into an adult
|
var/amount_grown = 0// controls how long the metroid has been overfed, if 10, grows into an adult
|
||||||
// if adult: if 10: reproduces
|
// if adult: if 10: reproduces
|
||||||
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
|
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
var/welded = 0
|
var/welded = 0
|
||||||
var/wall_mounted = 0 //never solid (You can always pass over it)
|
var/wall_mounted = 0 //never solid (You can always pass over it)
|
||||||
flags = FPRINT
|
flags = FPRINT
|
||||||
var/health = 100 //Might be a bit much, dono can always change later //Nerfed -Pete
|
var/health = 100
|
||||||
var/lastbang //
|
var/lastbang
|
||||||
var/lasttry = 0
|
var/lasttry = 0
|
||||||
layer = 2.98
|
layer = 2.98
|
||||||
|
|
||||||
@@ -79,202 +79,6 @@
|
|||||||
density = 0
|
density = 0
|
||||||
wall_mounted = 1
|
wall_mounted = 1
|
||||||
|
|
||||||
/obj/structure/closet/fireaxecabinet
|
|
||||||
name = "Fire Axe Cabinet"
|
|
||||||
desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe."
|
|
||||||
var/obj/item/weapon/fireaxe/fireaxe = new/obj/item/weapon/fireaxe
|
|
||||||
icon_state = "fireaxe1000"
|
|
||||||
icon_closed = "fireaxe1000"
|
|
||||||
icon_opened = "fireaxe1100"
|
|
||||||
anchored = 1
|
|
||||||
density = 0
|
|
||||||
var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri
|
|
||||||
opened = 1
|
|
||||||
var/hitstaken = 0
|
|
||||||
var/locked = 1
|
|
||||||
var/smashed = 0
|
|
||||||
|
|
||||||
attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
|
|
||||||
//..() //That's very useful, Erro
|
|
||||||
|
|
||||||
var/hasaxe = 0 //gonna come in handy later~
|
|
||||||
if(fireaxe)
|
|
||||||
hasaxe = 1
|
|
||||||
|
|
||||||
if (isrobot(usr) || src.locked)
|
|
||||||
if(istype(O, /obj/item/device/multitool))
|
|
||||||
user << "\red Resetting circuitry..."
|
|
||||||
playsound(user, 'lockreset.ogg', 50, 1)
|
|
||||||
sleep(50) // Sleeping time~
|
|
||||||
src.locked = 0
|
|
||||||
user << "\blue You disable the locking modules."
|
|
||||||
update_icon()
|
|
||||||
return
|
|
||||||
if(istype(O, /obj/item/weapon))
|
|
||||||
var/obj/item/weapon/W = O
|
|
||||||
if(src.smashed)
|
|
||||||
return
|
|
||||||
else
|
|
||||||
playsound(user, 'Glasshit.ogg', 100, 1) //We don't want this playing every time
|
|
||||||
if(W.force < 15)
|
|
||||||
user << "\blue The cabinet's protective glass glances off the hit."
|
|
||||||
else
|
|
||||||
src.hitstaken++
|
|
||||||
if(src.hitstaken == 4)
|
|
||||||
playsound(user, 'Glassbr3.ogg', 100, 1) //Break cabinet, receive goodies. Cabinet's fucked for life after that.
|
|
||||||
src.smashed = 1
|
|
||||||
src.locked = 0
|
|
||||||
src.localopened = 1
|
|
||||||
update_icon()
|
|
||||||
return
|
|
||||||
if (istype(O, /obj/item/weapon/fireaxe) && src.localopened)
|
|
||||||
if(!fireaxe)
|
|
||||||
if(O.wielded)
|
|
||||||
user << "\red Unwield the axe first."
|
|
||||||
return
|
|
||||||
fireaxe = O
|
|
||||||
user.drop_item(O)
|
|
||||||
src.contents += O
|
|
||||||
user << "\blue You place the fire axe back in the [src.name]."
|
|
||||||
update_icon()
|
|
||||||
else
|
|
||||||
if(src.smashed)
|
|
||||||
return
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
if(localopened)
|
|
||||||
icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
else
|
|
||||||
icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
else
|
|
||||||
if(src.smashed)
|
|
||||||
return
|
|
||||||
if(istype(O, /obj/item/device/multitool))
|
|
||||||
if(localopened)
|
|
||||||
localopened = 0
|
|
||||||
icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
return
|
|
||||||
else
|
|
||||||
user << "\red Resetting circuitry..."
|
|
||||||
sleep(50)
|
|
||||||
src.locked = 1
|
|
||||||
user << "\blue You re-enable the locking modules."
|
|
||||||
playsound(user, 'lockenable.ogg', 50, 1)
|
|
||||||
return
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
if(localopened)
|
|
||||||
icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
else
|
|
||||||
icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
attack_hand(mob/user as mob)
|
|
||||||
|
|
||||||
var/hasaxe = 0
|
|
||||||
if(fireaxe)
|
|
||||||
hasaxe = 1
|
|
||||||
|
|
||||||
if(src.locked)
|
|
||||||
user <<"\red The cabinet won't budge!"
|
|
||||||
return
|
|
||||||
if(localopened)
|
|
||||||
if(fireaxe)
|
|
||||||
user.put_in_hand(fireaxe)
|
|
||||||
fireaxe = null
|
|
||||||
user << "\blue You take the fire axe from the [name]."
|
|
||||||
src.add_fingerprint(user)
|
|
||||||
update_icon()
|
|
||||||
else
|
|
||||||
if(src.smashed)
|
|
||||||
return
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
if(localopened)
|
|
||||||
src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
else
|
|
||||||
src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
|
|
||||||
else
|
|
||||||
localopened = !localopened //I'm pretty sure we don't need an if(src.smashed) in here. In case I'm wrong and it fucks up teh cabinet, **MARKER**. -Agouri
|
|
||||||
if(localopened)
|
|
||||||
src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
else
|
|
||||||
src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
spawn(10) update_icon()
|
|
||||||
|
|
||||||
verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri
|
|
||||||
set name = "Open/Close"
|
|
||||||
set category = "Object"
|
|
||||||
|
|
||||||
if (isrobot(usr) || src.locked || src.smashed)
|
|
||||||
if(src.locked)
|
|
||||||
usr << "\red The cabinet won't budge!"
|
|
||||||
else if(src.smashed)
|
|
||||||
usr << "\blue The protective glass is broken!"
|
|
||||||
return
|
|
||||||
|
|
||||||
localopened = !localopened
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
verb/remove_fire_axe()
|
|
||||||
set name = "Remove Fire Axe"
|
|
||||||
set category = "Object"
|
|
||||||
|
|
||||||
if (isrobot(usr))
|
|
||||||
return
|
|
||||||
|
|
||||||
if (localopened)
|
|
||||||
if(fireaxe)
|
|
||||||
usr.put_in_hand(fireaxe)
|
|
||||||
fireaxe = null
|
|
||||||
usr << "\blue You take the Fire axe from the [name]."
|
|
||||||
else
|
|
||||||
usr << "\blue The [src.name] is empty."
|
|
||||||
else
|
|
||||||
usr << "\blue The [src.name] is closed."
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
attack_paw(mob/user as mob)
|
|
||||||
attack_hand(user)
|
|
||||||
return
|
|
||||||
|
|
||||||
attack_ai(mob/user as mob)
|
|
||||||
if(src.smashed)
|
|
||||||
user << "\red The security of the cabinet is compromised."
|
|
||||||
return
|
|
||||||
else
|
|
||||||
locked = !locked
|
|
||||||
if(locked)
|
|
||||||
user << "\red Cabinet locked."
|
|
||||||
else
|
|
||||||
user << "\blue Cabinet unlocked."
|
|
||||||
return
|
|
||||||
|
|
||||||
update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers
|
|
||||||
var/hasaxe = 0
|
|
||||||
if(fireaxe)
|
|
||||||
hasaxe = 1
|
|
||||||
icon_state = text("fireaxe[][][][]",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
|
||||||
|
|
||||||
open()
|
|
||||||
return
|
|
||||||
|
|
||||||
close()
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/closet/toolcloset
|
/obj/structure/closet/toolcloset
|
||||||
name = "Tool Closet"
|
name = "Tool Closet"
|
||||||
desc = "A bulky (yet mobile) closet. Contains tools."
|
desc = "A bulky (yet mobile) closet. Contains tools."
|
||||||
@@ -374,93 +178,6 @@
|
|||||||
|
|
||||||
// Inserting the gimmick clothing stuff here for generic items, IE Tacticool stuff
|
// Inserting the gimmick clothing stuff here for generic items, IE Tacticool stuff
|
||||||
|
|
||||||
/obj/structure/closet/extinguisher
|
|
||||||
name = "Extinguisher closet"
|
|
||||||
desc = "A small wall mounted cabinet designed to hold a fire extinguisher."
|
|
||||||
icon_state = "extinguisher10"
|
|
||||||
icon_opened = "extinguisher11"
|
|
||||||
icon_closed = "extinguisher10"
|
|
||||||
opened = 1
|
|
||||||
anchored = 1
|
|
||||||
density = 0
|
|
||||||
var/obj/item/weapon/extinguisher/EXTINGUISHER = new/obj/item/weapon/extinguisher
|
|
||||||
var/localopened = 1
|
|
||||||
|
|
||||||
open()
|
|
||||||
return
|
|
||||||
|
|
||||||
close()
|
|
||||||
return
|
|
||||||
|
|
||||||
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|
||||||
if (isrobot(usr))
|
|
||||||
return
|
|
||||||
if (istype(O, /obj/item/weapon/extinguisher))
|
|
||||||
if(!EXTINGUISHER)
|
|
||||||
user.drop_item(O)
|
|
||||||
src.contents += O
|
|
||||||
EXTINGUISHER = O
|
|
||||||
user << "\blue You place the extinguisher in the [src.name]."
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
attack_hand(mob/user as mob)
|
|
||||||
if(localopened)
|
|
||||||
if(EXTINGUISHER)
|
|
||||||
user.put_in_hand(EXTINGUISHER)
|
|
||||||
EXTINGUISHER = null
|
|
||||||
user << "\blue You take the extinguisher from the [name]."
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
|
|
||||||
else
|
|
||||||
localopened = !localopened
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
verb/toggle_openness() //nice name, huh? HUH?!
|
|
||||||
set name = "Open/Close"
|
|
||||||
set category = "Object"
|
|
||||||
|
|
||||||
if (isrobot(usr))
|
|
||||||
return
|
|
||||||
|
|
||||||
localopened = !localopened
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
verb/remove_extinguisher()
|
|
||||||
set name = "Remove Extinguisher"
|
|
||||||
set category = "Object"
|
|
||||||
|
|
||||||
if (isrobot(usr))
|
|
||||||
return
|
|
||||||
|
|
||||||
if (localopened)
|
|
||||||
if(EXTINGUISHER)
|
|
||||||
usr.put_in_hand(EXTINGUISHER)
|
|
||||||
EXTINGUISHER = null
|
|
||||||
usr << "\blue You take the extinguisher from the [name]."
|
|
||||||
else
|
|
||||||
usr << "\blue The [name] is empty."
|
|
||||||
else
|
|
||||||
usr << "\blue The [name] is closed."
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
attack_paw(mob/user as mob)
|
|
||||||
attack_hand(user)
|
|
||||||
return
|
|
||||||
|
|
||||||
attack_ai(mob/user as mob)
|
|
||||||
return
|
|
||||||
|
|
||||||
update_icon()
|
|
||||||
var/hasextinguisher = 0
|
|
||||||
if(EXTINGUISHER)
|
|
||||||
hasextinguisher = 1
|
|
||||||
icon_state = text("extinguisher[][]",hasextinguisher,src.localopened)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/closet/gimmick
|
/obj/structure/closet/gimmick
|
||||||
name = "Administrative Supply Closet"
|
name = "Administrative Supply Closet"
|
||||||
@@ -780,6 +497,9 @@
|
|||||||
icon_off = "fridge1"
|
icon_off = "fridge1"
|
||||||
req_access = list(access_heads_vault)
|
req_access = list(access_heads_vault)
|
||||||
|
|
||||||
|
/obj/structure/closet/secure_closet/personal/patient
|
||||||
|
name = "patient's closet"
|
||||||
|
|
||||||
/obj/structure/closet/secure_closet/wall
|
/obj/structure/closet/secure_closet/wall
|
||||||
name = "wall locker"
|
name = "wall locker"
|
||||||
req_access = list(access_security)
|
req_access = list(access_security)
|
||||||
|
|||||||
@@ -114,7 +114,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch
|
/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch
|
||||||
name = "Master Air Control"
|
name = "Master Air Control"
|
||||||
|
desc = "Emergancy global overrides for the entire atmospherics system."
|
||||||
|
|
||||||
/obj/machinery/computer/dna
|
/obj/machinery/computer/dna
|
||||||
name = "DNA operations computer"
|
name = "DNA operations computer"
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
var/g_amount = 0.0
|
var/g_amount = 0.0
|
||||||
var/operating = 0.0
|
var/operating = 0.0
|
||||||
var/opened = 0.0
|
var/opened = 0.0
|
||||||
//var/temp = null
|
|
||||||
anchored = 1.0
|
anchored = 1.0
|
||||||
var/list/L = list()
|
var/list/L = list()
|
||||||
var/list/LL = list()
|
var/list/LL = list()
|
||||||
|
|||||||
@@ -562,7 +562,7 @@
|
|||||||
contains = list("/obj/item/weapon/book/manual/ripley_build_and_repair",
|
contains = list("/obj/item/weapon/book/manual/ripley_build_and_repair",
|
||||||
"/obj/item/weapon/circuitboard/mecha/ripley/main", //TEMPORARY due to lack of circuitboard printer
|
"/obj/item/weapon/circuitboard/mecha/ripley/main", //TEMPORARY due to lack of circuitboard printer
|
||||||
"/obj/item/weapon/circuitboard/mecha/ripley/peripherals") //TEMPORARY due to lack of circuitboard printer
|
"/obj/item/weapon/circuitboard/mecha/ripley/peripherals") //TEMPORARY due to lack of circuitboard printer
|
||||||
cost = 40
|
cost = 30
|
||||||
containertype = "/obj/structure/closet/crate/secure"
|
containertype = "/obj/structure/closet/crate/secure"
|
||||||
containername = "APLU \"Ripley\" Circuit Crate"
|
containername = "APLU \"Ripley\" Circuit Crate"
|
||||||
access = access_robotics
|
access = access_robotics
|
||||||
@@ -584,6 +584,18 @@
|
|||||||
access = access_medical
|
access = access_medical
|
||||||
group = "Medical / Science"
|
group = "Medical / Science"
|
||||||
|
|
||||||
|
/datum/supply_packs/mecha_odysseus
|
||||||
|
name = "Circuit Crate (\"Odysseus\")"
|
||||||
|
contains = list(
|
||||||
|
"/obj/item/weapon/circuitboard/mecha/odysseus/peripherals", //TEMPORARY due to lack of circuitboard printer
|
||||||
|
"/obj/item/weapon/circuitboard/mecha/odysseus/main" //TEMPORARY due to lack of circuitboard printer
|
||||||
|
)
|
||||||
|
cost = 25
|
||||||
|
containertype = "/obj/structure/closet/crate/secure"
|
||||||
|
containername = "\"Odysseus\" Circuit Crate"
|
||||||
|
access = access_robotics
|
||||||
|
group = "Robotics"
|
||||||
|
|
||||||
/datum/supply_packs/robotics
|
/datum/supply_packs/robotics
|
||||||
name = "Robotics Assembly Crate"
|
name = "Robotics Assembly Crate"
|
||||||
contains = list("/obj/item/device/assembly/prox_sensor",
|
contains = list("/obj/item/device/assembly/prox_sensor",
|
||||||
|
|||||||
@@ -50,8 +50,6 @@
|
|||||||
/atom/proc/attack_metroid(mob/user as mob)
|
/atom/proc/attack_metroid(mob/user as mob)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/atom/proc/hand_h(mob/user as mob) //human (hand) - restrained
|
/atom/proc/hand_h(mob/user as mob) //human (hand) - restrained
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -88,6 +86,30 @@
|
|||||||
O << text("\red <B>[] has been hit by [] with []</B>", src, user, W)
|
O << text("\red <B>[] has been hit by [] with []</B>", src, user, W)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/atom/proc/add_hiddenprint(mob/living/M as mob)
|
||||||
|
if(isnull(M)) return
|
||||||
|
if(isnull(M.key)) return
|
||||||
|
if (!( src.flags ) & 256)
|
||||||
|
return
|
||||||
|
if (ishuman(M))
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if (!istype(H.dna, /datum/dna))
|
||||||
|
return 0
|
||||||
|
if (H.gloves)
|
||||||
|
if(src.fingerprintslast != H.key)
|
||||||
|
src.fingerprintshidden += text("\[[time_stamp()]\] (Wearing gloves). Real name: [], Key: []",H.real_name, H.key)
|
||||||
|
src.fingerprintslast = H.key
|
||||||
|
return 0
|
||||||
|
if (!( src.fingerprints ))
|
||||||
|
if(src.fingerprintslast != H.key)
|
||||||
|
src.fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",H.real_name, H.key)
|
||||||
|
src.fingerprintslast = H.key
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
if(src.fingerprintslast != M.key)
|
||||||
|
src.fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",M.real_name, M.key)
|
||||||
|
src.fingerprintslast = M.key
|
||||||
|
return
|
||||||
|
|
||||||
/atom/proc/add_fingerprint(mob/living/M as mob)
|
/atom/proc/add_fingerprint(mob/living/M as mob)
|
||||||
if(isnull(M)) return
|
if(isnull(M)) return
|
||||||
|
|||||||
@@ -886,9 +886,9 @@
|
|||||||
if (src.connected) //Is something connected?
|
if (src.connected) //Is something connected?
|
||||||
var/mob/occupant = src.connected.occupant
|
var/mob/occupant = src.connected.occupant
|
||||||
dat = "<font color='blue'><B>Occupant Statistics:</B></FONT><BR>" //Blah obvious
|
dat = "<font color='blue'><B>Occupant Statistics:</B></FONT><BR>" //Blah obvious
|
||||||
if (occupant) //is there REALLY someone in there?
|
if(occupant && occupant.dna) //is there REALLY someone in there?
|
||||||
if(occupant.mutations & HUSK)
|
if(occupant.mutations2 & NOCLONE)
|
||||||
dat += "The occupant's DNA structure is of an unknown configuration, please insert a subject with a standard DNA structure.<BR><BR>" //NOPE. -Pete
|
dat += "The occupant's DNA structure is ruined beyond recognition, please insert a subject with an intact DNA structure.<BR><BR>" //NOPE. -Pete
|
||||||
dat += text("<A href='?src=\ref[];buffermenu=1'>View/Edit/Transfer Buffer</A><BR><BR>", src)
|
dat += text("<A href='?src=\ref[];buffermenu=1'>View/Edit/Transfer Buffer</A><BR><BR>", src)
|
||||||
dat += text("<A href='?src=\ref[];radset=1'>Radiation Emitter Settings</A><BR><BR>", src)
|
dat += text("<A href='?src=\ref[];radset=1'>Radiation Emitter Settings</A><BR><BR>", src)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ var
|
|||||||
message_admins("Blob spawned and expanding, report created")
|
message_admins("Blob spawned and expanding, report created")
|
||||||
|
|
||||||
if(ticker && ticker.minds && ticker.minds.len)
|
if(ticker && ticker.minds && ticker.minds.len)
|
||||||
var/player_based_cores = round(ticker.minds.len, players_per_core)
|
var/player_based_cores = round(ticker.minds.len/players_per_core, 1)
|
||||||
if(player_based_cores > cores_to_spawn)
|
if(player_based_cores > cores_to_spawn)
|
||||||
cores_to_spawn = player_based_cores
|
cores_to_spawn = player_based_cores
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ var
|
|||||||
if(!blobs.len) return
|
if(!blobs.len) return
|
||||||
expanding = 1
|
expanding = 1
|
||||||
|
|
||||||
for(var/i = 1 to 10)
|
for(var/i = 1 to 5)
|
||||||
sleep(-1)
|
sleep(-1)
|
||||||
if(!blobs.len) break
|
if(!blobs.len) break
|
||||||
var/obj/effect/blob/B = pick(blobs)
|
var/obj/effect/blob/B = pick(blobs)
|
||||||
@@ -98,8 +98,8 @@ var
|
|||||||
aiPlayer << "Laws Updated: [law]"
|
aiPlayer << "Laws Updated: [law]"
|
||||||
|
|
||||||
stage = -1
|
stage = -1
|
||||||
// next stage 1-4 minutes later
|
// next stage 1 minute later
|
||||||
spawn(600*rand(1,4))
|
spawn(600)
|
||||||
stage = 1
|
stage = 1
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -273,7 +273,7 @@
|
|||||||
|
|
||||||
if (!disk_rescued && station_was_nuked && !herp)
|
if (!disk_rescued && station_was_nuked && !herp)
|
||||||
feedback_set_details("round_end_result","win - syndicate nuke")
|
feedback_set_details("round_end_result","win - syndicate nuke")
|
||||||
world << "<FONT size = 3><B>Syndicate Victory!</B></FONT>"
|
world << "<FONT size = 3><B>Syndicate Major Victory!</B></FONT>"
|
||||||
world << "<B>[syndicate_name()] operatives have destroyed [station_name()]!</B>"
|
world << "<B>[syndicate_name()] operatives have destroyed [station_name()]!</B>"
|
||||||
|
|
||||||
else if (!disk_rescued && station_was_nuked && herp)
|
else if (!disk_rescued && station_was_nuked && herp)
|
||||||
@@ -283,7 +283,7 @@
|
|||||||
|
|
||||||
else if (!disk_rescued && !station_was_nuked && derp && !herp)
|
else if (!disk_rescued && !station_was_nuked && derp && !herp)
|
||||||
feedback_set_details("round_end_result","halfwin - blew wrong station")
|
feedback_set_details("round_end_result","halfwin - blew wrong station")
|
||||||
world << "<FONT size = 3><B>Neutral Victory</B></FONT>"
|
world << "<FONT size = 3><B>Crew Minor Victory</B></FONT>"
|
||||||
world << "<B>[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].</B> Next time, don't lose the disk!"
|
world << "<B>[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].</B> Next time, don't lose the disk!"
|
||||||
|
|
||||||
else if (!disk_rescued && !station_was_nuked && derp && herp)
|
else if (!disk_rescued && !station_was_nuked && derp && herp)
|
||||||
@@ -291,19 +291,24 @@
|
|||||||
world << "<FONT size = 3><B>[syndicate_name()] operatives have earned Darwin Award!</B></FONT>"
|
world << "<FONT size = 3><B>[syndicate_name()] operatives have earned Darwin Award!</B></FONT>"
|
||||||
world << "<B>[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.</B> Next time, don't lose the disk!"
|
world << "<B>[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.</B> Next time, don't lose the disk!"
|
||||||
|
|
||||||
|
else if ( disk_rescued && is_operatives_are_dead())
|
||||||
|
feedback_set_details("round_end_result","loss - evacuation - disk secured - syndi team dead")
|
||||||
|
world << "<FONT size = 3><B>Crew Major Victory!</B></FONT>"
|
||||||
|
world << "<B>The Research Staff has saved the disc and killed the [syndicate_name()] Operatives</B>"
|
||||||
|
|
||||||
else if ( disk_rescued )
|
else if ( disk_rescued )
|
||||||
feedback_set_details("round_end_result","loss - evacuation - disk secured")
|
feedback_set_details("round_end_result","loss - evacuation - disk secured")
|
||||||
world << "<FONT size = 3><B>Crew Victory</B></FONT>"
|
world << "<FONT size = 3><B>Crew Major Victory</B></FONT>"
|
||||||
world << "<B>The Research Staff has saved the disc and stopped the [syndicate_name()] Operatives!</B>"
|
world << "<B>The Research Staff has saved the disc and stopped the [syndicate_name()] Operatives!</B>"
|
||||||
|
|
||||||
else if (!disk_rescued && is_operatives_are_dead())
|
else if (!disk_rescued && is_operatives_are_dead())
|
||||||
feedback_set_details("round_end_result","loss - evacuation - disk not secured")
|
feedback_set_details("round_end_result","loss - evacuation - disk not secured")
|
||||||
world << "<FONT size = 3><B>Crew Victory</B></FONT>"
|
world << "<FONT size = 3><B>Syndicate Minor Victory!</B></FONT>"
|
||||||
world << "<B>The Research Staff has stopped the [syndicate_name()] Operatives!</B>"
|
world << "<B>The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!</B>"
|
||||||
|
|
||||||
else if (!disk_rescued && crew_evacuated)
|
else if (!disk_rescued && crew_evacuated)
|
||||||
feedback_set_details("round_end_result","halfwin - detonation averted")
|
feedback_set_details("round_end_result","halfwin - detonation averted")
|
||||||
world << "<FONT size = 3><B>Neutral Victory</B></FONT>"
|
world << "<FONT size = 3><B>Syndicate Minor Victory!</B></FONT>"
|
||||||
world << "<B>[syndicate_name()] operatives recovered the abandoned authentication disk but detonation of [station_name()] was averted.</B> Next time, don't lose the disk!"
|
world << "<B>[syndicate_name()] operatives recovered the abandoned authentication disk but detonation of [station_name()] was averted.</B> Next time, don't lose the disk!"
|
||||||
|
|
||||||
else if (!disk_rescued && !crew_evacuated)
|
else if (!disk_rescued && !crew_evacuated)
|
||||||
|
|||||||
@@ -6,10 +6,10 @@
|
|||||||
desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefacts power."
|
desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefacts power."
|
||||||
w_class = 1.0
|
w_class = 1.0
|
||||||
flags = FPRINT | TABLEPASS | ONBELT
|
flags = FPRINT | TABLEPASS | ONBELT
|
||||||
var/flush = null
|
|
||||||
origin_tech = "bluespace=4;materials=4"
|
origin_tech = "bluespace=4;materials=4"
|
||||||
|
var/imprinted = "empty"
|
||||||
|
|
||||||
|
//////////////////////////////Capturing////////////////////////////////////////////////////////
|
||||||
|
|
||||||
attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
||||||
if(!istype(M, /mob/living/carbon/human))//If target is not a human.
|
if(!istype(M, /mob/living/carbon/human))//If target is not a human.
|
||||||
@@ -22,14 +22,25 @@
|
|||||||
transfer_soul("VICTIM", M, user)
|
transfer_soul("VICTIM", M, user)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/*attack(mob/living/simple_animal/shade/M as mob, mob/user as mob)//APPARENTLY THEY NEED THEIR OWN SPECIAL SNOWFLAKE CODE IN THE LIVING ANIMAL DEFINES
|
||||||
|
if(!istype(M, /mob/living/simple_animal/shade))//If target is not a shade
|
||||||
|
return ..()
|
||||||
|
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to capture the soul of [M.name] ([M.ckey])</font>")
|
||||||
|
|
||||||
|
transfer_soul("SHADE", M, user)
|
||||||
|
return*/
|
||||||
|
///////////////////Options for using captured souls///////////////////////////////////////
|
||||||
|
|
||||||
attack_self(mob/user)
|
attack_self(mob/user)
|
||||||
if (!in_range(src, user))
|
if (!in_range(src, user))
|
||||||
return
|
return
|
||||||
user.machine = src
|
user.machine = src
|
||||||
var/dat = "<TT><B>Soul Stone</B><BR>"
|
var/dat = "<TT><B>Soul Stone</B><BR>"
|
||||||
for(var/mob/living/carbon/human/A in src)
|
for(var/mob/living/simple_animal/shade/A in src)
|
||||||
dat += "Captured Soul: [A.name]<br>"
|
dat += "Captured Soul: [A.name]<br>"
|
||||||
|
dat += {"<A href='byond://?src=\ref[src];choice=Summon'>Summon Shade</A>"}
|
||||||
|
dat += "<br>"
|
||||||
|
dat += {"<a href='byond://?src=\ref[src];choice=Close'> Close</a>"}
|
||||||
user << browse(dat, "window=aicard")
|
user << browse(dat, "window=aicard")
|
||||||
onclose(user, "aicard")
|
onclose(user, "aicard")
|
||||||
return
|
return
|
||||||
@@ -37,46 +48,97 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Topic(href, href_list)
|
||||||
|
var/mob/U = usr
|
||||||
|
if (!in_range(src, U)||U.machine!=src)
|
||||||
|
U << browse(null, "window=aicard")
|
||||||
|
U.machine = null
|
||||||
|
return
|
||||||
|
|
||||||
|
add_fingerprint(U)
|
||||||
|
U.machine = src
|
||||||
|
|
||||||
|
switch(href_list["choice"])//Now we switch based on choice.
|
||||||
|
if ("Close")
|
||||||
|
U << browse(null, "window=aicard")
|
||||||
|
U.machine = null
|
||||||
|
return
|
||||||
|
|
||||||
|
if ("Summon")
|
||||||
|
for(var/mob/living/simple_animal/shade/A in src)
|
||||||
|
A.nodamage = 0
|
||||||
|
A.canmove = 1
|
||||||
|
A << "<b>You have been released from your prison, but you are still bound to [U.name]'s will. Help them suceed in their goals at all costs.</b>"
|
||||||
|
A.loc = U.loc
|
||||||
|
A.cancel_camera()
|
||||||
|
src.icon_state = "soulstone"
|
||||||
|
attack_self(U)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////Proc for moving soul in and out off stone//////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/obj/item/proc/transfer_soul(var/choice as text, var/target, var/mob/U as mob).
|
/obj/item/proc/transfer_soul(var/choice as text, var/target, var/mob/U as mob).
|
||||||
switch(choice)
|
switch(choice)
|
||||||
if("VICTIM")
|
if("VICTIM")
|
||||||
var/mob/living/carbon/human/T = target
|
var/mob/living/carbon/human/T = target
|
||||||
var/obj/item/device/soulstone/C = src
|
var/obj/item/device/soulstone/C = src
|
||||||
if (T.stat == 0)
|
if(C.imprinted != "empty")
|
||||||
U << "\red <b>Capture failed!</b>: \black Kill or maim the victim first!"
|
U << "\red <b>Capture failed!</b>: \black The soul stone has already been imprinted with [C.imprinted]'s mind!"
|
||||||
else
|
else
|
||||||
if(T.ckey == null)
|
if (T.stat == 0)
|
||||||
U << "\red <b>Capture failed!</b>: \black The soul has already fled it's mortal frame."
|
U << "\red <b>Capture failed!</b>: \black Kill or maim the victim first!"
|
||||||
else
|
else
|
||||||
if(C.contents.len)
|
if(T.client == null)
|
||||||
U << "\red <b>Capture failed!</b>: \black The soul stone is full! Use or free an existing soul to make room."
|
U << "\red <b>Capture failed!</b>: \black The soul has already fled it's mortal frame."
|
||||||
else
|
else
|
||||||
for(var/obj/item/W in T)
|
if(C.contents.len)
|
||||||
T.drop_from_slot(W)
|
U << "\red <b>Capture failed!</b>: \black The soul stone is full! Use or free an existing soul to make room."
|
||||||
new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton
|
else
|
||||||
T.invisibility = 101
|
for(var/obj/item/W in T)
|
||||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc )
|
T.drop_from_slot(W)
|
||||||
animation.icon_state = "blank"
|
new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton
|
||||||
animation.icon = 'mob.dmi'
|
T.invisibility = 101
|
||||||
animation.master = T
|
var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc )
|
||||||
flick("dust-h", animation)
|
animation.icon_state = "blank"
|
||||||
del(animation)
|
animation.icon = 'mob.dmi'
|
||||||
T.nodamage = 1 //So they won't suffocate inside the stone
|
animation.master = T
|
||||||
T.canmove = 0//Can't move out of the soul stone
|
flick("dust-h", animation)
|
||||||
T.loc = C//Throw "soul" into the stone.
|
del(animation)
|
||||||
T.stat = 0//Revive the victim as a "soul"
|
var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc )
|
||||||
T.mutantrace = "trappedsoul" //To prevent suicide/maybe some other special effects later on
|
S.loc = C //put shade in stone
|
||||||
T.setToxLoss(0)
|
S.nodamage = 1 //So they won't die inside the stone somehow
|
||||||
T.setOxyLoss(0)
|
S.canmove = 0//Can't move out of the soul stone
|
||||||
T.setCloneLoss(0)
|
S.name = "Shade of [T.name]"
|
||||||
T.SetParalysis(0)
|
if (T.client)
|
||||||
T.SetStunned(0)
|
T.client.mob = S
|
||||||
T.SetWeakened(0)
|
S.cancel_camera()
|
||||||
T.radiation = 0
|
C.icon_state = "soulstone2"
|
||||||
T.heal_overall_damage(T.getBruteLoss(), T.getFireLoss())
|
C.name = "Soul Stone: [S.name]"
|
||||||
T.cancel_camera()
|
S << "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs."
|
||||||
T.nodamage = 1 //So they won't suffocate inside the stone
|
U << "\blue <b>Capture successful!</b>: \black [T.name]'s soul has been ripped from their body and stored within the soul stone."
|
||||||
|
S << "The soulstone has been imprinted with [S.name]'s mind, it will no longer react to other souls."
|
||||||
|
C.imprinted = "[S.name]"
|
||||||
|
del T
|
||||||
|
if("SHADE")
|
||||||
|
var/mob/living/simple_animal/shade/T = target
|
||||||
|
var/obj/item/device/soulstone/C = src
|
||||||
|
if (T.alive == 0)
|
||||||
|
U << "\red <b>Capture failed!</b>: \black The shade has already been banished!"
|
||||||
|
else
|
||||||
|
if(C.contents.len)
|
||||||
|
U << "\red <b>Capture failed!</b>: \black The soul stone is full! Use or free an existing soul to make room."
|
||||||
|
else
|
||||||
|
if(T.name != C.imprinted)
|
||||||
|
U << "\red <b>Capture failed!</b>: \black The soul stone has already been imprinted with [C.imprinted]'s mind!"
|
||||||
|
else
|
||||||
|
T.loc = C //put shade in stone
|
||||||
|
T.nodamage = 1
|
||||||
|
T.canmove = 0
|
||||||
|
T.health = T.max_health
|
||||||
C.icon_state = "soulstone2"
|
C.icon_state = "soulstone2"
|
||||||
T << "Your soul has been captured!"
|
T << "Your soul has been recaptured by the soul stone, it's arcane energies reknitting your ethereal form"
|
||||||
U << "\blue <b>Capture successful!</b>: \black [T.name]'s soul has been ripped from their body and stored within the soul stone."
|
U << "\blue <b>Capture successful!</b>: \black [T.name]'s has been recaptured and stored within the soul stone."
|
||||||
return
|
return
|
||||||
@@ -28,10 +28,13 @@
|
|||||||
dat += "<HR>"
|
dat += "<HR>"
|
||||||
dat += "<B>Artefacts:</B><BR>"
|
dat += "<B>Artefacts:</B><BR>"
|
||||||
dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.<BR>"
|
dat += "Powerful items imbued with eldritch magics. Summoning one will count towards your maximum number of spells.<BR>"
|
||||||
|
dat += "It is recommended that only experienced wizards attempt to wield such artefacts.<BR>"
|
||||||
dat += "<HR>"
|
dat += "<HR>"
|
||||||
dat += "<A href='byond://?src=\ref[src];spell_choice=14'>Staff of Change</A><BR>"
|
dat += "<A href='byond://?src=\ref[src];spell_choice=14'>Staff of Change</A><BR>"
|
||||||
dat += "<HR>"
|
dat += "<HR>"
|
||||||
dat += "<A href='byond://?src=\ref[src];spell_choice=15'>Re-memorize Spells</A><BR>"
|
dat += "<A href='byond://?src=\ref[src];spell_choice=15'>Six Soul Stone Shards</A><BR>"
|
||||||
|
dat += "<HR>"
|
||||||
|
dat += "<A href='byond://?src=\ref[src];spell_choice=16'>Re-memorize Spells</A><BR>"
|
||||||
user << browse(dat, "window=radio")
|
user << browse(dat, "window=radio")
|
||||||
onclose(user, "radio")
|
onclose(user, "radio")
|
||||||
return
|
return
|
||||||
@@ -106,6 +109,10 @@
|
|||||||
new /obj/item/weapon/gun/energy/staff(get_turf(usr))
|
new /obj/item/weapon/gun/energy/staff(get_turf(usr))
|
||||||
src.temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
|
src.temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
|
||||||
src.max_uses--
|
src.max_uses--
|
||||||
|
if ("15")
|
||||||
|
new /obj/item/weapon/storage/belt/soulstone/full(get_turf(usr))
|
||||||
|
src.temp = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying"
|
||||||
|
src.max_uses--
|
||||||
else if(spell_type == "object")
|
else if(spell_type == "object")
|
||||||
var/list/available_spells = list("Magic Missile","Fireball","Disintegrate","Disable Tech","Smoke","Blind","Mind Transfer","Forcewall","Blink","Teleport","Mutate","Ethereal Jaunt","Knock")
|
var/list/available_spells = list("Magic Missile","Fireball","Disintegrate","Disable Tech","Smoke","Blind","Mind Transfer","Forcewall","Blink","Teleport","Mutate","Ethereal Jaunt","Knock")
|
||||||
var/already_knows = 0
|
var/already_knows = 0
|
||||||
@@ -160,7 +167,11 @@
|
|||||||
new /obj/item/weapon/gun/energy/staff(get_turf(usr))
|
new /obj/item/weapon/gun/energy/staff(get_turf(usr))
|
||||||
src.temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
|
src.temp = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
|
||||||
src.max_uses--
|
src.max_uses--
|
||||||
if (href_list["spell_choice"] == "15")
|
if ("15")
|
||||||
|
new /obj/item/weapon/storage/belt/soulstone/full(get_turf(usr))
|
||||||
|
src.temp = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying"
|
||||||
|
src.max_uses--
|
||||||
|
if (href_list["spell_choice"] == "16")
|
||||||
var/area/wizard_station/A = locate()
|
var/area/wizard_station/A = locate()
|
||||||
if(usr in A.contents)
|
if(usr in A.contents)
|
||||||
src.uses = src.max_uses
|
src.uses = src.max_uses
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
while(!accepted)
|
while(!accepted)
|
||||||
if(!B) break // prevents possible runtime errors
|
if(!B) break // prevents possible runtime errors
|
||||||
|
|
||||||
switch(input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Daederic Scroll", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon"))
|
switch(input(H,"Which bible style would you like?") in list("Bible", "Koran", "Scrapbook", "Creeper", "White Bible", "Holy Light", "Athiest", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "the bible melts", "Necronomicon"))
|
||||||
if("Koran")
|
if("Koran")
|
||||||
B.icon_state = "koran"
|
B.icon_state = "koran"
|
||||||
B.item_state = "koran"
|
B.item_state = "koran"
|
||||||
@@ -80,9 +80,6 @@
|
|||||||
if("Scrapbook")
|
if("Scrapbook")
|
||||||
B.icon_state = "scrapbook"
|
B.icon_state = "scrapbook"
|
||||||
B.item_state = "scrapbook"
|
B.item_state = "scrapbook"
|
||||||
if("Daederic Scroll")
|
|
||||||
B.icon_state = "daederic_scroll"
|
|
||||||
B.item_state = "daederic"
|
|
||||||
if("Creeper")
|
if("Creeper")
|
||||||
B.icon_state = "creeper"
|
B.icon_state = "creeper"
|
||||||
B.item_state = "syringe_kit"
|
B.item_state = "syringe_kit"
|
||||||
|
|||||||
@@ -78,6 +78,7 @@
|
|||||||
if(!H) return 0
|
if(!H) return 0
|
||||||
H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears)
|
H.equip_if_possible(new /obj/item/device/radio/headset/headset_eng(H), H.slot_ears)
|
||||||
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back)
|
||||||
|
H.equip_if_possible(new /obj/item/weapon/storage/box/engineer(H.back), H.slot_in_backpack)
|
||||||
H.equip_if_possible(new /obj/item/clothing/under/rank/atmospheric_technician(H), H.slot_w_uniform)
|
H.equip_if_possible(new /obj/item/clothing/under/rank/atmospheric_technician(H), H.slot_w_uniform)
|
||||||
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes)
|
||||||
H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt)
|
H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt)
|
||||||
|
|||||||
@@ -244,7 +244,7 @@
|
|||||||
var/amount = max(0.15, 1)
|
var/amount = max(0.15, 1)
|
||||||
M.adjustOxyLoss(-amount)
|
M.adjustOxyLoss(-amount)
|
||||||
else
|
else
|
||||||
M.oxyloss = 0
|
M.adjustOxyLoss(-12)
|
||||||
M.updatehealth()
|
M.updatehealth()
|
||||||
M.AdjustParalysis(-4)
|
M.AdjustParalysis(-4)
|
||||||
M.AdjustWeakened(-4)
|
M.AdjustWeakened(-4)
|
||||||
|
|||||||
@@ -222,7 +222,7 @@
|
|||||||
onclose(user, "AAlarmwires")
|
onclose(user, "AAlarmwires")
|
||||||
|
|
||||||
if(!shorted)
|
if(!shorted)
|
||||||
user << browse(return_text(),"window=air_alarm")
|
user << browse(return_text(user),"window=air_alarm")
|
||||||
onclose(user, "air_alarm")
|
onclose(user, "air_alarm")
|
||||||
refresh_all()
|
refresh_all()
|
||||||
|
|
||||||
@@ -472,8 +472,8 @@
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/machinery/alarm/proc/return_text()
|
/obj/machinery/alarm/proc/return_text(mob/user)
|
||||||
if(!(istype(usr, /mob/living/silicon)) && locked)
|
if(!(istype(user, /mob/living/silicon)) && locked)
|
||||||
return "<html><head><title>[src]</title></head><body>[return_status()]<hr><i>(Swipe ID card to unlock interface)</i></body></html>"
|
return "<html><head><title>[src]</title></head><body>[return_status()]<hr><i>(Swipe ID card to unlock interface)</i></body></html>"
|
||||||
else
|
else
|
||||||
return "<html><head><title>[src]</title></head><body>[return_status()]<hr>[return_controls()]</body></html>"
|
return "<html><head><title>[src]</title></head><body>[return_status()]<hr>[return_controls()]</body></html>"
|
||||||
|
|||||||
@@ -153,7 +153,7 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/obj/machinery/portable_atmospherics/canister/blob_act()
|
/obj/machinery/portable_atmospherics/canister/blob_act()
|
||||||
src.health -= 1
|
src.health -= 200
|
||||||
healthcheck()
|
healthcheck()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -258,6 +258,9 @@
|
|||||||
O << "The screen bursts into static."
|
O << "The screen bursts into static."
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/camera/emp_proof/emp_act(severity)
|
||||||
|
return
|
||||||
|
|
||||||
/obj/machinery/camera/ex_act(severity)
|
/obj/machinery/camera/ex_act(severity)
|
||||||
if(src.invuln)
|
if(src.invuln)
|
||||||
return
|
return
|
||||||
@@ -356,11 +359,13 @@
|
|||||||
O.show_message(text("\red [] has deactivated []!", user, src), 1)
|
O.show_message(text("\red [] has deactivated []!", user, src), 1)
|
||||||
playsound(src.loc, 'Wirecutter.ogg', 100, 1)
|
playsound(src.loc, 'Wirecutter.ogg', 100, 1)
|
||||||
icon_state = "camera1"
|
icon_state = "camera1"
|
||||||
|
add_hiddenprint(user)
|
||||||
else
|
else
|
||||||
for(var/mob/O in viewers(user, null))
|
for(var/mob/O in viewers(user, null))
|
||||||
O.show_message(text("\red [] has reactivated []!", user, src), 1)
|
O.show_message(text("\red [] has reactivated []!", user, src), 1)
|
||||||
playsound(src.loc, 'Wirecutter.ogg', 100, 1)
|
playsound(src.loc, 'Wirecutter.ogg', 100, 1)
|
||||||
icon_state = "camera"
|
icon_state = "camera"
|
||||||
|
add_hiddenprint(user)
|
||||||
// now disconnect anyone using the camera
|
// now disconnect anyone using the camera
|
||||||
//Apparently, this will disconnect anyone even if the camera was re-activated.
|
//Apparently, this will disconnect anyone even if the camera was re-activated.
|
||||||
//I guess that doesn't matter since they can't use it anyway?
|
//I guess that doesn't matter since they can't use it anyway?
|
||||||
|
|||||||
@@ -400,9 +400,8 @@
|
|||||||
emergency_shuttle.fake_recall = rand(300,500)
|
emergency_shuttle.fake_recall = rand(300,500)
|
||||||
|
|
||||||
if(ticker.mode.name == "blob")
|
if(ticker.mode.name == "blob")
|
||||||
if(ticker.mode:declared)
|
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
||||||
user << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
return
|
||||||
return
|
|
||||||
|
|
||||||
emergency_shuttle.incall()
|
emergency_shuttle.incall()
|
||||||
log_game("[key_name(user)] has called the shuttle.")
|
log_game("[key_name(user)] has called the shuttle.")
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ obj/item/weapon/circuitboard/rdserver
|
|||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
|
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/telecomms/broadcaster
|
/obj/item/weapon/circuitboard/telecomms/broadcaster
|
||||||
name = "Circuit Board (Bus Mainframe)"
|
name = "Circuit Board (Subspace Broadcaster)"
|
||||||
build_path = "/obj/machinery/telecomms/broadcaster"
|
build_path = "/obj/machinery/telecomms/broadcaster"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = "programming=4;engineering=4;bluespace=2"
|
origin_tech = "programming=4;engineering=4;bluespace=2"
|
||||||
@@ -361,3 +361,7 @@ obj/item/weapon/circuitboard/rdserver
|
|||||||
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1,
|
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1,
|
||||||
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1,
|
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1,
|
||||||
"/obj/item/weapon/stock_parts/micro_laser/high" = 4)
|
"/obj/item/weapon/stock_parts/micro_laser/high" = 4)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -238,6 +238,18 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
|||||||
doortype = 13
|
doortype = 13
|
||||||
|
|
||||||
|
|
||||||
|
mining
|
||||||
|
name = "Mining Airlock"
|
||||||
|
icon = 'Doormining.dmi'
|
||||||
|
doortype = 18
|
||||||
|
|
||||||
|
|
||||||
|
atmos
|
||||||
|
name = "Atmospherics Airlock"
|
||||||
|
icon = 'Dooratmo.dmi'
|
||||||
|
doortype = 19
|
||||||
|
|
||||||
|
|
||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
if (src.closeOtherId != null)
|
if (src.closeOtherId != null)
|
||||||
|
|||||||
@@ -1,3 +1,21 @@
|
|||||||
|
/obj/machinery/door
|
||||||
|
name = "Door"
|
||||||
|
desc = "It opens and closes."
|
||||||
|
icon = 'doorint.dmi'
|
||||||
|
icon_state = "door1"
|
||||||
|
opacity = 1
|
||||||
|
density = 1
|
||||||
|
layer = 2.7
|
||||||
|
anchored = 1
|
||||||
|
var/secondsElectrified = 0
|
||||||
|
var/visible = 1
|
||||||
|
var/p_open = 0
|
||||||
|
var/operating = 0
|
||||||
|
var/autoclose = 0
|
||||||
|
var/glass = 0
|
||||||
|
var/forcecrush = 0
|
||||||
|
var/holdopen = 0
|
||||||
|
|
||||||
/obj/machinery/door/Bumped(atom/AM)
|
/obj/machinery/door/Bumped(atom/AM)
|
||||||
if(p_open || operating) return
|
if(p_open || operating) return
|
||||||
if(ismob(AM))
|
if(ismob(AM))
|
||||||
|
|||||||
@@ -1,73 +1,95 @@
|
|||||||
/var/const/OPEN = 1
|
/var/const/OPEN = 1
|
||||||
/var/const/CLOSED = 2
|
/var/const/CLOSED = 2
|
||||||
|
|
||||||
/obj/machinery/door/firedoor/Bumped(atom/AM)
|
|
||||||
if(p_open || operating)
|
/obj/machinery/door/firedoor
|
||||||
return
|
name = "Firelock"
|
||||||
if(!density)
|
desc = "Apply crowbar"
|
||||||
return ..()
|
icon = 'Doorfire.dmi'
|
||||||
else
|
icon_state = "door_open"
|
||||||
|
var/blocked = 0
|
||||||
|
opacity = 0
|
||||||
|
density = 0
|
||||||
|
var/nextstate = null
|
||||||
|
|
||||||
|
|
||||||
|
Bumped(atom/AM)
|
||||||
|
if(p_open || operating) return
|
||||||
|
if(!density) return ..()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/door/firedoor/power_change()
|
power_change()
|
||||||
if( powered(ENVIRON) )
|
if(powered(ENVIRON))
|
||||||
stat &= ~NOPOWER
|
stat &= ~NOPOWER
|
||||||
else
|
else
|
||||||
stat |= NOPOWER
|
stat |= NOPOWER
|
||||||
|
return
|
||||||
|
|
||||||
/obj/machinery/door/firedoor/attackby(obj/item/weapon/C as obj, mob/user as mob)
|
|
||||||
src.add_fingerprint(user)
|
attackby(obj/item/weapon/C as obj, mob/user as mob)
|
||||||
if ((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density))
|
src.add_fingerprint(user)
|
||||||
var/obj/item/weapon/weldingtool/W = C
|
if(operating) return//Already doing something.
|
||||||
if(W.remove_fuel(0, user))
|
if(istype(C, /obj/item/weapon/weldingtool))
|
||||||
src.blocked = !src.blocked
|
var/obj/item/weapon/weldingtool/W = C
|
||||||
user << text("\red You [blocked?"welded":"unwelded"] the [src]")
|
if(W.remove_fuel(0, user))
|
||||||
update_icon()
|
src.blocked = !src.blocked
|
||||||
return
|
user << text("\red You [blocked?"welded":"unwelded"] the [src]")
|
||||||
if (istype(C, /obj/item/weapon/crowbar) || (istype(C,/obj/item/weapon/fireaxe) && C.wielded == 1) )
|
update_icon()
|
||||||
if (!src.blocked && !src.operating)
|
return
|
||||||
|
|
||||||
|
if (istype(C, /obj/item/weapon/crowbar) || (istype(C,/obj/item/weapon/fireaxe) && C.wielded == 1))
|
||||||
|
if(blocked || operating) return
|
||||||
if(src.density)
|
if(src.density)
|
||||||
spawn( 0 )
|
spawn(0)
|
||||||
src.operating = 1
|
open()
|
||||||
|
|
||||||
animate("opening")
|
|
||||||
sleep(15)
|
|
||||||
layer = 2.7
|
|
||||||
src.density = 0
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
src.sd_SetOpacity(0)
|
|
||||||
src.operating = 0
|
|
||||||
return
|
return
|
||||||
else //close it up again
|
else //close it up again
|
||||||
spawn( 0 )
|
spawn(0)
|
||||||
src.operating = 1
|
close()
|
||||||
|
|
||||||
animate("closing")
|
|
||||||
src.density = 1
|
|
||||||
layer = 3.1
|
|
||||||
sleep(15)
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
src.sd_SetOpacity(1)
|
|
||||||
src.operating = 0
|
|
||||||
return
|
return
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/door/firedoor/process()
|
|
||||||
if(src.operating)
|
|
||||||
return
|
return
|
||||||
if(src.nextstate)
|
|
||||||
if(src.nextstate == OPEN && src.density)
|
|
||||||
spawn()
|
|
||||||
src.open()
|
|
||||||
else if(src.nextstate == CLOSED && !src.density)
|
|
||||||
spawn()
|
|
||||||
src.close()
|
|
||||||
src.nextstate = null
|
|
||||||
|
|
||||||
|
|
||||||
|
process()
|
||||||
|
if(operating || stat & NOPOWER || !nextstate) return
|
||||||
|
switch(nextstate)
|
||||||
|
if(OPEN)
|
||||||
|
spawn()
|
||||||
|
open()
|
||||||
|
if(CLOSED)
|
||||||
|
spawn()
|
||||||
|
close()
|
||||||
|
nextstate = null
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
animate(animation)
|
||||||
|
switch(animation)
|
||||||
|
if("opening")
|
||||||
|
flick("door_opening", src)
|
||||||
|
if("closing")
|
||||||
|
flick("door_closing", src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
update_icon()
|
||||||
|
overlays = null
|
||||||
|
if(density)
|
||||||
|
icon_state = "door_closed"
|
||||||
|
if(blocked)
|
||||||
|
overlays += "welded"
|
||||||
|
else
|
||||||
|
icon_state = "door_open"
|
||||||
|
if(blocked)
|
||||||
|
overlays += "welded_open"
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//border_only fire doors are special when it comes to air groups
|
||||||
/obj/machinery/door/firedoor/border_only
|
/obj/machinery/door/firedoor/border_only
|
||||||
|
|
||||||
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||||
if(air_group)
|
if(air_group)
|
||||||
var/direction = get_dir(src,target)
|
var/direction = get_dir(src,target)
|
||||||
@@ -78,9 +100,9 @@
|
|||||||
return (dir != direction)
|
return (dir != direction)
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
update_nearby_tiles(need_rebuild)
|
update_nearby_tiles(need_rebuild)
|
||||||
if(!air_master) return 0
|
if(!air_master) return 0
|
||||||
|
|
||||||
@@ -98,9 +120,7 @@
|
|||||||
air_master.groups_to_rebuild += destination.parent
|
air_master.groups_to_rebuild += destination.parent
|
||||||
else
|
else
|
||||||
air_master.tiles_to_update += destination
|
air_master.tiles_to_update += destination
|
||||||
|
|
||||||
else
|
else
|
||||||
if(istype(source)) air_master.tiles_to_update += source
|
if(istype(source)) air_master.tiles_to_update += source
|
||||||
if(istype(destination)) air_master.tiles_to_update += destination
|
if(istype(destination)) air_master.tiles_to_update += destination
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
//cael - added this for the lockdown computer
|
/obj/machinery/door/poddoor
|
||||||
/obj/machinery/door/poddoor/Topic(href, href_list)
|
name = "Podlock"
|
||||||
if(href_list["close"])
|
desc = "A type of powerful blast door."
|
||||||
close()
|
icon = 'rapid_pdoor.dmi'
|
||||||
if(href_list["open"])
|
icon_state = "pdoor1"
|
||||||
open()
|
var/id = 1.0
|
||||||
|
var/networkTag = ""
|
||||||
|
|
||||||
/obj/machinery/door/poddoor/Bumped(atom/AM)
|
/obj/machinery/door/poddoor/Bumped(atom/AM)
|
||||||
if(!density)
|
if(!density)
|
||||||
@@ -271,3 +272,106 @@
|
|||||||
sleep(10)
|
sleep(10)
|
||||||
src.operating = 0
|
src.operating = 0
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door/poddoor/two_tile_hor
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f1
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f2
|
||||||
|
icon = '1x2blast_hor.dmi'
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
|
||||||
|
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(src,EAST))
|
||||||
|
f1.density = density
|
||||||
|
f2.density = density
|
||||||
|
f1.sd_SetOpacity(opacity)
|
||||||
|
f2.sd_SetOpacity(opacity)
|
||||||
|
|
||||||
|
Del()
|
||||||
|
del f1
|
||||||
|
del f2
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/door/poddoor/two_tile_ver
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f1
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f2
|
||||||
|
icon = '1x2blast_vert.dmi'
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
|
||||||
|
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(src,NORTH))
|
||||||
|
f1.density = density
|
||||||
|
f2.density = density
|
||||||
|
f1.sd_SetOpacity(opacity)
|
||||||
|
f2.sd_SetOpacity(opacity)
|
||||||
|
|
||||||
|
Del()
|
||||||
|
del f1
|
||||||
|
del f2
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/door/poddoor/four_tile_hor
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f1
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f2
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f3
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f4
|
||||||
|
icon = '1x4blast_hor.dmi'
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
|
||||||
|
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,EAST))
|
||||||
|
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,EAST))
|
||||||
|
f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,EAST))
|
||||||
|
f1.density = density
|
||||||
|
f2.density = density
|
||||||
|
f3.density = density
|
||||||
|
f4.density = density
|
||||||
|
f1.sd_SetOpacity(opacity)
|
||||||
|
f2.sd_SetOpacity(opacity)
|
||||||
|
f4.sd_SetOpacity(opacity)
|
||||||
|
f3.sd_SetOpacity(opacity)
|
||||||
|
|
||||||
|
Del()
|
||||||
|
del f1
|
||||||
|
del f2
|
||||||
|
del f3
|
||||||
|
del f4
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/door/poddoor/four_tile_ver
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f1
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f2
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f3
|
||||||
|
var/obj/machinery/door/poddoor/filler_object/f4
|
||||||
|
icon = '1x4blast_vert.dmi'
|
||||||
|
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
f1 = new/obj/machinery/door/poddoor/filler_object (src.loc)
|
||||||
|
f2 = new/obj/machinery/door/poddoor/filler_object (get_step(f1,NORTH))
|
||||||
|
f3 = new/obj/machinery/door/poddoor/filler_object (get_step(f2,NORTH))
|
||||||
|
f4 = new/obj/machinery/door/poddoor/filler_object (get_step(f3,NORTH))
|
||||||
|
f1.density = density
|
||||||
|
f2.density = density
|
||||||
|
f3.density = density
|
||||||
|
f4.density = density
|
||||||
|
f1.sd_SetOpacity(opacity)
|
||||||
|
f2.sd_SetOpacity(opacity)
|
||||||
|
f4.sd_SetOpacity(opacity)
|
||||||
|
f3.sd_SetOpacity(opacity)
|
||||||
|
|
||||||
|
Del()
|
||||||
|
del f1
|
||||||
|
del f2
|
||||||
|
del f3
|
||||||
|
del f4
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/door/poddoor/filler_object
|
||||||
|
name = ""
|
||||||
|
icon_state = ""
|
||||||
24
code/game/machinery/doors/unpowered.dm
Normal file
24
code/game/machinery/doors/unpowered.dm
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/obj/machinery/door/unpowered
|
||||||
|
autoclose = 0
|
||||||
|
|
||||||
|
|
||||||
|
Bumped(atom/AM)
|
||||||
|
if(src.locked) return
|
||||||
|
..()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
attackby(obj/item/I as obj, mob/user as mob)
|
||||||
|
if(istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade)) return
|
||||||
|
if(src.locked) return
|
||||||
|
..()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door/unpowered/shuttle
|
||||||
|
icon = 'shuttle.dmi'
|
||||||
|
name = "door"
|
||||||
|
icon_state = "door1"
|
||||||
|
opacity = 1
|
||||||
|
density = 1
|
||||||
@@ -1,3 +1,14 @@
|
|||||||
|
/obj/machinery/door/window
|
||||||
|
name = "interior door"
|
||||||
|
desc = "A door made from a window, yet it can not break nor be depowered."
|
||||||
|
icon = 'windoor.dmi'
|
||||||
|
icon_state = "left"
|
||||||
|
var/base_state = "left"
|
||||||
|
visible = 0.0
|
||||||
|
flags = ON_BORDER
|
||||||
|
opacity = 0
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/door/window/update_nearby_tiles(need_rebuild)
|
/obj/machinery/door/window/update_nearby_tiles(need_rebuild)
|
||||||
if(!air_master) return 0
|
if(!air_master) return 0
|
||||||
|
|
||||||
@@ -148,3 +159,80 @@
|
|||||||
else if (src.density)
|
else if (src.density)
|
||||||
flick(text("[]deny", src.base_state), src)
|
flick(text("[]deny", src.base_state), src)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor
|
||||||
|
name = "Brig Door"
|
||||||
|
icon = 'windoor.dmi'
|
||||||
|
icon_state = "leftsecure"
|
||||||
|
base_state = "leftsecure"
|
||||||
|
req_access = list(access_security)
|
||||||
|
var/id = null
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door/window/northleft
|
||||||
|
dir = NORTH
|
||||||
|
|
||||||
|
/obj/machinery/door/window/eastleft
|
||||||
|
dir = EAST
|
||||||
|
|
||||||
|
/obj/machinery/door/window/westleft
|
||||||
|
dir = WEST
|
||||||
|
|
||||||
|
/obj/machinery/door/window/southleft
|
||||||
|
dir = SOUTH
|
||||||
|
|
||||||
|
/obj/machinery/door/window/northright
|
||||||
|
dir = NORTH
|
||||||
|
icon_state = "right"
|
||||||
|
base_state = "right"
|
||||||
|
|
||||||
|
/obj/machinery/door/window/eastright
|
||||||
|
dir = EAST
|
||||||
|
icon_state = "right"
|
||||||
|
base_state = "right"
|
||||||
|
|
||||||
|
/obj/machinery/door/window/westright
|
||||||
|
dir = WEST
|
||||||
|
icon_state = "right"
|
||||||
|
base_state = "right"
|
||||||
|
|
||||||
|
/obj/machinery/door/window/southright
|
||||||
|
dir = SOUTH
|
||||||
|
icon_state = "right"
|
||||||
|
base_state = "right"
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/northleft
|
||||||
|
dir = NORTH
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/eastleft
|
||||||
|
dir = EAST
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/westleft
|
||||||
|
dir = WEST
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/southleft
|
||||||
|
dir = SOUTH
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/northright
|
||||||
|
dir = NORTH
|
||||||
|
icon_state = "rightsecure"
|
||||||
|
base_state = "rightsecure"
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/eastright
|
||||||
|
dir = EAST
|
||||||
|
icon_state = "rightsecure"
|
||||||
|
base_state = "rightsecure"
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/westright
|
||||||
|
dir = WEST
|
||||||
|
icon_state = "rightsecure"
|
||||||
|
base_state = "rightsecure"
|
||||||
|
|
||||||
|
/obj/machinery/door/window/brigdoor/southright
|
||||||
|
dir = SOUTH
|
||||||
|
icon_state = "rightsecure"
|
||||||
|
base_state = "rightsecure"
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,9 @@
|
|||||||
verbs += /obj/machinery/sink/proc/mode_pour
|
verbs += /obj/machinery/sink/proc/mode_pour
|
||||||
|
|
||||||
attack_hand(mob/M as mob)
|
attack_hand(mob/M as mob)
|
||||||
|
if(isrobot(M) || isAI(M))
|
||||||
|
return
|
||||||
|
|
||||||
if(busy)
|
if(busy)
|
||||||
M << "\red Someone's already washing something here."
|
M << "\red Someone's already washing something here."
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -72,6 +72,7 @@
|
|||||||
dat += "<A href='?src=\ref[src];rune=communicate'>O bidai nabora se'sma!</A> - Allows you to coordinate with others of your cult.<BR>"
|
dat += "<A href='?src=\ref[src];rune=communicate'>O bidai nabora se'sma!</A> - Allows you to coordinate with others of your cult.<BR>"
|
||||||
dat += "<A href='?src=\ref[src];rune=runestun'>Fuu ma'jin</A> - Allows you to stun a person by attacking them with the talisman.<BR>"
|
dat += "<A href='?src=\ref[src];rune=runestun'>Fuu ma'jin</A> - Allows you to stun a person by attacking them with the talisman.<BR>"
|
||||||
dat += "<A href='?src=\ref[src];rune=armor'>Sa tatha najin</A> - Allows you to summon armoured robes and an unholy blade<BR>"
|
dat += "<A href='?src=\ref[src];rune=armor'>Sa tatha najin</A> - Allows you to summon armoured robes and an unholy blade<BR>"
|
||||||
|
dat += "<A href='?src=\ref[src];rune=soulstone'>Kal om neth</A> - Summons a soul stone<BR>"
|
||||||
usr << browse(dat, "window=id_com;size=350x200")
|
usr << browse(dat, "window=id_com;size=350x200")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -104,6 +105,8 @@
|
|||||||
if("armor")
|
if("armor")
|
||||||
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
|
var/obj/item/weapon/paper/talisman/T = new /obj/item/weapon/paper/talisman(get_turf(usr))
|
||||||
T.imbue = "armor"
|
T.imbue = "armor"
|
||||||
|
if("soulstone")
|
||||||
|
new /obj/item/device/soulstone(get_turf(usr))
|
||||||
src.uses--
|
src.uses--
|
||||||
supply()
|
supply()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -79,7 +79,6 @@ datum/controller/game_controller
|
|||||||
|
|
||||||
if(!processing)
|
if(!processing)
|
||||||
return 0
|
return 0
|
||||||
//world << "Processing"
|
|
||||||
controllernum = "yes"
|
controllernum = "yes"
|
||||||
spawn (100) controllernum = "no"
|
spawn (100) controllernum = "no"
|
||||||
|
|
||||||
@@ -114,7 +113,6 @@ datum/controller/game_controller
|
|||||||
sleep(1)
|
sleep(1)
|
||||||
|
|
||||||
for(var/obj/object in processing_objects)
|
for(var/obj/object in processing_objects)
|
||||||
// spawn(0)Still need to test the spawn ticker
|
|
||||||
object.process()
|
object.process()
|
||||||
|
|
||||||
for(var/datum/pipe_network/network in pipe_networks)
|
for(var/datum/pipe_network/network in pipe_networks)
|
||||||
|
|||||||
@@ -1247,8 +1247,8 @@
|
|||||||
if(hasInternalDamage(intdamflag))
|
if(hasInternalDamage(intdamflag))
|
||||||
output += dam_reports[tflag]
|
output += dam_reports[tflag]
|
||||||
output += "<br />"
|
output += "<br />"
|
||||||
/* if(return_pressure() > WARNING_HIGH_PRESSURE)
|
if(return_pressure() > WARNING_HIGH_PRESSURE)
|
||||||
output += "<font color='red'><b>DANGEROUSLY HIGH CABIN PRESSURE</b></font><br />"*/
|
output += "<font color='red'><b>DANGEROUSLY HIGH CABIN PRESSURE</b></font><br />"
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
||||||
@@ -1257,7 +1257,7 @@
|
|||||||
var/cell_charge = get_charge()
|
var/cell_charge = get_charge()
|
||||||
var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None"
|
var/tank_pressure = internal_tank ? round(internal_tank.return_pressure(),0.01) : "None"
|
||||||
var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown"
|
var/tank_temperature = internal_tank ? internal_tank.return_temperature() : "Unknown"
|
||||||
// var/cabin_pressure = round(return_pressure(),0.01)
|
var/cabin_pressure = round(return_pressure(),0.01)
|
||||||
var/output = {"[report_internal_damage()]
|
var/output = {"[report_internal_damage()]
|
||||||
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font><br>":null]
|
[integrity<30?"<font color='red'><b>DAMAGE LEVEL CRITICAL</b></font><br>":null]
|
||||||
<b>Integrity: </b> [integrity]%<br>
|
<b>Integrity: </b> [integrity]%<br>
|
||||||
@@ -1265,6 +1265,7 @@
|
|||||||
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
|
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
|
||||||
<b>Airtank pressure: </b>[tank_pressure]kPa<br>
|
<b>Airtank pressure: </b>[tank_pressure]kPa<br>
|
||||||
<b>Airtank temperature: </b>[tank_temperature]°K|[tank_temperature - T0C]°C<br>
|
<b>Airtank temperature: </b>[tank_temperature]°K|[tank_temperature - T0C]°C<br>
|
||||||
|
<b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<font color='red'>[cabin_pressure]</font>": cabin_pressure]kPa<br>
|
||||||
<b>Cabin temperature: </b> [return_temperature()]°K|[return_temperature() - T0C]°C<br>
|
<b>Cabin temperature: </b> [return_temperature()]°K|[return_temperature() - T0C]°C<br>
|
||||||
<b>Lights: </b>[lights?"on":"off"]<br>
|
<b>Lights: </b>[lights?"on":"off"]<br>
|
||||||
[src.dna?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[src.dna]</span> \[<a href='?src=\ref[src];reset_dna=1'>Reset</a>\]<br>":null]
|
[src.dna?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[src.dna]</span> \[<a href='?src=\ref[src];reset_dna=1'>Reset</a>\]<br>":null]
|
||||||
|
|||||||
87
code/game/objects/closets/extinguisher.dm
Normal file
87
code/game/objects/closets/extinguisher.dm
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
|
||||||
|
/obj/structure/closet/extinguisher
|
||||||
|
name = "extinguisher closet"
|
||||||
|
desc = "A small wall mounted cabinet designed to hold a fire extinguisher."
|
||||||
|
icon_state = "extinguisher10"
|
||||||
|
icon_opened = "extinguisher11"
|
||||||
|
icon_closed = "extinguisher10"
|
||||||
|
opened = 1
|
||||||
|
anchored = 1
|
||||||
|
density = 0
|
||||||
|
var/obj/item/weapon/extinguisher/EXTINGUISHER = new/obj/item/weapon/extinguisher
|
||||||
|
var/localopened = 1
|
||||||
|
|
||||||
|
open()
|
||||||
|
return
|
||||||
|
|
||||||
|
close()
|
||||||
|
return
|
||||||
|
|
||||||
|
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||||
|
if (isrobot(usr))
|
||||||
|
return
|
||||||
|
if (istype(O, /obj/item/weapon/extinguisher))
|
||||||
|
if(!EXTINGUISHER)
|
||||||
|
user.drop_item(O)
|
||||||
|
src.contents += O
|
||||||
|
EXTINGUISHER = O
|
||||||
|
user << "\blue You place the extinguisher in the [src.name]."
|
||||||
|
else
|
||||||
|
localopened = !localopened
|
||||||
|
else
|
||||||
|
localopened = !localopened
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
attack_hand(mob/user as mob)
|
||||||
|
if(localopened)
|
||||||
|
if(EXTINGUISHER)
|
||||||
|
user.put_in_hand(EXTINGUISHER)
|
||||||
|
EXTINGUISHER = null
|
||||||
|
user << "\blue You take the extinguisher from the [name]."
|
||||||
|
else
|
||||||
|
localopened = !localopened
|
||||||
|
|
||||||
|
else
|
||||||
|
localopened = !localopened
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
verb/toggle_openness() //nice name, huh? HUH?!
|
||||||
|
set name = "Open/Close"
|
||||||
|
set category = "Object"
|
||||||
|
|
||||||
|
if (isrobot(usr))
|
||||||
|
return
|
||||||
|
|
||||||
|
localopened = !localopened
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
verb/remove_extinguisher()
|
||||||
|
set name = "Remove Extinguisher"
|
||||||
|
set category = "Object"
|
||||||
|
|
||||||
|
if (isrobot(usr))
|
||||||
|
return
|
||||||
|
|
||||||
|
if (localopened)
|
||||||
|
if(EXTINGUISHER)
|
||||||
|
usr.put_in_hand(EXTINGUISHER)
|
||||||
|
EXTINGUISHER = null
|
||||||
|
usr << "\blue You take the extinguisher from the [name]."
|
||||||
|
else
|
||||||
|
usr << "\blue The [name] is empty."
|
||||||
|
else
|
||||||
|
usr << "\blue The [name] is closed."
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
attack_paw(mob/user as mob)
|
||||||
|
attack_hand(user)
|
||||||
|
return
|
||||||
|
|
||||||
|
attack_ai(mob/user as mob)
|
||||||
|
return
|
||||||
|
|
||||||
|
update_icon()
|
||||||
|
var/hasextinguisher = 0
|
||||||
|
if(EXTINGUISHER)
|
||||||
|
hasextinguisher = 1
|
||||||
|
icon_state = text("extinguisher[][]",hasextinguisher,src.localopened)
|
||||||
198
code/game/objects/closets/fireaxe.dm
Normal file
198
code/game/objects/closets/fireaxe.dm
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
//I still dont think this should be a closet but whatever
|
||||||
|
/obj/structure/closet/fireaxecabinet
|
||||||
|
name = "Fire Axe Cabinet"
|
||||||
|
desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if."
|
||||||
|
var/obj/item/weapon/fireaxe/fireaxe = new/obj/item/weapon/fireaxe
|
||||||
|
icon_state = "fireaxe1000"
|
||||||
|
icon_closed = "fireaxe1000"
|
||||||
|
icon_opened = "fireaxe1100"
|
||||||
|
anchored = 1
|
||||||
|
density = 0
|
||||||
|
var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri
|
||||||
|
opened = 1
|
||||||
|
var/hitstaken = 0
|
||||||
|
var/locked = 1
|
||||||
|
var/smashed = 0
|
||||||
|
|
||||||
|
attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
|
||||||
|
//..() //That's very useful, Erro
|
||||||
|
|
||||||
|
var/hasaxe = 0 //gonna come in handy later~
|
||||||
|
if(fireaxe)
|
||||||
|
hasaxe = 1
|
||||||
|
|
||||||
|
if (isrobot(usr) || src.locked)
|
||||||
|
if(istype(O, /obj/item/device/multitool))
|
||||||
|
user << "\red Resetting circuitry..."
|
||||||
|
playsound(user, 'lockreset.ogg', 50, 1)
|
||||||
|
sleep(50) // Sleeping time~
|
||||||
|
src.locked = 0
|
||||||
|
user << "\blue You disable the locking modules."
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
|
else if(istype(O, /obj/item/weapon))
|
||||||
|
var/obj/item/weapon/W = O
|
||||||
|
if(src.smashed || src.localopened)
|
||||||
|
if(localopened)
|
||||||
|
localopened = 0
|
||||||
|
icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
return
|
||||||
|
else
|
||||||
|
playsound(user, 'Glasshit.ogg', 100, 1) //We don't want this playing every time
|
||||||
|
if(W.force < 15)
|
||||||
|
user << "\blue The cabinet's protective glass glances off the hit."
|
||||||
|
else
|
||||||
|
src.hitstaken++
|
||||||
|
if(src.hitstaken == 4)
|
||||||
|
playsound(user, 'Glassbr3.ogg', 100, 1) //Break cabinet, receive goodies. Cabinet's fucked for life after that.
|
||||||
|
src.smashed = 1
|
||||||
|
src.locked = 0
|
||||||
|
src.localopened = 1
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
|
if (istype(O, /obj/item/weapon/fireaxe) && src.localopened)
|
||||||
|
if(!fireaxe)
|
||||||
|
if(O.wielded)
|
||||||
|
user << "\red Unwield the axe first."
|
||||||
|
return
|
||||||
|
fireaxe = O
|
||||||
|
user.drop_item(O)
|
||||||
|
src.contents += O
|
||||||
|
user << "\blue You place the fire axe back in the [src.name]."
|
||||||
|
update_icon()
|
||||||
|
else
|
||||||
|
if(src.smashed)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
localopened = !localopened
|
||||||
|
if(localopened)
|
||||||
|
icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
else
|
||||||
|
icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
else
|
||||||
|
if(src.smashed)
|
||||||
|
return
|
||||||
|
if(istype(O, /obj/item/device/multitool))
|
||||||
|
if(localopened)
|
||||||
|
localopened = 0
|
||||||
|
icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
return
|
||||||
|
else
|
||||||
|
user << "\red Resetting circuitry..."
|
||||||
|
sleep(50)
|
||||||
|
src.locked = 1
|
||||||
|
user << "\blue You re-enable the locking modules."
|
||||||
|
playsound(user, 'lockenable.ogg', 50, 1)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
localopened = !localopened
|
||||||
|
if(localopened)
|
||||||
|
icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
else
|
||||||
|
icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
attack_hand(mob/user as mob)
|
||||||
|
|
||||||
|
var/hasaxe = 0
|
||||||
|
if(fireaxe)
|
||||||
|
hasaxe = 1
|
||||||
|
|
||||||
|
if(src.locked)
|
||||||
|
user <<"\red The cabinet won't budge!"
|
||||||
|
return
|
||||||
|
if(localopened)
|
||||||
|
if(fireaxe)
|
||||||
|
user.put_in_hand(fireaxe)
|
||||||
|
fireaxe = null
|
||||||
|
user << "\blue You take the fire axe from the [name]."
|
||||||
|
src.add_fingerprint(user)
|
||||||
|
update_icon()
|
||||||
|
else
|
||||||
|
if(src.smashed)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
localopened = !localopened
|
||||||
|
if(localopened)
|
||||||
|
src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
else
|
||||||
|
src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
|
||||||
|
else
|
||||||
|
localopened = !localopened //I'm pretty sure we don't need an if(src.smashed) in here. In case I'm wrong and it fucks up teh cabinet, **MARKER**. -Agouri
|
||||||
|
if(localopened)
|
||||||
|
src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
else
|
||||||
|
src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
spawn(10) update_icon()
|
||||||
|
|
||||||
|
verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri
|
||||||
|
set name = "Open/Close"
|
||||||
|
set category = "Object"
|
||||||
|
|
||||||
|
if (isrobot(usr) || src.locked || src.smashed)
|
||||||
|
if(src.locked)
|
||||||
|
usr << "\red The cabinet won't budge!"
|
||||||
|
else if(src.smashed)
|
||||||
|
usr << "\blue The protective glass is broken!"
|
||||||
|
return
|
||||||
|
|
||||||
|
localopened = !localopened
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
verb/remove_fire_axe()
|
||||||
|
set name = "Remove Fire Axe"
|
||||||
|
set category = "Object"
|
||||||
|
|
||||||
|
if (isrobot(usr))
|
||||||
|
return
|
||||||
|
|
||||||
|
if (localopened)
|
||||||
|
if(fireaxe)
|
||||||
|
usr.put_in_hand(fireaxe)
|
||||||
|
fireaxe = null
|
||||||
|
usr << "\blue You take the Fire axe from the [name]."
|
||||||
|
else
|
||||||
|
usr << "\blue The [src.name] is empty."
|
||||||
|
else
|
||||||
|
usr << "\blue The [src.name] is closed."
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
attack_paw(mob/user as mob)
|
||||||
|
attack_hand(user)
|
||||||
|
return
|
||||||
|
|
||||||
|
attack_ai(mob/user as mob)
|
||||||
|
if(src.smashed)
|
||||||
|
user << "\red The security of the cabinet is compromised."
|
||||||
|
return
|
||||||
|
else
|
||||||
|
locked = !locked
|
||||||
|
if(locked)
|
||||||
|
user << "\red Cabinet locked."
|
||||||
|
else
|
||||||
|
user << "\blue Cabinet unlocked."
|
||||||
|
return
|
||||||
|
|
||||||
|
update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers
|
||||||
|
var/hasaxe = 0
|
||||||
|
if(fireaxe)
|
||||||
|
hasaxe = 1
|
||||||
|
icon_state = text("fireaxe[][][][]",hasaxe,src.localopened,src.hitstaken,src.smashed)
|
||||||
|
|
||||||
|
open()
|
||||||
|
return
|
||||||
|
|
||||||
|
close()
|
||||||
|
return
|
||||||
@@ -78,4 +78,4 @@
|
|||||||
new /obj/item/weapon/spacecash/c200(src)
|
new /obj/item/weapon/spacecash/c200(src)
|
||||||
new /obj/item/weapon/spacecash/c200(src)
|
new /obj/item/weapon/spacecash/c200(src)
|
||||||
new /obj/item/weapon/spacecash/c200(src)
|
new /obj/item/weapon/spacecash/c200(src)
|
||||||
new /obj/item/weapon/spacecash/c200(src)
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
..()
|
..()
|
||||||
contents = list()
|
contents = list()
|
||||||
spawn(4)
|
spawn(4)
|
||||||
|
new /obj/item/clothing/suit/patientgown( src )
|
||||||
new /obj/item/clothing/under/color/white( src )
|
new /obj/item/clothing/under/color/white( src )
|
||||||
new /obj/item/clothing/shoes/white( src )
|
new /obj/item/clothing/shoes/white( src )
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -25,7 +25,17 @@
|
|||||||
relaymove(var/mob/user, direction)
|
relaymove(var/mob/user, direction)
|
||||||
if(can_move)
|
if(can_move)
|
||||||
can_move = 0
|
can_move = 0
|
||||||
spawn(10) can_move = 1
|
switch(usr.bodytemperature)
|
||||||
|
if(300 to INFINITY)
|
||||||
|
spawn(10) can_move = 1
|
||||||
|
if(295 to 300)
|
||||||
|
spawn(13) can_move = 1
|
||||||
|
if(280 to 295)
|
||||||
|
spawn(16) can_move = 1
|
||||||
|
if(260 to 280)
|
||||||
|
spawn(20) can_move = 1
|
||||||
|
else
|
||||||
|
spawn(25) can_move = 1
|
||||||
step(src,direction)
|
step(src,direction)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,33 @@ obj/structure/door_assembly
|
|||||||
glass = 1
|
glass = 1
|
||||||
icon_state = "door_as_geng1"
|
icon_state = "door_as_geng1"
|
||||||
|
|
||||||
|
door_assembly_min
|
||||||
|
name = "Mining Airlock Assembly"
|
||||||
|
icon_state = "door_as_min1"
|
||||||
|
airlock_type = /obj/machinery/door/airlock/mining
|
||||||
|
anchored = 1
|
||||||
|
density = 1
|
||||||
|
state = 1
|
||||||
|
glass = 0
|
||||||
|
|
||||||
|
door_assembly_atmo
|
||||||
|
name = "Atmospherics Airlock Assembly"
|
||||||
|
icon_state = "door_as_atmo1"
|
||||||
|
airlock_type = /obj/machinery/door/airlock/atmos
|
||||||
|
anchored = 1
|
||||||
|
density = 1
|
||||||
|
state = 1
|
||||||
|
glass = 0
|
||||||
|
|
||||||
|
/* door_assembly_research
|
||||||
|
name = "Research Airlock Assembly"
|
||||||
|
icon_state = "door_as_res1"
|
||||||
|
airlock_type = /obj/machinery/door/airlock/research
|
||||||
|
anchored = 1
|
||||||
|
density = 1
|
||||||
|
state = 1
|
||||||
|
glass = 0*/
|
||||||
|
|
||||||
door_assembly_med
|
door_assembly_med
|
||||||
name = "Medical Airlock Assembly"
|
name = "Medical Airlock Assembly"
|
||||||
icon_state = "door_as_med1"
|
icon_state = "door_as_med1"
|
||||||
|
|||||||
@@ -419,3 +419,24 @@ THERMAL GLASSES
|
|||||||
icon_state = "engspace_helmet_clear"
|
icon_state = "engspace_helmet_clear"
|
||||||
usr << "You toggle the reflective tint off."
|
usr << "You toggle the reflective tint off."
|
||||||
usr.update_clothing()
|
usr.update_clothing()
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/space/rig/cespace_helmet/attack_self()
|
||||||
|
toggle()
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/space/rig/cespace_helmet/verb/toggle()
|
||||||
|
set category = "Object"
|
||||||
|
set name = "Toggle Helmet Visor"
|
||||||
|
if(src.up)
|
||||||
|
src.up = !src.up
|
||||||
|
src.see_face = !src.see_face
|
||||||
|
src.flags |= HEADCOVERSEYES
|
||||||
|
icon_state = "cespace_helmet"
|
||||||
|
usr << "You toggle the reflective tint on."
|
||||||
|
else
|
||||||
|
src.up = !src.up
|
||||||
|
src.see_face = !src.see_face
|
||||||
|
src.flags &= ~HEADCOVERSEYES
|
||||||
|
icon_state = "cespace_helmet_clear"
|
||||||
|
usr << "You toggle the reflective tint off."
|
||||||
|
usr.update_clothing()
|
||||||
|
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ STUN BATON
|
|||||||
R.cell.charge -= 20
|
R.cell.charge -= 20
|
||||||
else
|
else
|
||||||
charges--
|
charges--
|
||||||
if (M.stuttering < 1 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
if (M.stuttering < 1 && (!(M.mutations & HULK) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||||
M.stuttering = 1
|
M.stuttering = 1
|
||||||
M.Stun(1)
|
M.Stun(1)
|
||||||
M.Weaken(1)
|
M.Weaken(1)
|
||||||
@@ -172,7 +172,7 @@ STUN BATON
|
|||||||
R.cell.charge -= 20
|
R.cell.charge -= 20
|
||||||
else
|
else
|
||||||
charges--
|
charges--
|
||||||
if (M.stuttering < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
if (M.stuttering < 10 && (!(M.mutations & HULK) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
|
||||||
M.stuttering = 10
|
M.stuttering = 10
|
||||||
M.Stun(10)
|
M.Stun(10)
|
||||||
M.Weaken(10)
|
M.Weaken(10)
|
||||||
|
|||||||
@@ -18,17 +18,19 @@ RACK PARTS
|
|||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
/obj/item/weapon/table_parts/attack_self(mob/user as mob)
|
/obj/item/weapon/table_parts/attack_self(mob/user as mob)
|
||||||
new /obj/structure/table( user.loc )
|
var/obj/structure/table/T = new /obj/structure/table( user.loc )
|
||||||
|
T.add_fingerprint(usr)
|
||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
// WOODEN TABLE PARTS
|
// WOODEN TABLE PARTS
|
||||||
/obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
..()
|
|
||||||
if (istype(W, /obj/item/weapon/wrench))
|
if (istype(W, /obj/item/weapon/wrench))
|
||||||
new /obj/item/stack/sheet/wood( src.loc )
|
new /obj/item/stack/sheet/wood( src.loc )
|
||||||
//SN src = null
|
//SN src = null
|
||||||
del(src)
|
del(src)
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
|
/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
|
||||||
new /obj/structure/table/woodentable( user.loc )
|
new /obj/structure/table/woodentable( user.loc )
|
||||||
|
|||||||
@@ -50,8 +50,9 @@ FLOOR TILES
|
|||||||
usr << "\blue Assembling grille..."
|
usr << "\blue Assembling grille..."
|
||||||
if (!do_after(usr, 10))
|
if (!do_after(usr, 10))
|
||||||
return
|
return
|
||||||
new /obj/structure/grille( usr.loc )
|
var/obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc )
|
||||||
usr << "\blue You assemble a grille"
|
usr << "\blue You assemble a grille"
|
||||||
|
F.add_fingerprint(usr)
|
||||||
use(2)
|
use(2)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
/obj/item/stack/examine()
|
/obj/item/stack/examine()
|
||||||
set src in view(1)
|
set src in view(1)
|
||||||
..()
|
..()
|
||||||
usr << text("There are [] []\s left on the stack.", src.amount, src.singular_name)
|
usr << "There are [src.amount] [src.singular_name]\s in the stack."
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/stack/proc/use(var/amount)
|
/obj/item/stack/proc/use(var/amount)
|
||||||
@@ -204,6 +204,12 @@
|
|||||||
del(oldsrc)
|
del(oldsrc)
|
||||||
if (istype(O,/obj/item))
|
if (istype(O,/obj/item))
|
||||||
usr.put_in_hand(O)
|
usr.put_in_hand(O)
|
||||||
|
O.add_fingerprint(usr)
|
||||||
|
//BubbleWrap - so newly formed boxes are empty
|
||||||
|
if ( istype(O, /obj/item/weapon/storage) )
|
||||||
|
for (var/obj/item/I in O)
|
||||||
|
del(I)
|
||||||
|
//BubbleWrap END
|
||||||
if (src && usr.machine==src) //do not reopen closed window
|
if (src && usr.machine==src) //do not reopen closed window
|
||||||
spawn( 0 )
|
spawn( 0 )
|
||||||
src.interact(usr)
|
src.interact(usr)
|
||||||
|
|||||||
@@ -189,9 +189,9 @@
|
|||||||
if ( istype(W,/obj/item/clothing/suit/syndicatefake ) )
|
if ( istype(W,/obj/item/clothing/suit/syndicatefake ) )
|
||||||
user << "This item does not fit."
|
user << "This item does not fit."
|
||||||
return
|
return
|
||||||
if ( istype(W,/obj/item/clothing/suit/powered ) )
|
// if ( istype(W,/obj/item/clothing/suit/powered ) )
|
||||||
user << "This item does not fit."
|
// user << "This item does not fit."
|
||||||
return
|
// return
|
||||||
if ( istype(W,/obj/item/clothing/suit/cyborg_suit ) )
|
if ( istype(W,/obj/item/clothing/suit/cyborg_suit ) )
|
||||||
user << "This item does not fit."
|
user << "This item does not fit."
|
||||||
return
|
return
|
||||||
@@ -213,9 +213,9 @@
|
|||||||
if ( istype(W,/obj/item/clothing/head/syndicatefake ) )
|
if ( istype(W,/obj/item/clothing/head/syndicatefake ) )
|
||||||
user << "This item does not fit."
|
user << "This item does not fit."
|
||||||
return
|
return
|
||||||
if ( istype(W,/obj/item/clothing/head/powered ) )
|
// if ( istype(W,/obj/item/clothing/head/powered ) )
|
||||||
user << "This item does not fit."
|
// user << "This item does not fit."
|
||||||
return
|
// return
|
||||||
if ( istype(W,/obj/item/clothing/head/helmet ) )
|
if ( istype(W,/obj/item/clothing/head/helmet ) )
|
||||||
user << "This item does not fit."
|
user << "This item does not fit."
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -3,6 +3,15 @@
|
|||||||
name = "shuttle"
|
name = "shuttle"
|
||||||
icon = 'shuttle.dmi'
|
icon = 'shuttle.dmi'
|
||||||
|
|
||||||
|
/obj/structure/shuttle/window
|
||||||
|
name = "shuttle window"
|
||||||
|
icon = 'podwindows.dmi'
|
||||||
|
icon_state = "1"
|
||||||
|
density = 1
|
||||||
|
opacity = 0
|
||||||
|
anchored = 1
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/shuttle/engine
|
/obj/structure/shuttle/engine
|
||||||
name = "engine"
|
name = "engine"
|
||||||
density = 1
|
density = 1
|
||||||
|
|||||||
@@ -142,6 +142,7 @@
|
|||||||
W.sd_SetOpacity(0)
|
W.sd_SetOpacity(0)
|
||||||
//This is probably gonna make lighting go a bit wonky in bombed areas, but sd_SetOpacity was the primary reason bombs have been so laggy. --NEO
|
//This is probably gonna make lighting go a bit wonky in bombed areas, but sd_SetOpacity was the primary reason bombs have been so laggy. --NEO
|
||||||
W.levelupdate()
|
W.levelupdate()
|
||||||
|
air_master.tiles_to_update += W
|
||||||
return W
|
return W
|
||||||
|
|
||||||
/turf/proc/ReplaceWithPlating()
|
/turf/proc/ReplaceWithPlating()
|
||||||
@@ -158,6 +159,7 @@
|
|||||||
W.opacity = 1
|
W.opacity = 1
|
||||||
W.sd_SetOpacity(0)
|
W.sd_SetOpacity(0)
|
||||||
W.levelupdate()
|
W.levelupdate()
|
||||||
|
air_master.tiles_to_update += W
|
||||||
return W
|
return W
|
||||||
|
|
||||||
/turf/proc/ReplaceWithEngineFloor()
|
/turf/proc/ReplaceWithEngineFloor()
|
||||||
@@ -170,6 +172,7 @@
|
|||||||
E.dir = old_dir
|
E.dir = old_dir
|
||||||
E.icon_state = "engine"
|
E.icon_state = "engine"
|
||||||
E.levelupdate()
|
E.levelupdate()
|
||||||
|
air_master.tiles_to_update += E
|
||||||
return E
|
return E
|
||||||
|
|
||||||
/turf/simulated/Entered(atom/A, atom/OL)
|
/turf/simulated/Entered(atom/A, atom/OL)
|
||||||
@@ -231,6 +234,7 @@
|
|||||||
var/old_dir = dir
|
var/old_dir = dir
|
||||||
var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) )
|
var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) )
|
||||||
S.dir = old_dir
|
S.dir = old_dir
|
||||||
|
air_master.tiles_to_update += S
|
||||||
return S
|
return S
|
||||||
|
|
||||||
/turf/proc/ReplaceWithLattice()
|
/turf/proc/ReplaceWithLattice()
|
||||||
@@ -238,6 +242,7 @@
|
|||||||
var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) )
|
var/turf/space/S = new /turf/space( locate(src.x, src.y, src.z) )
|
||||||
S.dir = old_dir
|
S.dir = old_dir
|
||||||
new /obj/structure/lattice( locate(src.x, src.y, src.z) )
|
new /obj/structure/lattice( locate(src.x, src.y, src.z) )
|
||||||
|
air_master.tiles_to_update += S
|
||||||
return S
|
return S
|
||||||
|
|
||||||
/turf/proc/ReplaceWithWall()
|
/turf/proc/ReplaceWithWall()
|
||||||
@@ -247,6 +252,7 @@
|
|||||||
S.opacity = 0
|
S.opacity = 0
|
||||||
S.sd_NewOpacity(1)
|
S.sd_NewOpacity(1)
|
||||||
levelupdate()
|
levelupdate()
|
||||||
|
air_master.tiles_to_update += S
|
||||||
return S
|
return S
|
||||||
|
|
||||||
/turf/proc/ReplaceWithRWall()
|
/turf/proc/ReplaceWithRWall()
|
||||||
@@ -256,6 +262,7 @@
|
|||||||
S.opacity = 0
|
S.opacity = 0
|
||||||
S.sd_NewOpacity(1)
|
S.sd_NewOpacity(1)
|
||||||
levelupdate()
|
levelupdate()
|
||||||
|
air_master.tiles_to_update += S
|
||||||
return S
|
return S
|
||||||
|
|
||||||
/turf/simulated/wall/New()
|
/turf/simulated/wall/New()
|
||||||
|
|||||||
@@ -32,15 +32,13 @@
|
|||||||
if(alien_egg_flag)
|
if(alien_egg_flag)
|
||||||
src << "The alien inside you forces you to breathe, preventing you from suiciding."
|
src << "The alien inside you forces you to breathe, preventing you from suiciding."
|
||||||
return
|
return
|
||||||
if(mutantrace == "trappedsoul")
|
|
||||||
src << "You are already dead, your soul trapped and contained!"
|
|
||||||
return
|
|
||||||
if(confirm == "Yes")
|
if(confirm == "Yes")
|
||||||
message_admins("[ckey] has suicided.", 1)
|
message_admins("[ckey] has suicided.", 1)
|
||||||
suiciding = 1
|
suiciding = 1
|
||||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||||
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
adjustOxyLoss(max(175 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/carbon/brain/verb/suicide()
|
/mob/living/carbon/brain/verb/suicide()
|
||||||
@@ -63,10 +61,9 @@
|
|||||||
if(confirm == "Yes")
|
if(confirm == "Yes")
|
||||||
message_admins("[ckey] has suicided.", 1)
|
message_admins("[ckey] has suicided.", 1)
|
||||||
suiciding = 1
|
suiciding = 1
|
||||||
viewers(loc) << "\red <b>[src]'s brain is growing dull and lifeless. It looks like it's trying to commit suicide. Somehow.</b>"
|
viewers(loc) << "\red <b>[src]'s brain is growing dull and lifeless. It looks like it's lost the will to live.</b>"
|
||||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
spawn(50)
|
||||||
updatehealth()
|
death(0)
|
||||||
spawn(200)
|
|
||||||
suiciding = 0
|
suiciding = 0
|
||||||
|
|
||||||
/mob/living/carbon/monkey/verb/suicide()
|
/mob/living/carbon/monkey/verb/suicide()
|
||||||
@@ -91,7 +88,7 @@
|
|||||||
suiciding = 1
|
suiciding = 1
|
||||||
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
||||||
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
viewers(src) << "\red <b>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</b>"
|
||||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
adjustOxyLoss(max(175 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/silicon/ai/verb/suicide()
|
/mob/living/silicon/ai/verb/suicide()
|
||||||
@@ -112,7 +109,7 @@
|
|||||||
suiciding = 1
|
suiciding = 1
|
||||||
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
||||||
//put em at -175
|
//put em at -175
|
||||||
oxyloss = max(175 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
adjustOxyLoss(max(175 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/silicon/robot/verb/suicide()
|
/mob/living/silicon/robot/verb/suicide()
|
||||||
@@ -133,7 +130,7 @@
|
|||||||
suiciding = 1
|
suiciding = 1
|
||||||
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
viewers(src) << "\red <b>[src] is powering down. It looks like \he's trying to commit suicide.</b>"
|
||||||
//put em at -175
|
//put em at -175
|
||||||
oxyloss = max(475 - getToxLoss() - getFireLoss() - getBruteLoss(), getOxyLoss())
|
adjustOxyLoss(max(475 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/silicon/pai/verb/suicide()
|
/mob/living/silicon/pai/verb/suicide()
|
||||||
@@ -170,7 +167,7 @@
|
|||||||
suiciding = 1
|
suiciding = 1
|
||||||
viewers(src) << "\red <b>[src] is thrashing wildly! It looks like \he's trying to commit suicide.</b>"
|
viewers(src) << "\red <b>[src] is thrashing wildly! It looks like \he's trying to commit suicide.</b>"
|
||||||
//put em at -175
|
//put em at -175
|
||||||
oxyloss = max(100 - getFireLoss() - getBruteLoss(), getOxyLoss())
|
adjustOxyLoss(max(100 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1496,7 +1496,7 @@
|
|||||||
for(var/mob/living/carbon/human/H in world)
|
for(var/mob/living/carbon/human/H in world)
|
||||||
if(H.client)
|
if(H.client)
|
||||||
H << "\red <B>You suddenly feel stupid.</B>"
|
H << "\red <B>You suddenly feel stupid.</B>"
|
||||||
H.brainloss = 60
|
H.setBrainLoss(60)
|
||||||
message_admins("[key_name_admin(usr)] made everybody retarded")
|
message_admins("[key_name_admin(usr)] made everybody retarded")
|
||||||
else
|
else
|
||||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||||
|
|||||||
@@ -67,6 +67,7 @@
|
|||||||
verbs += /client/proc/debug_variables
|
verbs += /client/proc/debug_variables
|
||||||
//verbs += /client/proc/cmd_modify_object_variables --Merged with view variables
|
//verbs += /client/proc/cmd_modify_object_variables --Merged with view variables
|
||||||
verbs += /client/proc/cmd_modify_ticker_variables
|
verbs += /client/proc/cmd_modify_ticker_variables
|
||||||
|
verbs += /client/proc/toggleadminhelpsound
|
||||||
|
|
||||||
// Admin helpers
|
// Admin helpers
|
||||||
verbs += /client/proc/toggle_view_range
|
verbs += /client/proc/toggle_view_range
|
||||||
|
|||||||
@@ -437,7 +437,7 @@ datum
|
|||||||
M:drowsyness = max(M:drowsyness, 20)
|
M:drowsyness = max(M:drowsyness, 20)
|
||||||
if(25 to INFINITY)
|
if(25 to INFINITY)
|
||||||
M.sleeping = 1
|
M.sleeping = 1
|
||||||
M.oxyloss = 0
|
M.adjustOxyLoss(-M.getOxyLoss())
|
||||||
M.SetWeakened(0)
|
M.SetWeakened(0)
|
||||||
M.SetStunned(0)
|
M.SetStunned(0)
|
||||||
M.SetParalysis(0)
|
M.SetParalysis(0)
|
||||||
@@ -1353,7 +1353,7 @@ datum
|
|||||||
|
|
||||||
on_mob_life(var/mob/living/M as mob)
|
on_mob_life(var/mob/living/M as mob)
|
||||||
if(!M) M = holder.my_atom ///This can even heal dead people.
|
if(!M) M = holder.my_atom ///This can even heal dead people.
|
||||||
M.cloneloss = 0
|
M.setCloneLoss(0)
|
||||||
M.setOxyLoss(0)
|
M.setOxyLoss(0)
|
||||||
M.radiation = 0
|
M.radiation = 0
|
||||||
M.heal_organ_damage(5,5)
|
M.heal_organ_damage(5,5)
|
||||||
@@ -1380,7 +1380,7 @@ datum
|
|||||||
holder.remove_reagent("carpotoxin", 5)
|
holder.remove_reagent("carpotoxin", 5)
|
||||||
if(holder.has_reagent("zombiepowder"))
|
if(holder.has_reagent("zombiepowder"))
|
||||||
holder.remove_reagent("zombiepowder", 5)
|
holder.remove_reagent("zombiepowder", 5)
|
||||||
M.brainloss = 0
|
M.setBrainLoss(0)
|
||||||
M.disabilities = 0
|
M.disabilities = 0
|
||||||
M.eye_blurry = 0
|
M.eye_blurry = 0
|
||||||
M.eye_blind = 0
|
M.eye_blind = 0
|
||||||
|
|||||||
@@ -22,6 +22,14 @@
|
|||||||
see_face = 0.0
|
see_face = 0.0
|
||||||
var/up = 0
|
var/up = 0
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/space/rig/cespace_helmet
|
||||||
|
name = "chief engineer's space helmet"
|
||||||
|
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding and a visor that can be toggled on and off."
|
||||||
|
icon_state = "cespace_helmet"
|
||||||
|
item_state = "cespace_helmet"
|
||||||
|
see_face = 0.0
|
||||||
|
var/up = 0
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/rig/security
|
/obj/item/clothing/head/helmet/space/rig/security
|
||||||
name = "security RIG helmet"
|
name = "security RIG helmet"
|
||||||
icon_state = "rig-security"
|
icon_state = "rig-security"
|
||||||
@@ -48,10 +56,16 @@
|
|||||||
|
|
||||||
/obj/item/clothing/suit/space/rig/engspace_suit
|
/obj/item/clothing/suit/space/rig/engspace_suit
|
||||||
name = "engineering space suit"
|
name = "engineering space suit"
|
||||||
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
|
|
||||||
icon_state = "engspace_suit"
|
icon_state = "engspace_suit"
|
||||||
item_state = "engspace_suit"
|
item_state = "engspace_suit"
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/space/rig/cespace_suit
|
||||||
|
name = "chief engineer's space suit"
|
||||||
|
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation and fire shielding, and Chief Engineer colours."
|
||||||
|
icon_state = "cespace_suit"
|
||||||
|
item_state = "cespace_suit"
|
||||||
|
protective_temperature = 10000
|
||||||
|
|
||||||
/obj/item/clothing/suit/space/rig/security
|
/obj/item/clothing/suit/space/rig/security
|
||||||
name = "security RIG suit"
|
name = "security RIG suit"
|
||||||
desc = "A suit specially designed for security to offer minor protection from environmental hazards, and greater protection from human hazards"
|
desc = "A suit specially designed for security to offer minor protection from environmental hazards, and greater protection from human hazards"
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/wcoat
|
/obj/item/clothing/suit/storage/wcoat
|
||||||
name = "waistcoat"
|
name = "waistcoat"
|
||||||
desc = "The height of class."
|
desc = "The height of class."
|
||||||
@@ -14,7 +13,6 @@
|
|||||||
item_state = "wcoat"
|
item_state = "wcoat"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/apron
|
/obj/item/clothing/suit/storage/apron
|
||||||
name = "apron"
|
name = "apron"
|
||||||
desc = "A basic blue apron. It has a large pocket you can store things in."
|
desc = "A basic blue apron. It has a large pocket you can store things in."
|
||||||
@@ -23,9 +21,8 @@
|
|||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||||
allowed = list (/obj/item/weapon/plantbgone,/obj/item/device/analyzer/plant_analyzer,/obj/item/seeds,/obj/item/nutrient,/obj/item/weapon/minihoe)
|
allowed = list (/obj/item/weapon/plantbgone,/obj/item/device/analyzer/plant_analyzer,/obj/item/seeds,/obj/item/nutrient,/obj/item/weapon/minihoe)
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/chef
|
/obj/item/clothing/suit/storage/chef
|
||||||
name = "Chef's apron"
|
name = "chef's apron"
|
||||||
desc = "An apron used by a high class chef. Has a few pockets for nic-naks."
|
desc = "An apron used by a high class chef. Has a few pockets for nic-naks."
|
||||||
icon_state = "chef"
|
icon_state = "chef"
|
||||||
item_state = "chef"
|
item_state = "chef"
|
||||||
@@ -36,29 +33,25 @@
|
|||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||||
allowed = list (/obj/item/weapon/kitchenknife,/obj/item/weapon/butch)
|
allowed = list (/obj/item/weapon/kitchenknife,/obj/item/weapon/butch)
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/chef/classic
|
/obj/item/clothing/suit/storage/chef/classic
|
||||||
name = "A classic chef's apron."
|
name = "classic chef's apron"
|
||||||
desc = "A basic, dull, white chef's apron."
|
desc = "A basic, dull, white chef's apron."
|
||||||
icon_state = "apronchef"
|
icon_state = "apronchef"
|
||||||
item_state = "apronchef"
|
item_state = "apronchef"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/hazardvest
|
/obj/item/clothing/suit/hazardvest
|
||||||
name = "hazard vest"
|
name = "hazard vest"
|
||||||
desc = "A high-visibility vest used in work zones."
|
desc = "A high-visibility vest used in work zones."
|
||||||
icon_state = "hazard"
|
icon_state = "hazard"
|
||||||
item_state = "hazard"
|
item_state = "hazard"
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/suspenders
|
/obj/item/clothing/suit/suspenders
|
||||||
name = "suspenders"
|
name = "suspenders"
|
||||||
desc = "They suspend the illusion of the mime's play."
|
desc = "They suspend the illusion of the mime's play."
|
||||||
icon = 'belts.dmi'
|
icon = 'belts.dmi'
|
||||||
icon_state = "suspenders"
|
icon_state = "suspenders"
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/syndicatefake
|
/obj/item/clothing/suit/syndicatefake
|
||||||
name = "red space suit replica"
|
name = "red space suit replica"
|
||||||
icon_state = "syndicate"
|
icon_state = "syndicate"
|
||||||
@@ -69,7 +62,6 @@
|
|||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy)
|
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy)
|
||||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/storage/captunic
|
/obj/item/clothing/suit/storage/captunic
|
||||||
name = "captain's parade tunic"
|
name = "captain's parade tunic"
|
||||||
desc = "Worn by a Captain to show their class."
|
desc = "Worn by a Captain to show their class."
|
||||||
@@ -78,7 +70,6 @@
|
|||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||||
flags_inv = HIDEJUMPSUIT
|
flags_inv = HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/nun
|
/obj/item/clothing/suit/nun
|
||||||
name = "nun robe"
|
name = "nun robe"
|
||||||
desc = "Maximum piety in this star system."
|
desc = "Maximum piety in this star system."
|
||||||
@@ -101,49 +92,49 @@
|
|||||||
item_state = "chaplain_hoodie"
|
item_state = "chaplain_hoodie"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/hastur
|
/obj/item/clothing/suit/hastur
|
||||||
name = "Hastur's Robes"
|
name = "Hastur's robes"
|
||||||
desc = "Robes not meant to be worn by man"
|
desc = "Robes not meant to be worn by man"
|
||||||
icon_state = "hastur"
|
icon_state = "hastur"
|
||||||
item_state = "hastur"
|
item_state = "hastur"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/imperium_monk
|
/obj/item/clothing/suit/imperium_monk
|
||||||
name = "Imperium monk"
|
name = "imperium monk robes"
|
||||||
desc = "A set of strange robes."
|
desc = "A set of strange robes."
|
||||||
icon_state = "imperium_monk"
|
icon_state = "imperium_monk"
|
||||||
item_state = "imperium_monk"
|
item_state = "imperium_monk"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/chickensuit
|
/obj/item/clothing/suit/chickensuit
|
||||||
name = "Chicken Suit"
|
name = "chicken suit"
|
||||||
desc = "Bwak!"
|
desc = "Bwak!"
|
||||||
icon_state = "chickensuit"
|
icon_state = "chickensuit"
|
||||||
item_state = "chickensuit"
|
item_state = "chickensuit"
|
||||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HEAD
|
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HEAD
|
||||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/monkeysuit
|
/obj/item/clothing/suit/monkeysuit
|
||||||
name = "Monkey Suit"
|
name = "monkey suit"
|
||||||
desc = "A suit that looks like a primate"
|
desc = "A suit that looks like a primate"
|
||||||
icon_state = "monkeysuit"
|
icon_state = "monkeysuit"
|
||||||
item_state = "monkeysuit"
|
item_state = "monkeysuit"
|
||||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
|
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
|
||||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/suit/holidaypriest
|
/obj/item/clothing/suit/holidaypriest
|
||||||
name = "Holiday Priest"
|
name = "holiday priest"
|
||||||
desc = "This is a nice holiday my son."
|
desc = "This is a nice holiday my son."
|
||||||
icon_state = "holidaypriest"
|
icon_state = "holidaypriest"
|
||||||
item_state = "holidaypriest"
|
item_state = "holidaypriest"
|
||||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/patientgown
|
||||||
|
name = "patient gown"
|
||||||
|
desc = "A sterile gown for patient wear."
|
||||||
|
icon_state = "patientgown"
|
||||||
|
item_state = "patientgown"
|
||||||
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||||
|
|||||||
23
code/modules/food/meat.dm
Normal file
23
code/modules/food/meat.dm
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/obj/item/weapon/reagent_containers/food/snacks/meat
|
||||||
|
name = "meat"
|
||||||
|
desc = "A slab of meat"
|
||||||
|
icon_state = "meat"
|
||||||
|
health = 180
|
||||||
|
New()
|
||||||
|
..()
|
||||||
|
reagents.add_reagent("nutriment", 3)
|
||||||
|
src.bitesize = 3
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh
|
||||||
|
name = "synthetic meat"
|
||||||
|
desc = "A synthetic slab of flesh."
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/meat/human
|
||||||
|
name = "-meat"
|
||||||
|
var/subjectname = ""
|
||||||
|
var/subjectjob = null
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/food/snacks/meat/monkey
|
||||||
|
//same as plain meat
|
||||||
@@ -1,33 +1,23 @@
|
|||||||
/**********************Mineral processing unit console**************************/
|
/**********************Mineral processing unit console**************************/
|
||||||
|
|
||||||
/obj/machinery/mineral/processing_unit_console
|
/obj/machinery/mineral/processing_unit_console
|
||||||
name = "Produciton machine console"
|
name = "production machine console"
|
||||||
icon = 'mining_machines.dmi'
|
icon = 'mining_machines.dmi'
|
||||||
icon_state = "console"
|
icon_state = "console"
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 1
|
anchored = 1
|
||||||
var/id = ""
|
var/id = ""
|
||||||
var/obj/machinery/mineral/processing_unit/machine = null
|
var/obj/machinery/mineral/processing_unit/machine = null
|
||||||
|
var/machinedir = EAST
|
||||||
|
|
||||||
/obj/machinery/mineral/processing_unit_console/New()
|
/obj/machinery/mineral/processing_unit_console/New()
|
||||||
..()
|
..()
|
||||||
spawn(7)
|
spawn(7)
|
||||||
/**
|
src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, machinedir))
|
||||||
src.machine = locate(/obj/machinery/mineral/processing_unit, get_step(src, EAST))
|
|
||||||
if (machine)
|
if (machine)
|
||||||
machine.CONSOLE = src
|
machine.CONSOLE = src
|
||||||
else
|
else
|
||||||
del(src)
|
del(src)
|
||||||
*/
|
|
||||||
//Commented out for being horrible for mappers. -Fastler
|
|
||||||
for(var/obj/machinery/mineral/processing_unit/M in world)
|
|
||||||
if(M.id == src.id)
|
|
||||||
src.machine = M
|
|
||||||
if (machine)
|
|
||||||
machine.CONSOLE = src
|
|
||||||
else
|
|
||||||
del(src)
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/mineral/processing_unit_console/attack_hand(user as mob)
|
/obj/machinery/mineral/processing_unit_console/attack_hand(user as mob)
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +1,19 @@
|
|||||||
/**********************Mineral stacking unit console**************************/
|
/**********************Mineral stacking unit console**************************/
|
||||||
|
|
||||||
/obj/machinery/mineral/stacking_unit_console
|
/obj/machinery/mineral/stacking_unit_console
|
||||||
name = "Stacking machine console"
|
name = "stacking machine console"
|
||||||
icon = 'mining_machines.dmi'
|
icon = 'mining_machines.dmi'
|
||||||
icon_state = "console"
|
icon_state = "console"
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 1
|
anchored = 1
|
||||||
var/id = ""
|
var/id = ""
|
||||||
var/obj/machinery/mineral/stacking_machine/machine = null
|
var/obj/machinery/mineral/stacking_machine/machine = null
|
||||||
|
var/machinedir = SOUTHEAST
|
||||||
|
|
||||||
/obj/machinery/mineral/stacking_unit_console/New()
|
/obj/machinery/mineral/stacking_unit_console/New()
|
||||||
..()
|
..()
|
||||||
spawn(7)
|
spawn(7)
|
||||||
/**
|
src.machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir))
|
||||||
src.machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, SOUTHEAST))
|
|
||||||
if (machine)
|
|
||||||
machine.CONSOLE = src
|
|
||||||
else
|
|
||||||
del(src)
|
|
||||||
*/
|
|
||||||
//Commented out for being horrible for mappers. -Fastler
|
|
||||||
for(var/obj/machinery/mineral/stacking_machine/M in world)
|
|
||||||
if(M.id == src.id)
|
|
||||||
src.machine = M
|
|
||||||
if (machine)
|
if (machine)
|
||||||
machine.CONSOLE = src
|
machine.CONSOLE = src
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
/mob/observer/Login()
|
|
||||||
..()
|
|
||||||
if (!src.start)
|
|
||||||
src.start = 1
|
|
||||||
var/A = locate(/area/start)
|
|
||||||
var/list/L = list( )
|
|
||||||
for(var/turf/T in A)
|
|
||||||
L += T
|
|
||||||
src.loc = pick(L)
|
|
||||||
src.client.screen = null
|
|
||||||
if (!isturf(src.loc))
|
|
||||||
src.client.eye = src.loc
|
|
||||||
src.client.perspective = EYE_PERSPECTIVE
|
|
||||||
return
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
/mob/observer/New(mob/corpse)
|
|
||||||
set invisibility = 10
|
|
||||||
|
|
||||||
..()
|
|
||||||
|
|
||||||
if(corpse)
|
|
||||||
src.corpse = corpse
|
|
||||||
src.loc = get_turf(corpse.loc)
|
|
||||||
src.real_name = corpse.real_name
|
|
||||||
src.name = corpse.real_name
|
|
||||||
|
|
||||||
src.sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS
|
|
||||||
src.see_invisible = 10
|
|
||||||
src.see_in_dark = 100
|
|
||||||
src.verbs += /mob/observer/proc/dead_tele
|
|
||||||
src.verbs += /mob/observer/proc/reenter_corpse
|
|
||||||
|
|
||||||
/mob/proc/ghostize()
|
|
||||||
set name = "Ghost"
|
|
||||||
set desc = "You cannot be revived as a ghost"
|
|
||||||
if(src.client)
|
|
||||||
src.client.mob = new/mob/observer(src)
|
|
||||||
return
|
|
||||||
|
|
||||||
/mob/observer/Move(NewLoc, direct)
|
|
||||||
if(NewLoc)
|
|
||||||
src.loc = NewLoc
|
|
||||||
return
|
|
||||||
if((direct & NORTH) && src.y < world.maxy)
|
|
||||||
src.y++
|
|
||||||
if((direct & SOUTH) && src.y > 1)
|
|
||||||
src.y--
|
|
||||||
if((direct & EAST) && src.x < world.maxx)
|
|
||||||
src.x++
|
|
||||||
if((direct & WEST) && src.x > 1)
|
|
||||||
src.x--
|
|
||||||
|
|
||||||
/mob/observer/examine()
|
|
||||||
if(usr) usr << src.desc
|
|
||||||
|
|
||||||
/mob/observer/can_use_hands() return 0
|
|
||||||
/mob/observer/is_active() return 0
|
|
||||||
|
|
||||||
/mob/observer/Stat()
|
|
||||||
..()
|
|
||||||
statpanel("Status")
|
|
||||||
if (src.client.statpanel == "Status")
|
|
||||||
if(ticker && ticker.mode)
|
|
||||||
if (ticker.timeleft)
|
|
||||||
stat(null, "ETA-[ticker.timeleft / 600 % 60]:[ticker.timeleft / 100 % 6][ticker.timeleft / 100 % 10]")
|
|
||||||
|
|
||||||
if(ticker.mode.name == "Corporate Restructuring" && ticker.target)
|
|
||||||
var/icon = ticker.target.name
|
|
||||||
var/icon2 = ticker.target.real_name
|
|
||||||
var/area = get_area(ticker.target)
|
|
||||||
stat(null, text("Target: [icon2] (as [icon]) is in [area]"))
|
|
||||||
|
|
||||||
if(ticker.mode.name == "AI malfunction" && ticker.processing)
|
|
||||||
stat(null, text("Time until all [station_name()]'s systems are taken over: [(ticker.AIwin - ticker.AItime) / 600 % 60]:[(ticker.AIwin - ticker.AItime) / 100 % 6][(ticker.AIwin - ticker.AItime) / 10 % 10]"))
|
|
||||||
|
|
||||||
if (ticker.mode.name == "ctf")
|
|
||||||
stat(null, text("Red Team - [ticker.red_score]"))
|
|
||||||
stat(null, text("Green Team - [ticker.green_score]"))
|
|
||||||
|
|
||||||
/mob/observer/proc/reenter_corpse()
|
|
||||||
set category = "Special Verbs"
|
|
||||||
set name = "Re-enter Corpse"
|
|
||||||
if(!corpse)
|
|
||||||
alert("You don't have a corpse!")
|
|
||||||
return
|
|
||||||
if(corpse.stat == 2)
|
|
||||||
alert("Your body is dead!")
|
|
||||||
return
|
|
||||||
if(src.client && src.client.holder && src.client.holder.state == 2)
|
|
||||||
var/rank = src.client.holder.rank
|
|
||||||
src.client.clear_admin_verbs()
|
|
||||||
src.client.holder.state = 1
|
|
||||||
src.client.update_admins(rank)
|
|
||||||
src.client.mob = corpse
|
|
||||||
del(src)
|
|
||||||
|
|
||||||
/mob/observer/proc/dead_tele()
|
|
||||||
set category = "Special Verbs"
|
|
||||||
set name = "Teleport"
|
|
||||||
set desc= "Teleport"
|
|
||||||
if((usr.stat != 2) || !istype(usr, /mob/observer))
|
|
||||||
usr << "Not when you're not dead!"
|
|
||||||
return
|
|
||||||
var/A
|
|
||||||
usr.verbs -= /mob/observer/proc/dead_tele
|
|
||||||
spawn(50)
|
|
||||||
usr.verbs += /mob/observer/proc/dead_tele
|
|
||||||
A = input("Area to jump to", "BOOYEA", A) in list("Engine","Hallways","Toxins","Storage","Maintenance","Crew Quarters","Medical","Security","Chapel","Bridge")
|
|
||||||
|
|
||||||
switch (A)
|
|
||||||
if ("Engine")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/engine) && !istype(B, /area/engine/combustion) && !istype(B, /area/engine/engine_walls))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Hallways")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/hallway))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Toxins")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/toxins) && !istype(B, /area/toxins/test_chamber))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Storage")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/storage))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Maintenance")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/maintenance))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Crew Quarters")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/crew_quarters))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Medical")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/medical))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Security")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/security))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Chapel")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/chapel))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
if ("Bridge")
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/area/B in world)
|
|
||||||
if(istype(B, /area/bridge))
|
|
||||||
L += B
|
|
||||||
A = pick(L)
|
|
||||||
|
|
||||||
var/list/L = list()
|
|
||||||
for(var/turf/T in A)
|
|
||||||
if(!T.density)
|
|
||||||
var/clear = 1
|
|
||||||
for(var/obj/O in T)
|
|
||||||
if(O.density)
|
|
||||||
clear = 0
|
|
||||||
break
|
|
||||||
if(clear)
|
|
||||||
L+=T
|
|
||||||
|
|
||||||
usr.loc = pick(L)
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
/mob/observer/say_understands(var/other)
|
|
||||||
return 1
|
|
||||||
|
|
||||||
/mob/observer/say(var/message)
|
|
||||||
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
|
|
||||||
|
|
||||||
if (!message)
|
|
||||||
return
|
|
||||||
|
|
||||||
world.log_say("Ghost/[src.key] : [message]")
|
|
||||||
|
|
||||||
if (src.muted)
|
|
||||||
return
|
|
||||||
|
|
||||||
. = src.say_dead(message)
|
|
||||||
|
|
||||||
for (var/mob/M in hearers(null, null))
|
|
||||||
if (!M.stat)
|
|
||||||
if(M.job == "Chaplain")
|
|
||||||
if (prob (49))
|
|
||||||
M.show_message("<span class='game'><i>You hear muffled speech... but nothing is there...</i></span>", 2)
|
|
||||||
else
|
|
||||||
M.show_message("<span class='game'><i>[stutter(message)]</i></span>", 2)
|
|
||||||
else
|
|
||||||
if (prob(50))
|
|
||||||
return
|
|
||||||
else if (prob (95))
|
|
||||||
M.show_message("<span class='game'><i>You hear muffled speech... but nothing is there...</i></span>", 2)
|
|
||||||
else
|
|
||||||
M.show_message("<span class='game'><i>[stutter(message)]</i></span>", 2)
|
|
||||||
@@ -91,13 +91,16 @@
|
|||||||
if(src.resting)
|
if(src.resting)
|
||||||
Weaken(5)
|
Weaken(5)
|
||||||
|
|
||||||
|
if(move_delay_add > 0)
|
||||||
|
move_delay_add = max(0, move_delay_add - rand(1, 2))
|
||||||
|
|
||||||
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(src.health < config.health_threshold_crit)
|
else if(src.health < config.health_threshold_crit)
|
||||||
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
||||||
|
|
||||||
//if(!src.rejuv) src.oxyloss++
|
//if(!src.rejuv) src.oxyloss++
|
||||||
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
|
if(!src.reagents.has_reagent("inaprovaline")) src.adjustOxyLoss(1)
|
||||||
|
|
||||||
if(src.stat != 2) src.stat = 1
|
if(src.stat != 2) src.stat = 1
|
||||||
Paralyse(5)
|
Paralyse(5)
|
||||||
|
|||||||
@@ -92,13 +92,16 @@
|
|||||||
if(src.resting)
|
if(src.resting)
|
||||||
Weaken(5)
|
Weaken(5)
|
||||||
|
|
||||||
|
if(move_delay_add > 0)
|
||||||
|
move_delay_add = max(0, move_delay_add - rand(1, 2))
|
||||||
|
|
||||||
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(src.health < config.health_threshold_crit)
|
else if(src.health < config.health_threshold_crit)
|
||||||
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
||||||
|
|
||||||
//if(!src.rejuv) src.oxyloss++
|
//if(!src.rejuv) src.oxyloss++
|
||||||
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
|
if(!src.reagents.has_reagent("inaprovaline")) src.adjustOxyLoss(1)
|
||||||
|
|
||||||
if(src.stat != 2) src.stat = 1
|
if(src.stat != 2) src.stat = 1
|
||||||
Paralyse(5)
|
Paralyse(5)
|
||||||
|
|||||||
@@ -58,7 +58,9 @@
|
|||||||
tally += 2
|
tally += 2
|
||||||
if (istype(src, /mob/living/carbon/alien/humanoid/sentinel))
|
if (istype(src, /mob/living/carbon/alien/humanoid/sentinel))
|
||||||
tally += 1
|
tally += 1
|
||||||
return tally
|
if (istype(src, /mob/living/carbon/alien/humanoid/hunter))
|
||||||
|
tally = -1 // hunters go supersuperfast
|
||||||
|
return tally + move_delay_add
|
||||||
|
|
||||||
//This needs to be fixed
|
//This needs to be fixed
|
||||||
/mob/living/carbon/alien/humanoid/Stat()
|
/mob/living/carbon/alien/humanoid/Stat()
|
||||||
@@ -121,7 +123,7 @@
|
|||||||
ear_damage += 15
|
ear_damage += 15
|
||||||
ear_deaf += 60
|
ear_deaf += 60
|
||||||
|
|
||||||
bruteloss += b_loss
|
adjustBruteLoss(b_loss)
|
||||||
adjustFireLoss(f_loss)
|
adjustFireLoss(f_loss)
|
||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -224,7 +226,7 @@
|
|||||||
if ((M.client && !( M.blinded )))
|
if ((M.client && !( M.blinded )))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
if (health > 0)
|
if (health > 0)
|
||||||
bruteloss += (istype(O, /obj/effect/meteor/small) ? 10 : 25)
|
adjustFireLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25))
|
||||||
adjustFireLoss(30)
|
adjustFireLoss(30)
|
||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -472,7 +474,7 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[M.name] has bit []!</B>", src), 1)
|
O.show_message(text("\red <B>[M.name] has bit []!</B>", src), 1)
|
||||||
bruteloss += rand(1, 3)
|
adjustBruteLoss(rand(1, 3))
|
||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return
|
return
|
||||||
@@ -501,7 +503,7 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[M.name] has bit [src]!</B>"), 1)
|
O.show_message(text("\red <B>[M.name] has bit [src]!</B>"), 1)
|
||||||
bruteloss += rand(1, 3)
|
adjustBruteLoss(rand(1, 3))
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -526,7 +528,7 @@
|
|||||||
else
|
else
|
||||||
damage = rand(5, 35)
|
damage = rand(5, 35)
|
||||||
|
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
|
|
||||||
if(M.powerlevel > 0)
|
if(M.powerlevel > 0)
|
||||||
var/stunprob = 10
|
var/stunprob = 10
|
||||||
@@ -566,6 +568,16 @@
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/mob/living/carbon/alien/humanoid/attack_animal(mob/living/simple_animal/M as mob)
|
||||||
|
if(M.melee_damage_upper == 0)
|
||||||
|
M.emote("[M.friendly] [src]")
|
||||||
|
else
|
||||||
|
for(var/mob/O in viewers(src, null))
|
||||||
|
O.show_message("\red <B>[M]</B> [M.attacktext] [src]!", 1)
|
||||||
|
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||||
|
adjustBruteLoss(damage)
|
||||||
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M as mob)
|
/mob/living/carbon/alien/humanoid/attack_hand(mob/living/carbon/human/M as mob)
|
||||||
if (!ticker)
|
if (!ticker)
|
||||||
M << "You cannot attack people before the game has started."
|
M << "You cannot attack people before the game has started."
|
||||||
@@ -672,7 +684,7 @@
|
|||||||
for(var/mob/O in viewers(M, null))
|
for(var/mob/O in viewers(M, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has weakened []!</B>", M, src), 1, "\red You hear someone fall.", 2)
|
O.show_message(text("\red <B>[] has weakened []!</B>", M, src), 1, "\red You hear someone fall.", 2)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
else
|
else
|
||||||
if(M.type != /mob/living/carbon/human/tajaran)
|
if(M.type != /mob/living/carbon/human/tajaran)
|
||||||
@@ -741,7 +753,7 @@ In all, this is a lot like the monkey code. /N
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[M.name] has bit []!</B>", src), 1)
|
O.show_message(text("\red <B>[M.name] has bit []!</B>", src), 1)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
else
|
else
|
||||||
M << "\green <B>[name] is too injured for that.</B>"
|
M << "\green <B>[name] is too injured for that.</B>"
|
||||||
|
|||||||
@@ -407,13 +407,16 @@
|
|||||||
if(src.resting)
|
if(src.resting)
|
||||||
Weaken(5)
|
Weaken(5)
|
||||||
|
|
||||||
|
if(move_delay_add > 0)
|
||||||
|
move_delay_add = max(0, move_delay_add - rand(1, 2))
|
||||||
|
|
||||||
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(src.health < config.health_threshold_crit)
|
else if(src.health < config.health_threshold_crit)
|
||||||
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
||||||
|
|
||||||
//if(!src.rejuv) src.oxyloss++
|
//if(!src.rejuv) src.oxyloss++
|
||||||
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
|
if(!src.reagents.has_reagent("inaprovaline")) src.adjustOxyLoss(1)
|
||||||
|
|
||||||
if(src.stat != 2) src.stat = 1
|
if(src.stat != 2) src.stat = 1
|
||||||
Paralyse(5)
|
Paralyse(5)
|
||||||
@@ -585,5 +588,5 @@
|
|||||||
continue
|
continue
|
||||||
if(air_master.current_cycle%3==1)
|
if(air_master.current_cycle%3==1)
|
||||||
if(!M.nodamage)
|
if(!M.nodamage)
|
||||||
M.bruteloss += 5
|
M.adjustBruteLoss(5)
|
||||||
src.nutrition += 10
|
src.nutrition += 10
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
if(health >= 250)
|
if(health >= 250)
|
||||||
adjustToxLoss(20)
|
adjustToxLoss(20)
|
||||||
else
|
else
|
||||||
bruteloss -= 5
|
adjustBruteLoss(-5)
|
||||||
adjustFireLoss(-5)
|
adjustFireLoss(-5)
|
||||||
|
|
||||||
handle_regular_status_updates()
|
handle_regular_status_updates()
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
||||||
|
|
||||||
//if(!src.rejuv) src.oxyloss++
|
//if(!src.rejuv) src.oxyloss++
|
||||||
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
|
if(!src.reagents.has_reagent("inaprovaline")) src.adjustOxyLoss(1)
|
||||||
|
|
||||||
if(src.stat != 2) src.stat = 1
|
if(src.stat != 2) src.stat = 1
|
||||||
Paralyse(5)
|
Paralyse(5)
|
||||||
|
|||||||
@@ -274,7 +274,7 @@
|
|||||||
if(health >= 25)
|
if(health >= 25)
|
||||||
adjustToxLoss(5)
|
adjustToxLoss(5)
|
||||||
else
|
else
|
||||||
bruteloss -= 5
|
adjustBruteLoss(-5)
|
||||||
adjustFireLoss(-5)
|
adjustFireLoss(-5)
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -332,13 +332,16 @@
|
|||||||
if(resting)
|
if(resting)
|
||||||
Weaken(5)
|
Weaken(5)
|
||||||
|
|
||||||
|
if(move_delay_add > 0)
|
||||||
|
move_delay_add = max(0, move_delay_add - rand(1, 2))
|
||||||
|
|
||||||
if(health < config.health_threshold_dead || brain_op_stage == 4.0)
|
if(health < config.health_threshold_dead || brain_op_stage == 4.0)
|
||||||
death()
|
death()
|
||||||
else if(health < config.health_threshold_crit)
|
else if(health < config.health_threshold_crit)
|
||||||
if(health <= 20 && prob(1)) spawn(0) emote("gasp")
|
if(health <= 20 && prob(1)) spawn(0) emote("gasp")
|
||||||
|
|
||||||
//if(!rejuv) oxyloss++
|
//if(!rejuv) oxyloss++
|
||||||
if(!reagents.has_reagent("inaprovaline")) oxyloss++
|
if(!reagents.has_reagent("inaprovaline")) adjustOxyLoss(1)
|
||||||
|
|
||||||
if(stat != 2) stat = 1
|
if(stat != 2) stat = 1
|
||||||
Paralyse(5)
|
Paralyse(5)
|
||||||
@@ -514,5 +517,5 @@
|
|||||||
continue
|
continue
|
||||||
if(air_master.current_cycle%3==1)
|
if(air_master.current_cycle%3==1)
|
||||||
if(!M.nodamage)
|
if(!M.nodamage)
|
||||||
M.bruteloss += 5
|
M.adjustBruteLoss(5)
|
||||||
nutrition += 10
|
nutrition += 10
|
||||||
|
|||||||
@@ -271,7 +271,7 @@
|
|||||||
if (prob(10))//Instant Chad Ore!
|
if (prob(10))//Instant Chad Ore!
|
||||||
stuttering = max(10, stuttering)
|
stuttering = max(10, stuttering)
|
||||||
|
|
||||||
if (brainloss >= 60 && stat != 2)
|
if (getBrainLoss() >= 60 && stat != 2)
|
||||||
if (prob(7))
|
if (prob(7))
|
||||||
switch(pick(1,2,3))
|
switch(pick(1,2,3))
|
||||||
if(1)
|
if(1)
|
||||||
@@ -648,7 +648,7 @@
|
|||||||
|
|
||||||
//Account for massive pressure differences. Done by Polymorph
|
//Account for massive pressure differences. Done by Polymorph
|
||||||
var/pressure = environment.return_pressure()
|
var/pressure = environment.return_pressure()
|
||||||
if(!istype(wear_suit, /obj/item/clothing/suit/space)&&!istype(wear_suit, /obj/item/clothing/suit/armor/captain))
|
if(!istype(wear_suit, /obj/item/clothing/suit/space))
|
||||||
/*if(pressure < 20)
|
/*if(pressure < 20)
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
src << "You feel the splittle on your lips and the fluid on your eyes boiling away, the capillteries in your skin breaking."
|
src << "You feel the splittle on your lips and the fluid on your eyes boiling away, the capillteries in your skin breaking."
|
||||||
|
|||||||
@@ -414,16 +414,16 @@
|
|||||||
// if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
// if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
|
||||||
|
|
||||||
//if(!src.rejuv) src.oxyloss++
|
//if(!src.rejuv) src.oxyloss++
|
||||||
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss+=10
|
if(!src.reagents.has_reagent("inaprovaline")) src.adjustOxyLoss(10)
|
||||||
|
|
||||||
if(src.stat != DEAD) src.stat = UNCONSCIOUS
|
if(src.stat != DEAD) src.stat = UNCONSCIOUS
|
||||||
|
|
||||||
if(prob(30))
|
if(prob(30))
|
||||||
if(getOxyLoss()>0) oxyloss = max(getOxyLoss()-1, 0)
|
adjustOxyLoss(-1)
|
||||||
if(getToxLoss()>0) adjustToxLoss(-1)
|
adjustToxLoss(-1)
|
||||||
if(getFireLoss()>0) adjustFireLoss(-1)
|
adjustFireLoss(-1)
|
||||||
if(cloneloss>0) cloneloss = max(cloneloss-1,0)
|
adjustCloneLoss(-1)
|
||||||
if(getBruteLoss()>0) bruteloss = max(getBruteLoss()-1,0)
|
adjustBruteLoss(-1)
|
||||||
|
|
||||||
|
|
||||||
if (src.stat == DEAD)
|
if (src.stat == DEAD)
|
||||||
|
|||||||
@@ -174,7 +174,7 @@
|
|||||||
if(3.0)
|
if(3.0)
|
||||||
b_loss += 30
|
b_loss += 30
|
||||||
|
|
||||||
bruteloss += b_loss
|
adjustBruteLoss(b_loss)
|
||||||
adjustFireLoss(f_loss)
|
adjustFireLoss(f_loss)
|
||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -214,7 +214,7 @@
|
|||||||
if ((M.client && !( M.blinded )))
|
if ((M.client && !( M.blinded )))
|
||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
if (health > 0)
|
if (health > 0)
|
||||||
bruteloss += (istype(O, /obj/effect/meteor/small) ? 10 : 25)
|
adjustBruteLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25))
|
||||||
adjustFireLoss(30)
|
adjustFireLoss(30)
|
||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -341,13 +341,24 @@
|
|||||||
else
|
else
|
||||||
damage = rand(1, 3)
|
damage = rand(1, 3)
|
||||||
|
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
|
|
||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/carbon/metroid/attack_animal(mob/living/simple_animal/M as mob)
|
||||||
|
if(M.melee_damage_upper == 0)
|
||||||
|
M.emote("[M.friendly] [src]")
|
||||||
|
else
|
||||||
|
for(var/mob/O in viewers(src, null))
|
||||||
|
O.show_message("\red <B>[M]</B> [M.attacktext] [src]!", 1)
|
||||||
|
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||||
|
adjustBruteLoss(damage)
|
||||||
|
updatehealth()
|
||||||
|
|
||||||
/mob/living/carbon/metroid/attack_paw(mob/living/carbon/monkey/M as mob)
|
/mob/living/carbon/metroid/attack_paw(mob/living/carbon/monkey/M as mob)
|
||||||
if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens.
|
if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens.
|
||||||
|
|
||||||
@@ -531,7 +542,7 @@
|
|||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has [attack_verb]ed []!</B>", M, src), 1)
|
O.show_message(text("\red <B>[] has [attack_verb]ed []!</B>", M, src), 1)
|
||||||
|
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
else
|
else
|
||||||
if(M.type != /mob/living/carbon/human/tajaran)
|
if(M.type != /mob/living/carbon/human/tajaran)
|
||||||
@@ -575,7 +586,7 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has wounded [name]!</B>", M), 1)
|
O.show_message(text("\red <B>[] has wounded [name]!</B>", M), 1)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
else
|
else
|
||||||
playsound(loc, 'slashmiss.ogg', 25, 1, -1)
|
playsound(loc, 'slashmiss.ogg', 25, 1, -1)
|
||||||
@@ -638,7 +649,7 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has disarmed [name]!</B>", M), 1)
|
O.show_message(text("\red <B>[] has disarmed [name]!</B>", M), 1)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -71,37 +71,22 @@
|
|||||||
"A sharp, deep pain bathes every inch of your body!")]"
|
"A sharp, deep pain bathes every inch of your body!")]"
|
||||||
|
|
||||||
if(istype(M, /mob/living/carbon))
|
if(istype(M, /mob/living/carbon))
|
||||||
Victim.cloneloss += rand(1,10)
|
Victim.adjustCloneLoss(rand(1,10))
|
||||||
Victim.adjustToxLoss(rand(1,2))
|
Victim.adjustToxLoss(rand(1,2))
|
||||||
if(Victim.health <= 0)
|
if(Victim.health <= 0)
|
||||||
Victim.adjustToxLoss(rand(2,4))
|
Victim.adjustToxLoss(rand(2,4))
|
||||||
|
|
||||||
if(getToxLoss() > 0)
|
adjustToxLoss(-10)
|
||||||
adjustToxLoss(-10)
|
adjustOxyLoss(-10)
|
||||||
|
adjustBruteLoss(-10)
|
||||||
if(getOxyLoss() > 0)
|
adjustFireLoss(-10)
|
||||||
oxyloss = max(0, getOxyLoss()-10)
|
adjustCloneLoss(-10)
|
||||||
|
|
||||||
if(getBruteLoss() > 0)
|
|
||||||
bruteloss = max(0, getBruteLoss()-10)
|
|
||||||
|
|
||||||
if(getFireLoss() > 0)
|
|
||||||
adjustFireLoss(-10)
|
|
||||||
|
|
||||||
if(getCloneLoss() > 0)
|
|
||||||
adjustCloneLoss(-10)
|
|
||||||
|
|
||||||
if(Victim)
|
if(Victim)
|
||||||
for(var/mob/living/carbon/metroid/Metroid in view(1,M))
|
for(var/mob/living/carbon/metroid/Metroid in view(1,M))
|
||||||
if(Metroid.Victim == M && Metroid != src)
|
if(Metroid.Victim == M && Metroid != src)
|
||||||
Metroid.Feedstop()
|
Metroid.Feedstop()
|
||||||
|
|
||||||
if(getToxLoss()<0) adjustToxLoss(0)
|
|
||||||
if(getOxyLoss()<0) adjustOxyLoss(0)
|
|
||||||
if(getBruteLoss()<0) adjustBruteLoss(0)
|
|
||||||
if(getFireLoss()<0) adjustFireLoss(0)
|
|
||||||
if(getCloneLoss()<0) adjustCloneLoss(0)
|
|
||||||
|
|
||||||
nutrition += rand(10,25)
|
nutrition += rand(10,25)
|
||||||
if(nutrition >= lastnut + 50)
|
if(nutrition >= lastnut + 50)
|
||||||
if(prob(80))
|
if(prob(80))
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
if (health > 0)
|
if (health > 0)
|
||||||
var/shielded = 0
|
var/shielded = 0
|
||||||
bruteloss += 30
|
adjustBruteLoss(30)
|
||||||
if ((O.icon_state == "flaming" && !( shielded )))
|
if ((O.icon_state == "flaming" && !( shielded )))
|
||||||
adjustFireLoss(40)
|
adjustFireLoss(40)
|
||||||
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
O.show_message(text("\red <B>[M.name] has bit []!</B>", src), 1)
|
O.show_message(text("\red <B>[M.name] has bit []!</B>", src), 1)
|
||||||
var/damage = rand(1, 5)
|
var/damage = rand(1, 5)
|
||||||
if (mutations & HULK) damage += 10
|
if (mutations & HULK) damage += 10
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
for(var/datum/disease/D in M.viruses)
|
for(var/datum/disease/D in M.viruses)
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
O.show_message("\red <B>[M.name] has bit [name]!</B>", 1)
|
O.show_message("\red <B>[M.name] has bit [name]!</B>", 1)
|
||||||
var/damage = rand(1, 5)
|
var/damage = rand(1, 5)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||||
for(var/datum/disease/D in M.viruses)
|
for(var/datum/disease/D in M.viruses)
|
||||||
if(istype(D, /datum/disease/jungle_fever))
|
if(istype(D, /datum/disease/jungle_fever))
|
||||||
@@ -240,7 +240,7 @@
|
|||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has knocked out [name]!</B>", M), 1)
|
O.show_message(text("\red <B>[] has knocked out [name]!</B>", M), 1)
|
||||||
return
|
return
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
react_to_attack(M)
|
react_to_attack(M)
|
||||||
else
|
else
|
||||||
@@ -323,7 +323,7 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has slashed [name]!</B>", M), 1)
|
O.show_message(text("\red <B>[] has slashed [name]!</B>", M), 1)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
react_to_attack(M)
|
react_to_attack(M)
|
||||||
else
|
else
|
||||||
@@ -365,11 +365,20 @@
|
|||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
if ((O.client && !( O.blinded )))
|
if ((O.client && !( O.blinded )))
|
||||||
O.show_message(text("\red <B>[] has disarmed [name]!</B>", M), 1)
|
O.show_message(text("\red <B>[] has disarmed [name]!</B>", M), 1)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
react_to_attack(M)
|
react_to_attack(M)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/mob/living/carbon/monkey/attack_animal(mob/living/simple_animal/M as mob)
|
||||||
|
if(M.melee_damage_upper == 0)
|
||||||
|
M.emote("[M.friendly] [src]")
|
||||||
|
else
|
||||||
|
for(var/mob/O in viewers(src, null))
|
||||||
|
O.show_message("\red <B>[M]</B> [M.attacktext] [src]!", 1)
|
||||||
|
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||||
|
adjustBruteLoss(damage)
|
||||||
|
updatehealth()
|
||||||
|
|
||||||
|
|
||||||
/mob/living/carbon/monkey/attack_metroid(mob/living/carbon/metroid/M as mob)
|
/mob/living/carbon/monkey/attack_metroid(mob/living/carbon/metroid/M as mob)
|
||||||
@@ -392,7 +401,7 @@
|
|||||||
else
|
else
|
||||||
damage = rand(5, 35)
|
damage = rand(5, 35)
|
||||||
|
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
|
|
||||||
if(M.powerlevel > 0)
|
if(M.powerlevel > 0)
|
||||||
var/stunprob = 10
|
var/stunprob = 10
|
||||||
@@ -647,7 +656,7 @@
|
|||||||
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||||
if(2.0)
|
if(2.0)
|
||||||
if (stat != 2)
|
if (stat != 2)
|
||||||
bruteloss += 60
|
adjustBruteLoss(60)
|
||||||
adjustFireLoss(60)
|
adjustFireLoss(60)
|
||||||
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||||
if(3.0)
|
if(3.0)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
if(OXY)
|
if(OXY)
|
||||||
adjustOxyLoss(damage/(blocked+1))
|
adjustOxyLoss(damage/(blocked+1))
|
||||||
if(CLONE)
|
if(CLONE)
|
||||||
cloneloss += (damage/(blocked+1))
|
adjustCloneLoss(damage/(blocked+1))
|
||||||
UpdateDamageIcon()
|
UpdateDamageIcon()
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return 1
|
return 1
|
||||||
@@ -50,7 +50,8 @@
|
|||||||
if(IRRADIATE)
|
if(IRRADIATE)
|
||||||
radiation += max((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor
|
radiation += max((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor
|
||||||
if(STUTTER)
|
if(STUTTER)
|
||||||
stuttering = max(stuttering,(effect/(blocked+1)))
|
if(canstun) // stun is usually associated with stutter
|
||||||
|
stuttering = max(stuttering,(effect/(blocked+1)))
|
||||||
if(SLUR)
|
if(SLUR)
|
||||||
slurring = max(slurring, (effect/(blocked+1)))
|
slurring = max(slurring, (effect/(blocked+1)))
|
||||||
if(EYE_BLUR)
|
if(EYE_BLUR)
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
/mob/living/verb/succumb()
|
/mob/living/verb/succumb()
|
||||||
set hidden = 1
|
set hidden = 1
|
||||||
if ((src.health < 0 && src.health > -95.0))
|
if ((src.health < 0 && src.health > -95.0))
|
||||||
src.oxyloss += src.health + 200
|
src.adjustOxyLoss(src.health + 200)
|
||||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss()
|
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss()
|
||||||
src << "\blue You have given up life and succumbed to death."
|
src << "\blue You have given up life and succumbed to death."
|
||||||
|
|
||||||
|
|
||||||
/mob/living/proc/updatehealth()
|
/mob/living/proc/updatehealth()
|
||||||
if(!src.nodamage)
|
if(!src.nodamage)
|
||||||
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.cloneloss - src.halloss
|
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss() -src.halloss
|
||||||
else
|
else
|
||||||
src.health = 100
|
src.health = 100
|
||||||
src.stat = 0
|
src.stat = 0
|
||||||
@@ -142,25 +142,25 @@
|
|||||||
|
|
||||||
// heal ONE external organ, organ gets randomly selected from damaged ones.
|
// heal ONE external organ, organ gets randomly selected from damaged ones.
|
||||||
/mob/living/proc/heal_organ_damage(var/brute, var/burn)
|
/mob/living/proc/heal_organ_damage(var/brute, var/burn)
|
||||||
bruteloss = max(0, getBruteLoss()-brute)
|
adjustBruteLoss(-brute)
|
||||||
adjustFireLoss(-burn)
|
adjustFireLoss(-burn)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
|
|
||||||
// damage ONE external organ, organ gets randomly selected from damaged ones.
|
// damage ONE external organ, organ gets randomly selected from damaged ones.
|
||||||
/mob/living/proc/take_organ_damage(var/brute, var/burn)
|
/mob/living/proc/take_organ_damage(var/brute, var/burn)
|
||||||
bruteloss += brute
|
adjustBruteLoss(brute)
|
||||||
adjustFireLoss(burn)
|
adjustFireLoss(burn)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
|
|
||||||
// heal MANY external organs, in random order
|
// heal MANY external organs, in random order
|
||||||
/mob/living/proc/heal_overall_damage(var/brute, var/burn)
|
/mob/living/proc/heal_overall_damage(var/brute, var/burn)
|
||||||
bruteloss = max(0, getBruteLoss()-brute)
|
adjustBruteLoss(-brute)
|
||||||
adjustFireLoss(-burn)
|
adjustFireLoss(-burn)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
|
|
||||||
// damage MANY external organs, in random order
|
// damage MANY external organs, in random order
|
||||||
/mob/living/proc/take_overall_damage(var/brute, var/burn)
|
/mob/living/proc/take_overall_damage(var/brute, var/burn)
|
||||||
bruteloss += brute
|
adjustBruteLoss(brute)
|
||||||
adjustFireLoss(burn)
|
adjustFireLoss(burn)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
var/message_range = null
|
var/message_range = null
|
||||||
var/message_mode = null
|
var/message_mode = null
|
||||||
|
|
||||||
if (brainloss >= 60 && prob(50))
|
if (getBrainLoss() >= 60 && prob(50))
|
||||||
if (ishuman(src))
|
if (ishuman(src))
|
||||||
message_mode = "headset"
|
message_mode = "headset"
|
||||||
// Special message handling
|
// Special message handling
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
message = capitalize(message) //capitalize the first letter of what they actually say
|
message = capitalize(message) //capitalize the first letter of what they actually say
|
||||||
|
|
||||||
// :downs:
|
// :downs:
|
||||||
if (brainloss >= 60)
|
if (getBrainLoss() >= 60)
|
||||||
message = dd_replacetext(message, " am ", " ")
|
message = dd_replacetext(message, " am ", " ")
|
||||||
message = dd_replacetext(message, " is ", " ")
|
message = dd_replacetext(message, " is ", " ")
|
||||||
message = dd_replacetext(message, " are ", " ")
|
message = dd_replacetext(message, " are ", " ")
|
||||||
|
|||||||
@@ -252,7 +252,7 @@
|
|||||||
|
|
||||||
/mob/living/silicon/ai/blob_act()
|
/mob/living/silicon/ai/blob_act()
|
||||||
if (stat != 2)
|
if (stat != 2)
|
||||||
bruteloss += 60
|
adjustBruteLoss(60)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
@@ -328,7 +328,7 @@
|
|||||||
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
M.show_message(text("\red [] has been hit by []", src, O), 1)
|
||||||
//Foreach goto(19)
|
//Foreach goto(19)
|
||||||
if (health > 0)
|
if (health > 0)
|
||||||
bruteloss += 30
|
adjustBruteLoss(30)
|
||||||
if ((O.icon_state == "flaming"))
|
if ((O.icon_state == "flaming"))
|
||||||
adjustFireLoss(40)
|
adjustFireLoss(40)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -364,7 +364,7 @@
|
|||||||
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
||||||
if(prob(8))
|
if(prob(8))
|
||||||
flick("noise", flash)
|
flick("noise", flash)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
else
|
else
|
||||||
playsound(loc, 'slashmiss.ogg', 25, 1, -1)
|
playsound(loc, 'slashmiss.ogg', 25, 1, -1)
|
||||||
@@ -382,6 +382,19 @@
|
|||||||
M << "\red <b>ERROR</b>: \black Remote access channel disabled."
|
M << "\red <b>ERROR</b>: \black Remote access channel disabled."
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/silicon/ai/attack_animal(mob/living/simple_animal/M as mob)
|
||||||
|
if(M.melee_damage_upper == 0)
|
||||||
|
M.emote("[M.friendly] [src]")
|
||||||
|
else
|
||||||
|
for(var/mob/O in viewers(src, null))
|
||||||
|
O.show_message("\red <B>[M]</B> [M.attacktext] [src]!", 1)
|
||||||
|
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||||
|
adjustBruteLoss(damage)
|
||||||
|
updatehealth()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/mob/living/silicon/ai/proc/switchCamera(var/obj/machinery/camera/C)
|
/mob/living/silicon/ai/proc/switchCamera(var/obj/machinery/camera/C)
|
||||||
usr:cameraFollow = null
|
usr:cameraFollow = null
|
||||||
if (!C)
|
if (!C)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
spawn(1)
|
spawn(1)
|
||||||
while (src.getOxyLoss()>0 && stat!=2)
|
while (src.getOxyLoss()>0 && stat!=2)
|
||||||
sleep(50)
|
sleep(50)
|
||||||
src.oxyloss-=1
|
src.adjustOxyLoss(-1)
|
||||||
src.oxyloss = 0
|
src.oxyloss = 0
|
||||||
return
|
return
|
||||||
else if (src:aiRestorePowerRoutine==3)
|
else if (src:aiRestorePowerRoutine==3)
|
||||||
@@ -91,8 +91,7 @@
|
|||||||
spawn(1)
|
spawn(1)
|
||||||
while (src.getOxyLoss()>0 && stat!=2)
|
while (src.getOxyLoss()>0 && stat!=2)
|
||||||
sleep(50)
|
sleep(50)
|
||||||
src.oxyloss-=1
|
src.adjustOxyLoss(-1)
|
||||||
src.oxyloss = 0
|
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
/mob/living/silicon/pai/blob_act()
|
/mob/living/silicon/pai/blob_act()
|
||||||
if (src.stat != 2)
|
if (src.stat != 2)
|
||||||
src.bruteloss += 60
|
src.adjustBruteLoss(60)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
||||||
if(prob(8))
|
if(prob(8))
|
||||||
flick("noise", src.flash)
|
flick("noise", src.flash)
|
||||||
src.bruteloss += damage
|
src.adjustBruteLoss(damage)
|
||||||
src.updatehealth()
|
src.updatehealth()
|
||||||
else
|
else
|
||||||
playsound(src.loc, 'slashmiss.ogg', 25, 1, -1)
|
playsound(src.loc, 'slashmiss.ogg', 25, 1, -1)
|
||||||
|
|||||||
@@ -175,7 +175,7 @@
|
|||||||
|
|
||||||
/mob/living/silicon/robot/blob_act()
|
/mob/living/silicon/robot/blob_act()
|
||||||
if (stat != 2)
|
if (stat != 2)
|
||||||
bruteloss += 60
|
adjustBruteLoss(60)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
M.show_message(text("\red [src] has been hit by [O]"), 1)
|
M.show_message(text("\red [src] has been hit by [O]"), 1)
|
||||||
//Foreach goto(19)
|
//Foreach goto(19)
|
||||||
if (health > 0)
|
if (health > 0)
|
||||||
bruteloss += 30
|
adjustBruteLoss(30)
|
||||||
if ((O.icon_state == "flaming"))
|
if ((O.icon_state == "flaming"))
|
||||||
adjustFireLoss(40)
|
adjustFireLoss(40)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
@@ -354,7 +354,7 @@
|
|||||||
user << "There are no dents to fix here!"
|
user << "There are no dents to fix here!"
|
||||||
return
|
return
|
||||||
else if (W:remove_fuel(0))
|
else if (W:remove_fuel(0))
|
||||||
bruteloss -= 30
|
adjustBruteLoss(-30)
|
||||||
if(getBruteLoss() < 0) bruteloss = 0
|
if(getBruteLoss() < 0) bruteloss = 0
|
||||||
updatehealth()
|
updatehealth()
|
||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
@@ -539,7 +539,7 @@
|
|||||||
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
O.show_message(text("\red <B>[] has slashed at []!</B>", M, src), 1)
|
||||||
if(prob(8))
|
if(prob(8))
|
||||||
flick("noise", flash)
|
flick("noise", flash)
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
updatehealth()
|
updatehealth()
|
||||||
else
|
else
|
||||||
playsound(loc, 'slashmiss.ogg', 25, 1, -1)
|
playsound(loc, 'slashmiss.ogg', 25, 1, -1)
|
||||||
@@ -587,7 +587,7 @@
|
|||||||
damage = rand(5, 35)
|
damage = rand(5, 35)
|
||||||
|
|
||||||
damage = round(damage / 2) // borgs recieve half damage
|
damage = round(damage / 2) // borgs recieve half damage
|
||||||
bruteloss += damage
|
adjustBruteLoss(damage)
|
||||||
|
|
||||||
|
|
||||||
if(M.powerlevel > 0)
|
if(M.powerlevel > 0)
|
||||||
@@ -617,13 +617,24 @@
|
|||||||
s.start()
|
s.start()
|
||||||
|
|
||||||
if (prob(stunprob) && M.powerlevel >= 8)
|
if (prob(stunprob) && M.powerlevel >= 8)
|
||||||
bruteloss += M.powerlevel * rand(6,10)
|
adjustBruteLoss(M.powerlevel * rand(6,10))
|
||||||
|
|
||||||
|
|
||||||
updatehealth()
|
updatehealth()
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/mob/living/silicon/robot/attack_animal(mob/living/simple_animal/M as mob)
|
||||||
|
if(M.melee_damage_upper == 0)
|
||||||
|
M.emote("[M.friendly] [src]")
|
||||||
|
else
|
||||||
|
for(var/mob/O in viewers(src, null))
|
||||||
|
O.show_message("\red <B>[M]</B> [M.attacktext] [src]!", 1)
|
||||||
|
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||||
|
adjustBruteLoss(damage)
|
||||||
|
updatehealth()
|
||||||
|
|
||||||
|
|
||||||
/mob/living/silicon/robot/attack_hand(mob/user)
|
/mob/living/silicon/robot/attack_hand(mob/user)
|
||||||
|
|
||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/mob/living/silicon/bullet_act(var/obj/item/projectile/Proj)
|
/mob/living/silicon/bullet_act(var/obj/item/projectile/Proj)
|
||||||
if(!Proj.nodamage) bruteloss += Proj.damage
|
if(!Proj.nodamage) adjustBruteLoss(Proj.damage)
|
||||||
Proj.on_hit(src,2)
|
Proj.on_hit(src,2)
|
||||||
return 2
|
return 2
|
||||||
|
|
||||||
|
|||||||
@@ -1103,28 +1103,39 @@ note dizziness decrements automatically in the mob's Life() proc.
|
|||||||
/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check
|
/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
/mob/proc/Stun(amount)
|
/mob/proc/Stun(amount)
|
||||||
stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun
|
if(canstun)
|
||||||
|
stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun
|
||||||
|
else
|
||||||
|
if(istype(src, /mob/living/carbon/alien)) // add some movement delay
|
||||||
|
var/mob/living/carbon/alien/Alien = src
|
||||||
|
Alien.move_delay_add = min(Alien.move_delay_add + round(amount / 5), 10) // a maximum delay of 10
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned"
|
/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned"
|
||||||
stunned = max(amount,0)
|
if(canstun)
|
||||||
|
stunned = max(amount,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/AdjustStunned(amount)
|
/mob/proc/AdjustStunned(amount)
|
||||||
stunned = max(stunned + amount,0)
|
if(canstun)
|
||||||
|
stunned = max(stunned + amount,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/Weaken(amount)
|
/mob/proc/Weaken(amount)
|
||||||
weakened = max(max(weakened,amount),0)
|
if(canweaken)
|
||||||
|
weakened = max(max(weakened,amount),0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/SetWeakened(amount)
|
/mob/proc/SetWeakened(amount)
|
||||||
weakened = max(amount,0)
|
if(canweaken)
|
||||||
|
weakened = max(amount,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/AdjustWeakened(amount)
|
/mob/proc/AdjustWeakened(amount)
|
||||||
weakened = max(weakened + amount,0)
|
if(canweaken)
|
||||||
|
weakened = max(weakened + amount,0)
|
||||||
return
|
return
|
||||||
|
|
||||||
/mob/proc/Paralyse(amount)
|
/mob/proc/Paralyse(amount)
|
||||||
|
|||||||
194
code/modules/mob/mob_cleanup.dm
Normal file
194
code/modules/mob/mob_cleanup.dm
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
//Methods that need to be cleaned.
|
||||||
|
/* INFORMATION
|
||||||
|
Put (mob/proc)s here that are in dire need of a code cleanup.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// This proc has some procs that should be extracted from it. I believe we can develop some helper procs from it - Rockdtben
|
||||||
|
/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1)
|
||||||
|
// world << "Contract_disease called by [src] with virus [virus]"
|
||||||
|
if(stat >=2) return
|
||||||
|
if(virus.type in resistances)
|
||||||
|
if(prob(99.9)) return
|
||||||
|
resistances.Remove(virus.type)//the resistance is futile
|
||||||
|
|
||||||
|
for(var/datum/disease/D in viruses)
|
||||||
|
if(istype(D, virus.type))
|
||||||
|
return // two viruses of the same kind can't infect a body at once!!
|
||||||
|
|
||||||
|
|
||||||
|
if(force_species_check)
|
||||||
|
var/fail = 1
|
||||||
|
for(var/name in virus.affected_species)
|
||||||
|
var/mob_type = text2path("/mob/living/carbon/[lowertext(name)]")
|
||||||
|
if(mob_type && istype(src, mob_type))
|
||||||
|
fail = 0
|
||||||
|
break
|
||||||
|
if(fail) return
|
||||||
|
|
||||||
|
if(skip_this == 1)
|
||||||
|
//if(src.virus) < -- this used to replace the current disease. Not anymore!
|
||||||
|
//src.virus.cure(0)
|
||||||
|
|
||||||
|
var/datum/disease/v = new virus.type
|
||||||
|
viruses += v
|
||||||
|
v.affected_mob = src
|
||||||
|
v.strain_data = v.strain_data.Copy()
|
||||||
|
v.holder = src
|
||||||
|
if(prob(5))
|
||||||
|
v.carrier = 1
|
||||||
|
return
|
||||||
|
|
||||||
|
//if(virus) //
|
||||||
|
//return //
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
var/list/clothing_areas = list()
|
||||||
|
var/list/covers = list(UPPER_TORSO,LOWER_TORSO,LEGS,FEET,ARMS,HANDS)
|
||||||
|
for(var/Covers in covers)
|
||||||
|
clothing_areas[Covers] = list()
|
||||||
|
|
||||||
|
for(var/obj/item/clothing/Clothing in src)
|
||||||
|
if(Clothing)
|
||||||
|
for(var/Covers in covers)
|
||||||
|
if(Clothing&Covers)
|
||||||
|
clothing_areas[Covers] += Clothing
|
||||||
|
|
||||||
|
*/
|
||||||
|
if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease!
|
||||||
|
|
||||||
|
var/obj/item/clothing/Cl = null
|
||||||
|
var/passed = 1
|
||||||
|
|
||||||
|
//chances to target this zone
|
||||||
|
var/head_ch
|
||||||
|
var/body_ch
|
||||||
|
var/hands_ch
|
||||||
|
var/feet_ch
|
||||||
|
|
||||||
|
switch(virus.spread_type)
|
||||||
|
if(CONTACT_HANDS)
|
||||||
|
head_ch = 0
|
||||||
|
body_ch = 0
|
||||||
|
hands_ch = 100
|
||||||
|
feet_ch = 0
|
||||||
|
if(CONTACT_FEET)
|
||||||
|
head_ch = 0
|
||||||
|
body_ch = 0
|
||||||
|
hands_ch = 0
|
||||||
|
feet_ch = 100
|
||||||
|
else
|
||||||
|
head_ch = 100
|
||||||
|
body_ch = 100
|
||||||
|
hands_ch = 25
|
||||||
|
feet_ch = 25
|
||||||
|
|
||||||
|
|
||||||
|
var/target_zone = pick(head_ch;1,body_ch;2,hands_ch;3,feet_ch;4)//1 - head, 2 - body, 3 - hands, 4- feet
|
||||||
|
|
||||||
|
if(istype(src, /mob/living/carbon/human))
|
||||||
|
var/mob/living/carbon/human/H = src
|
||||||
|
|
||||||
|
switch(target_zone)
|
||||||
|
if(1)
|
||||||
|
if(isobj(H.head))
|
||||||
|
Cl = H.head
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Head pass [passed]"
|
||||||
|
if(passed && isobj(H.wear_mask))
|
||||||
|
Cl = H.wear_mask
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Mask pass [passed]"
|
||||||
|
if(2)//arms and legs included
|
||||||
|
if(isobj(H.wear_suit))
|
||||||
|
Cl = H.wear_suit
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Suit pass [passed]"
|
||||||
|
if(passed && isobj(H.slot_w_uniform))
|
||||||
|
Cl = H.slot_w_uniform
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Uniform pass [passed]"
|
||||||
|
if(3)
|
||||||
|
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&HANDS)
|
||||||
|
Cl = H.wear_suit
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Suit pass [passed]"
|
||||||
|
|
||||||
|
if(passed && isobj(H.gloves))
|
||||||
|
Cl = H.gloves
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Gloves pass [passed]"
|
||||||
|
if(4)
|
||||||
|
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&FEET)
|
||||||
|
Cl = H.wear_suit
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Suit pass [passed]"
|
||||||
|
|
||||||
|
if(passed && isobj(H.shoes))
|
||||||
|
Cl = H.shoes
|
||||||
|
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
||||||
|
// world << "Shoes pass [passed]"
|
||||||
|
else
|
||||||
|
src << "Something strange's going on, something's wrong."
|
||||||
|
|
||||||
|
/*if("feet")
|
||||||
|
if(H.shoes && istype(H.shoes, /obj/item/clothing/))
|
||||||
|
Cl = H.shoes
|
||||||
|
passed = prob(Cl.permeability_coefficient*100)
|
||||||
|
//
|
||||||
|
world << "Shoes pass [passed]"
|
||||||
|
*/ //
|
||||||
|
else if(istype(src, /mob/living/carbon/monkey))
|
||||||
|
var/mob/living/carbon/monkey/M = src
|
||||||
|
switch(target_zone)
|
||||||
|
if(1)
|
||||||
|
if(M.wear_mask && isobj(M.wear_mask))
|
||||||
|
Cl = M.wear_mask
|
||||||
|
passed = prob(Cl.permeability_coefficient*100+virus.permeability_mod)
|
||||||
|
//world << "Mask pass [passed]"
|
||||||
|
|
||||||
|
if(passed && virus.spread_type == AIRBORNE && internals)
|
||||||
|
passed = (prob(50*virus.permeability_mod))
|
||||||
|
|
||||||
|
if(passed)
|
||||||
|
//world << "Infection in the mob [src]. YAY"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
var/score = 0
|
||||||
|
if(istype(src, /mob/living/carbon/human))
|
||||||
|
if(src:gloves) score += 5
|
||||||
|
if(istype(src:wear_suit, /obj/item/clothing/suit/space)) score += 10
|
||||||
|
if(istype(src:wear_suit, /obj/item/clothing/suit/bio_suit)) score += 10
|
||||||
|
if(istype(src:head, /obj/item/clothing/head/helmet/space)) score += 5
|
||||||
|
if(istype(src:head, /obj/item/clothing/head/bio_hood)) score += 5
|
||||||
|
if(wear_mask)
|
||||||
|
score += 5
|
||||||
|
if((istype(src:wear_mask, /obj/item/clothing/mask) || istype(src:wear_mask, /obj/item/clothing/mask/surgical)) && !internal)
|
||||||
|
score += 5
|
||||||
|
if(internal)
|
||||||
|
score += 5
|
||||||
|
if(score > 20)
|
||||||
|
return
|
||||||
|
else if(score == 20 && prob(95))
|
||||||
|
return
|
||||||
|
else if(score >= 15 && prob(75))
|
||||||
|
return
|
||||||
|
else if(score >= 10 && prob(55))
|
||||||
|
return
|
||||||
|
else if(score >= 5 && prob(35))
|
||||||
|
return
|
||||||
|
else if(prob(15))
|
||||||
|
return
|
||||||
|
else*/
|
||||||
|
var/datum/disease/v = new virus.type
|
||||||
|
viruses += v
|
||||||
|
v.affected_mob = src
|
||||||
|
v.strain_data = v.strain_data.Copy()
|
||||||
|
v.holder = src
|
||||||
|
if(prob(5))
|
||||||
|
v.carrier = 1
|
||||||
|
return
|
||||||
|
return
|
||||||
@@ -257,15 +257,6 @@
|
|||||||
var/halloss = 0
|
var/halloss = 0
|
||||||
var/hallucination = 0
|
var/hallucination = 0
|
||||||
|
|
||||||
// TG Porting Variables
|
|
||||||
var/canstun = 1 // determines if this mob can be stunned by things
|
|
||||||
var/canweaken = 1 // determines if this mob can be weakened/knocked down by things
|
|
||||||
var/nopush = 0 //Can they be shoved?
|
|
||||||
|
|
||||||
var/area/lastarea = null
|
|
||||||
|
|
||||||
var/digitalcamo = 0 // Can they be tracked by the AI?
|
|
||||||
|
|
||||||
/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
|
/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
|
||||||
through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
|
through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
|
||||||
the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
|
the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
|
||||||
@@ -279,198 +270,22 @@ the mob is also allowed to move without any sort of restriction. For instance, i
|
|||||||
var/UI = 'screen1_old.dmi' // For changing the UI from preferences
|
var/UI = 'screen1_old.dmi' // For changing the UI from preferences
|
||||||
|
|
||||||
// var/obj/effect/organstructure/organStructure = null //for dem organs
|
// var/obj/effect/organstructure/organStructure = null //for dem organs
|
||||||
var/list/organs = list( ) //List of organs.
|
|
||||||
|
|
||||||
|
var/canstun = 1 // determines if this mob can be stunned by things
|
||||||
|
var/canweaken = 1 // determines if this mob can be weakened/knocked down by things
|
||||||
|
var/nopush = 0 //Can they be shoved?
|
||||||
|
|
||||||
|
var/area/lastarea = null
|
||||||
|
|
||||||
|
var/digitalcamo = 0 // Can they be tracked by the AI?
|
||||||
|
|
||||||
|
|
||||||
|
var/list/organs = list( ) //List of organs.
|
||||||
|
var/list/organs2 = list()
|
||||||
//Singularity wants you!
|
//Singularity wants you!
|
||||||
var/grav_delay = 0
|
var/grav_delay = 0
|
||||||
var/being_strangled = 0
|
var/being_strangled = 0
|
||||||
|
|
||||||
/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1)
|
|
||||||
// world << "Contract_disease called by [src] with virus [virus]"
|
|
||||||
if(stat >=2) return
|
|
||||||
if(virus.type in resistances)
|
|
||||||
if(prob(99.9)) return
|
|
||||||
resistances.Remove(virus.type)//the resistance is futile
|
|
||||||
|
|
||||||
for(var/datum/disease/D in viruses)
|
|
||||||
if(istype(D, virus.type))
|
|
||||||
return // two viruses of the same kind can't infect a body at once!!
|
|
||||||
|
|
||||||
|
|
||||||
if(force_species_check)
|
|
||||||
var/fail = 1
|
|
||||||
for(var/name in virus.affected_species)
|
|
||||||
var/mob_type = text2path("/mob/living/carbon/[lowertext(name)]")
|
|
||||||
if(mob_type && istype(src, mob_type))
|
|
||||||
fail = 0
|
|
||||||
break
|
|
||||||
if(fail) return
|
|
||||||
|
|
||||||
if(skip_this == 1)
|
|
||||||
//if(src.virus) < -- this used to replace the current disease. Not anymore!
|
|
||||||
//src.virus.cure(0)
|
|
||||||
|
|
||||||
var/datum/disease/v = new virus.type
|
|
||||||
viruses += v
|
|
||||||
v.affected_mob = src
|
|
||||||
v.strain_data = v.strain_data.Copy()
|
|
||||||
v.holder = src
|
|
||||||
if(prob(5))
|
|
||||||
v.carrier = 1
|
|
||||||
return
|
|
||||||
|
|
||||||
//if(virus) //
|
|
||||||
//return //
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
var/list/clothing_areas = list()
|
|
||||||
var/list/covers = list(UPPER_TORSO,LOWER_TORSO,LEGS,FEET,ARMS,HANDS)
|
|
||||||
for(var/Covers in covers)
|
|
||||||
clothing_areas[Covers] = list()
|
|
||||||
|
|
||||||
for(var/obj/item/clothing/Clothing in src)
|
|
||||||
if(Clothing)
|
|
||||||
for(var/Covers in covers)
|
|
||||||
if(Clothing&Covers)
|
|
||||||
clothing_areas[Covers] += Clothing
|
|
||||||
|
|
||||||
*/
|
|
||||||
if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease!
|
|
||||||
|
|
||||||
var/obj/item/clothing/Cl = null
|
|
||||||
var/passed = 1
|
|
||||||
|
|
||||||
//chances to target this zone
|
|
||||||
var/head_ch
|
|
||||||
var/body_ch
|
|
||||||
var/hands_ch
|
|
||||||
var/feet_ch
|
|
||||||
|
|
||||||
switch(virus.spread_type)
|
|
||||||
if(CONTACT_HANDS)
|
|
||||||
head_ch = 0
|
|
||||||
body_ch = 0
|
|
||||||
hands_ch = 100
|
|
||||||
feet_ch = 0
|
|
||||||
if(CONTACT_FEET)
|
|
||||||
head_ch = 0
|
|
||||||
body_ch = 0
|
|
||||||
hands_ch = 0
|
|
||||||
feet_ch = 100
|
|
||||||
else
|
|
||||||
head_ch = 100
|
|
||||||
body_ch = 100
|
|
||||||
hands_ch = 25
|
|
||||||
feet_ch = 25
|
|
||||||
|
|
||||||
|
|
||||||
var/target_zone = pick(head_ch;1,body_ch;2,hands_ch;3,feet_ch;4)//1 - head, 2 - body, 3 - hands, 4- feet
|
|
||||||
|
|
||||||
if(istype(src, /mob/living/carbon/human))
|
|
||||||
var/mob/living/carbon/human/H = src
|
|
||||||
|
|
||||||
switch(target_zone)
|
|
||||||
if(1)
|
|
||||||
if(isobj(H.head))
|
|
||||||
Cl = H.head
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Head pass [passed]"
|
|
||||||
if(passed && isobj(H.wear_mask))
|
|
||||||
Cl = H.wear_mask
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Mask pass [passed]"
|
|
||||||
if(2)//arms and legs included
|
|
||||||
if(isobj(H.wear_suit))
|
|
||||||
Cl = H.wear_suit
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Suit pass [passed]"
|
|
||||||
if(passed && isobj(H.slot_w_uniform))
|
|
||||||
Cl = H.slot_w_uniform
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Uniform pass [passed]"
|
|
||||||
if(3)
|
|
||||||
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&HANDS)
|
|
||||||
Cl = H.wear_suit
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Suit pass [passed]"
|
|
||||||
|
|
||||||
if(passed && isobj(H.gloves))
|
|
||||||
Cl = H.gloves
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Gloves pass [passed]"
|
|
||||||
if(4)
|
|
||||||
if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&FEET)
|
|
||||||
Cl = H.wear_suit
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Suit pass [passed]"
|
|
||||||
|
|
||||||
if(passed && isobj(H.shoes))
|
|
||||||
Cl = H.shoes
|
|
||||||
passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
|
|
||||||
// world << "Shoes pass [passed]"
|
|
||||||
else
|
|
||||||
src << "Something strange's going on, something's wrong."
|
|
||||||
|
|
||||||
/*if("feet")
|
|
||||||
if(H.shoes && istype(H.shoes, /obj/item/clothing/))
|
|
||||||
Cl = H.shoes
|
|
||||||
passed = prob(Cl.permeability_coefficient*100)
|
|
||||||
//
|
|
||||||
world << "Shoes pass [passed]"
|
|
||||||
*/ //
|
|
||||||
else if(istype(src, /mob/living/carbon/monkey))
|
|
||||||
var/mob/living/carbon/monkey/M = src
|
|
||||||
switch(target_zone)
|
|
||||||
if(1)
|
|
||||||
if(M.wear_mask && isobj(M.wear_mask))
|
|
||||||
Cl = M.wear_mask
|
|
||||||
passed = prob(Cl.permeability_coefficient*100+virus.permeability_mod)
|
|
||||||
//world << "Mask pass [passed]"
|
|
||||||
|
|
||||||
if(passed && virus.spread_type == AIRBORNE && internals)
|
|
||||||
passed = (prob(50*virus.permeability_mod))
|
|
||||||
|
|
||||||
if(passed)
|
|
||||||
//world << "Infection in the mob [src]. YAY"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
var/score = 0
|
|
||||||
if(istype(src, /mob/living/carbon/human))
|
|
||||||
if(src:gloves) score += 5
|
|
||||||
if(istype(src:wear_suit, /obj/item/clothing/suit/space)) score += 10
|
|
||||||
if(istype(src:wear_suit, /obj/item/clothing/suit/bio_suit)) score += 10
|
|
||||||
if(istype(src:head, /obj/item/clothing/head/helmet/space)) score += 5
|
|
||||||
if(istype(src:head, /obj/item/clothing/head/bio_hood)) score += 5
|
|
||||||
if(wear_mask)
|
|
||||||
score += 5
|
|
||||||
if((istype(src:wear_mask, /obj/item/clothing/mask) || istype(src:wear_mask, /obj/item/clothing/mask/surgical)) && !internal)
|
|
||||||
score += 5
|
|
||||||
if(internal)
|
|
||||||
score += 5
|
|
||||||
if(score > 20)
|
|
||||||
return
|
|
||||||
else if(score == 20 && prob(95))
|
|
||||||
return
|
|
||||||
else if(score >= 15 && prob(75))
|
|
||||||
return
|
|
||||||
else if(score >= 10 && prob(55))
|
|
||||||
return
|
|
||||||
else if(score >= 5 && prob(35))
|
|
||||||
return
|
|
||||||
else if(prob(15))
|
|
||||||
return
|
|
||||||
else*/
|
|
||||||
var/datum/disease/v = new virus.type
|
|
||||||
viruses += v
|
|
||||||
v.affected_mob = src
|
|
||||||
v.strain_data = v.strain_data.Copy()
|
|
||||||
v.holder = src
|
|
||||||
if(prob(5))
|
|
||||||
v.carrier = 1
|
|
||||||
return
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
// ++++ROCKDTBEN++++ MOB PROCS
|
// ++++ROCKDTBEN++++ MOB PROCS
|
||||||
|
|||||||
@@ -207,7 +207,7 @@
|
|||||||
s_click(hud1)
|
s_click(hud1)
|
||||||
return
|
return
|
||||||
if(M == assailant && state >= 2)
|
if(M == assailant && state >= 2)
|
||||||
if( ( ishuman(user) /*&& (user.mutations & FAT)*/ && ismonkey(affecting) ) || ( isalien(user) && iscarbon(affecting) ) )
|
if( ( ishuman(user) && (user.mutations & FAT) && ismonkey(affecting) ) || ( isalien(user) && iscarbon(affecting) ) )
|
||||||
var/mob/living/carbon/attacker = user
|
var/mob/living/carbon/attacker = user
|
||||||
for(var/mob/N in viewers(user, null))
|
for(var/mob/N in viewers(user, null))
|
||||||
if(N.client)
|
if(N.client)
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
alt_name = " (died as [src.real_name])"
|
alt_name = " (died as [src.real_name])"
|
||||||
|
|
||||||
message = src.say_quote(message)
|
message = src.say_quote(message)
|
||||||
|
|
||||||
var/rendered = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <span class='message'>[message]</span></span>"
|
var/rendered = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <span class='message'>[message]</span></span>"
|
||||||
|
|
||||||
for (var/mob/M in world)
|
for (var/mob/M in world)
|
||||||
@@ -60,7 +59,7 @@
|
|||||||
return "stammers, \"[text]\"";
|
return "stammers, \"[text]\"";
|
||||||
if (src.slurring)
|
if (src.slurring)
|
||||||
return "slurrs, \"[text]\"";
|
return "slurrs, \"[text]\"";
|
||||||
if (src.brainloss >= 60)
|
if (src.getBrainLoss() >= 60)
|
||||||
return "gibbers, \"[text]\"";
|
return "gibbers, \"[text]\"";
|
||||||
if (ending == "?")
|
if (ending == "?")
|
||||||
return "asks, \"[text]\"";
|
return "asks, \"[text]\"";
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
response_disarm = "gently pushes aside the"
|
response_disarm = "gently pushes aside the"
|
||||||
response_harm = "stomps the"
|
response_harm = "stomps the"
|
||||||
stop_automated_movement = 1
|
stop_automated_movement = 1
|
||||||
|
friendly = "pinches"
|
||||||
|
|
||||||
/mob/living/simple_animal/crab/Life()
|
/mob/living/simple_animal/crab/Life()
|
||||||
..()
|
..()
|
||||||
@@ -38,7 +38,8 @@
|
|||||||
var/max_co2 = 5
|
var/max_co2 = 5
|
||||||
var/min_n2 = 0
|
var/min_n2 = 0
|
||||||
var/max_n2 = 0
|
var/max_n2 = 0
|
||||||
var/unsuitable_atoms_damage = 2 //This damage is taken when atmos doesn't fit all the requirements above.
|
var/unsuitable_atoms_damage = 2 //This damage is taken when atmos doesn't fit all the requirements above
|
||||||
|
|
||||||
|
|
||||||
//LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly
|
//LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly
|
||||||
var/melee_damage_lower = 0
|
var/melee_damage_lower = 0
|
||||||
@@ -46,7 +47,6 @@
|
|||||||
var/attacktext = "attacks"
|
var/attacktext = "attacks"
|
||||||
var/attack_sound = null
|
var/attack_sound = null
|
||||||
var/friendly = "nuzzles" //If the mob does no damage with it's attack
|
var/friendly = "nuzzles" //If the mob does no damage with it's attack
|
||||||
var/wall_smash = 0 //if they can smash walls
|
|
||||||
|
|
||||||
/mob/living/simple_animal/New()
|
/mob/living/simple_animal/New()
|
||||||
..()
|
..()
|
||||||
@@ -197,14 +197,26 @@
|
|||||||
return "[emote], \"[text]\""
|
return "[emote], \"[text]\""
|
||||||
return "says, \"[text]\"";
|
return "says, \"[text]\"";
|
||||||
|
|
||||||
/mob/living/simple_animal/emote(var/act,var/m_type=1,var/message = null)
|
/mob/living/simple_animal/emote(var/act)
|
||||||
if(act == "me")
|
if(act)
|
||||||
for (var/mob/O in viewers(src, null))
|
|
||||||
O.show_message("<B>[src]</B> [message]")
|
|
||||||
else if(act)
|
|
||||||
for (var/mob/O in viewers(src, null))
|
for (var/mob/O in viewers(src, null))
|
||||||
O.show_message("<B>[src]</B> [act].")
|
O.show_message("<B>[src]</B> [act].")
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/simple_animal/attack_animal(mob/living/simple_animal/M as mob)
|
||||||
|
if(M.melee_damage_upper == 0)
|
||||||
|
M.emote("[M.friendly] [src]")
|
||||||
|
else
|
||||||
|
for(var/mob/O in viewers(src, null))
|
||||||
|
O.show_message("\red <B>[M]</B> [M.attacktext] [src]!", 1)
|
||||||
|
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||||
|
health -= damage
|
||||||
|
|
||||||
|
/mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj)
|
||||||
|
if(!Proj) return
|
||||||
|
src.health -= Proj.damage
|
||||||
|
return 0
|
||||||
|
|
||||||
/mob/living/simple_animal/attack_hand(mob/living/carbon/human/M as mob)
|
/mob/living/simple_animal/attack_hand(mob/living/carbon/human/M as mob)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
46
code/modules/mob/simple_animal/shade.dm
Normal file
46
code/modules/mob/simple_animal/shade.dm
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/mob/living/simple_animal/shade
|
||||||
|
name = "Shade"
|
||||||
|
desc = "A bound spirit"
|
||||||
|
icon = 'mob.dmi'
|
||||||
|
icon_state = "shade"
|
||||||
|
icon_living = "shade"
|
||||||
|
icon_dead = "shade_dead"
|
||||||
|
max_health = 50
|
||||||
|
health = 50
|
||||||
|
speak_emote = list("hisses")
|
||||||
|
emote_hear = list("wails","screeches")
|
||||||
|
response_help = "puts their hand through"
|
||||||
|
response_disarm = "flails at"
|
||||||
|
response_harm = "punches the"
|
||||||
|
melee_damage_lower = 5
|
||||||
|
melee_damage_upper = 15
|
||||||
|
attacktext = "drains the life from"
|
||||||
|
minbodytemp = 0
|
||||||
|
maxbodytemp = 4000
|
||||||
|
min_oxy = 0
|
||||||
|
max_co2 = 0
|
||||||
|
max_tox = 0
|
||||||
|
|
||||||
|
/mob/living/simple_animal/shade/Life()
|
||||||
|
..()
|
||||||
|
if (stat == 2)
|
||||||
|
new /obj/item/weapon/ectoplasm (src.loc)
|
||||||
|
for(var/mob/M in viewers(src, null))
|
||||||
|
if ((M.client && !( M.blinded )))
|
||||||
|
M.show_message("\red [src] lets out a contented sigh as their form unwinds. ")
|
||||||
|
del src
|
||||||
|
|
||||||
|
/mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
|
||||||
|
if(istype(O, /obj/item/device/soulstone))
|
||||||
|
O.transfer_soul("SHADE", src, user)
|
||||||
|
else
|
||||||
|
if(O.force)
|
||||||
|
health -= O.force
|
||||||
|
for(var/mob/M in viewers(src, null))
|
||||||
|
if ((M.client && !( M.blinded )))
|
||||||
|
M.show_message("\red \b [src] has been attacked with the [O] by [user]. ")
|
||||||
|
else
|
||||||
|
usr << "\red This weapon is ineffective, it does no damage."
|
||||||
|
for(var/mob/M in viewers(src, null))
|
||||||
|
if ((M.client && !( M.blinded )))
|
||||||
|
M.show_message("\red [user] gently taps [src] with the [O]. ")
|
||||||
@@ -53,6 +53,9 @@
|
|||||||
return
|
return
|
||||||
for(var/name in organs)
|
for(var/name in organs)
|
||||||
del(organs[name])
|
del(organs[name])
|
||||||
|
|
||||||
|
if(client)
|
||||||
|
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jams for AIs
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/mob/living/carbon/AIize()
|
/mob/living/carbon/AIize()
|
||||||
|
|||||||
@@ -780,11 +780,11 @@
|
|||||||
return 0
|
return 0
|
||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
if (istype(H))
|
if (istype(H))
|
||||||
if(H.brainloss >= 60)
|
if(H.getBrainLoss() >= 60)
|
||||||
for(var/mob/M in viewers(src, null))
|
for(var/mob/M in viewers(src, null))
|
||||||
M << "\red [H] stares cluelessly at [src] and drools."
|
M << "\red [H] stares cluelessly at [src] and drools."
|
||||||
return 0
|
return 0
|
||||||
else if(prob(H.brainloss))
|
else if(prob(H.getBrainLoss()))
|
||||||
user << "\red You momentarily forget how to use [src]."
|
user << "\red You momentarily forget how to use [src]."
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -2,20 +2,24 @@
|
|||||||
name = "Emitter"
|
name = "Emitter"
|
||||||
desc = "A heavy duty industrial laser"
|
desc = "A heavy duty industrial laser"
|
||||||
icon = 'singularity.dmi'
|
icon = 'singularity.dmi'
|
||||||
icon_state = "Emitter"
|
icon_state = "emitter"
|
||||||
anchored = 0
|
anchored = 0
|
||||||
density = 1
|
density = 1
|
||||||
req_access = list(access_engine)
|
req_access = list(access_engine)
|
||||||
var/active = 0
|
|
||||||
var/fire_delay = 100
|
|
||||||
var/last_shot = 0
|
|
||||||
var/shot_number = 0
|
|
||||||
var/state = 0
|
|
||||||
var/locked = 0
|
|
||||||
use_power = 1
|
use_power = 1
|
||||||
idle_power_usage = 10
|
idle_power_usage = 10
|
||||||
active_power_usage = 300
|
active_power_usage = 300
|
||||||
|
|
||||||
|
var
|
||||||
|
active = 0
|
||||||
|
fire_delay = 100
|
||||||
|
last_shot = 0
|
||||||
|
shot_number = 0
|
||||||
|
state = 0
|
||||||
|
locked = 0
|
||||||
|
|
||||||
|
|
||||||
verb/rotate()
|
verb/rotate()
|
||||||
set name = "Rotate"
|
set name = "Rotate"
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
@@ -35,9 +39,9 @@
|
|||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
if (active && !(stat & (NOPOWER|BROKEN)))
|
if (active && !(stat & (NOPOWER|BROKEN)))
|
||||||
icon_state = "Emitter +a"
|
icon_state = "emitter_+a"
|
||||||
else
|
else
|
||||||
icon_state = "Emitter"
|
icon_state = "emitter"
|
||||||
|
|
||||||
|
|
||||||
attack_hand(mob/user as mob)
|
attack_hand(mob/user as mob)
|
||||||
@@ -56,15 +60,15 @@
|
|||||||
src.use_power = 2
|
src.use_power = 2
|
||||||
update_icon()
|
update_icon()
|
||||||
else
|
else
|
||||||
user << "The controls are locked!"
|
user << "\red The controls are locked!"
|
||||||
else
|
else
|
||||||
user << "The [src] needs to be firmly secured to the floor first."
|
user << "\red The [src] needs to be firmly secured to the floor first."
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
emp_act()//Emitters are hardened but still might have issues
|
emp_act(var/severity)//Emitters are hardened but still might have issues
|
||||||
use_power(50)
|
use_power(50)
|
||||||
if(prob(1)&&prob(1))
|
if((severity == 1)&&prob(1)&&prob(1))
|
||||||
if(src.active)
|
if(src.active)
|
||||||
src.active = 0
|
src.active = 0
|
||||||
src.use_power = 1
|
src.use_power = 1
|
||||||
@@ -87,7 +91,7 @@
|
|||||||
src.shot_number = 0
|
src.shot_number = 0
|
||||||
use_power(1000)
|
use_power(1000)
|
||||||
var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc )
|
var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc )
|
||||||
A.icon_state = "u_laser"
|
A.icon_state = "emitter"
|
||||||
playsound(src.loc, 'emitter.ogg', 25, 1)
|
playsound(src.loc, 'emitter.ogg', 25, 1)
|
||||||
if(prob(35))
|
if(prob(35))
|
||||||
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
|
||||||
@@ -113,6 +117,7 @@
|
|||||||
|
|
||||||
|
|
||||||
attackby(obj/item/W, mob/user)
|
attackby(obj/item/W, mob/user)
|
||||||
|
|
||||||
if(istype(W, /obj/item/weapon/wrench))
|
if(istype(W, /obj/item/weapon/wrench))
|
||||||
if(active)
|
if(active)
|
||||||
user << "Turn off the [src] first."
|
user << "Turn off the [src] first."
|
||||||
@@ -123,27 +128,26 @@
|
|||||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||||
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
user.visible_message("[user.name] secures [src.name] to the floor.", \
|
||||||
"You secure the external reinforcing bolts to the floor.", \
|
"You secure the external reinforcing bolts to the floor.", \
|
||||||
"You hear ratchet")
|
"You hear a ratchet")
|
||||||
src.anchored = 1
|
src.anchored = 1
|
||||||
if(1)
|
if(1)
|
||||||
state = 0
|
state = 0
|
||||||
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
playsound(src.loc, 'Ratchet.ogg', 75, 1)
|
||||||
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
|
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
|
||||||
"You undo the external reinforcing bolts.", \
|
"You undo the external reinforcing bolts.", \
|
||||||
"You hear ratchet")
|
"You hear a ratchet")
|
||||||
src.anchored = 0
|
src.anchored = 0
|
||||||
if(2)
|
if(2)
|
||||||
user << "\red The [src.name] needs to be unwelded from the floor."
|
user << "\red The [src.name] needs to be unwelded from the floor."
|
||||||
return
|
return
|
||||||
|
|
||||||
else if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
if(istype(W, /obj/item/weapon/weldingtool) && W:welding)
|
||||||
if(active)
|
if(active)
|
||||||
user << "Turn off the [src] first."
|
user << "Turn off the [src] first."
|
||||||
return
|
return
|
||||||
switch(state)
|
switch(state)
|
||||||
if(0)
|
if(0)
|
||||||
user << "\red The [src.name] needs to be wrenched to the floor."
|
user << "\red The [src.name] needs to be wrenched to the floor."
|
||||||
return
|
|
||||||
if(1)
|
if(1)
|
||||||
if (W:remove_fuel(0,user))
|
if (W:remove_fuel(0,user))
|
||||||
W:welding = 2
|
W:welding = 2
|
||||||
@@ -156,8 +160,7 @@
|
|||||||
user << "You weld the [src] to the floor."
|
user << "You weld the [src] to the floor."
|
||||||
W:welding = 1
|
W:welding = 1
|
||||||
else
|
else
|
||||||
user << "\blue You need more welding fuel to complete this task."
|
user << "\red You need more welding fuel to complete this task."
|
||||||
return
|
|
||||||
if(2)
|
if(2)
|
||||||
if (W:remove_fuel(0,user))
|
if (W:remove_fuel(0,user))
|
||||||
W:welding = 2
|
W:welding = 2
|
||||||
@@ -170,20 +173,36 @@
|
|||||||
user << "You cut the [src] free from the floor."
|
user << "You cut the [src] free from the floor."
|
||||||
W:welding = 1
|
W:welding = 1
|
||||||
else
|
else
|
||||||
user << "\blue You need more welding fuel to complete this task."
|
user << "\red You need more welding fuel to complete this task."
|
||||||
return
|
return
|
||||||
else if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
|
|
||||||
if (src.allowed(user))
|
if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
|
||||||
src.locked = !src.locked
|
if(emagged)
|
||||||
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
|
user << "\red The lock seems to be broken"
|
||||||
|
return
|
||||||
|
if(src.allowed(user))
|
||||||
|
if(active)
|
||||||
|
src.locked = !src.locked
|
||||||
|
user << "The controls are now [src.locked ? "locked." : "unlocked."]"
|
||||||
|
else
|
||||||
|
src.locked = 0 //just in case it somehow gets locked
|
||||||
|
user << "\red The controls can only be locked when the [src] is online"
|
||||||
else
|
else
|
||||||
user << "\red Access denied."
|
user << "\red Access denied."
|
||||||
return
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
if(istype(W, /obj/item/weapon/card/emag) && !emagged)
|
||||||
|
locked = 0
|
||||||
|
emagged = 1
|
||||||
|
user.visible_message("[user.name] emags the [src.name].","\red You short out the lock.")
|
||||||
|
return
|
||||||
|
|
||||||
|
..()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
power_change()
|
power_change()
|
||||||
..()
|
..()
|
||||||
update_icon()
|
update_icon()
|
||||||
|
return
|
||||||
@@ -67,7 +67,7 @@ PE|PE|PE
|
|||||||
|
|
||||||
|
|
||||||
examine()
|
examine()
|
||||||
set src in usr
|
set src in oview(1)
|
||||||
switch(src.construction_state)
|
switch(src.construction_state)
|
||||||
if(0)
|
if(0)
|
||||||
src.desc = text("Part of a Particle Accelerator, looks like its not attached to the flooring")
|
src.desc = text("Part of a Particle Accelerator, looks like its not attached to the flooring")
|
||||||
@@ -89,6 +89,35 @@ PE|PE|PE
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
ex_act(severity)
|
||||||
|
switch(severity)
|
||||||
|
if(1.0)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
if(2.0)
|
||||||
|
if (prob(50))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
if(3.0)
|
||||||
|
if (prob(25))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
blob_act()
|
||||||
|
if(prob(50))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
meteorhit()
|
||||||
|
if(prob(50))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
proc
|
proc
|
||||||
update_state()
|
update_state()
|
||||||
if(master)
|
if(master)
|
||||||
@@ -161,15 +190,16 @@ PE|PE|PE
|
|||||||
if(temp_state == src.construction_state)//Nothing changed
|
if(temp_state == src.construction_state)//Nothing changed
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
if(src.construction_state >= 3)//Was taken apart, update state
|
|
||||||
update_state()
|
|
||||||
src.construction_state = temp_state
|
src.construction_state = temp_state
|
||||||
|
if(src.construction_state < 3)//Was taken apart, update state
|
||||||
|
update_state()
|
||||||
update_icon()
|
update_icon()
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/particle_accelerator/
|
|
||||||
|
/obj/machinery/particle_accelerator
|
||||||
name = "Particle Accelerator"
|
name = "Particle Accelerator"
|
||||||
desc = "Part of a Particle Accelerator."
|
desc = "Part of a Particle Accelerator."
|
||||||
icon = 'particle_accelerator.dmi'
|
icon = 'particle_accelerator.dmi'
|
||||||
@@ -217,6 +247,34 @@ PE|PE|PE
|
|||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
ex_act(severity)
|
||||||
|
switch(severity)
|
||||||
|
if(1.0)
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
if(2.0)
|
||||||
|
if (prob(50))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
if(3.0)
|
||||||
|
if (prob(25))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
blob_act()
|
||||||
|
if(prob(50))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
meteorhit()
|
||||||
|
if(prob(50))
|
||||||
|
del(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
proc
|
proc
|
||||||
update_state()
|
update_state()
|
||||||
@@ -266,7 +324,7 @@ PE|PE|PE
|
|||||||
if(temp_state == src.construction_state)//Nothing changed
|
if(temp_state == src.construction_state)//Nothing changed
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
if(src.construction_state >= 3)//Was taken apart, update state
|
if(src.construction_state < 3)//Was taken apart, update state
|
||||||
update_state()
|
update_state()
|
||||||
if(use_power)
|
if(use_power)
|
||||||
use_power = 0
|
use_power = 0
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user