Merge branch 'master' of https://github.com/PolarisSS13/Polaris into 9/30/2017_golems_and_animals

This commit is contained in:
Neerti
2017-10-10 01:21:39 -04:00
101 changed files with 3622 additions and 1441 deletions
+37
View File
@@ -0,0 +1,37 @@
/*
* Modifier applied to newly cloned people.
*/
// Gives rather nasty downsides for awhile, making them less robust.
/datum/modifier/cloning_sickness
name = "cloning sickness"
desc = "You feel rather weak, having been cloned not so long ago."
on_created_text = "<span class='warning'><font size='3'>You feel really weak.</font></span>"
on_expired_text = "<span class='notice'><font size='3'>You feel your strength returning to you.</font></span>"
max_health_percent = 0.6 // -40% max health.
incoming_damage_percent = 1.1 // 10% more incoming damage.
outgoing_melee_damage_percent = 0.7 // 30% less melee damage.
disable_duration_percent = 1.25 // Stuns last 25% longer.
slowdown = 1 // Slower.
evasion = -1 // 15% easier to hit.
// Tracks number of deaths, one modifier added per cloning
/datum/modifier/cloned
name = "cloned"
desc = "You died and were cloned, and you can never forget that."
flags = MODIFIER_GENETIC // So it gets copied if they die and get cloned again.
stacks = MODIFIER_STACK_ALLOWED // Two deaths means two instances of this.
// Prevents cloning, actual effect is on the cloning machine
/datum/modifier/no_clone
name = "Cloning Incompatability"
desc = "For whatever reason, you cannot be cloned."
//WIP, but these may never be seen anyway, so *shrug
on_created_text = "<span class='warning'>Life suddenly feels more precious.</span>"
on_expired_text = "<span class='notice'>Death is cheap again.</span>"
flags = MODIFIER_GENETIC
+10
View File
@@ -0,0 +1,10 @@
/datum/modifier/frail
name = "frail"
desc = "You are more delicate than the average person."
flags = MODIFIER_GENETIC
on_created_text = "<span class='warning'>You feel really weak.</span>"
on_expired_text = "<span class='notice'>You feel your strength returning to you.</span>"
max_health_percent = 0.9
+2 -2
View File
@@ -83,7 +83,7 @@
key = "k"
space_chance = 30
flags = WHITELISTED
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!", "'")
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix")
/datum/language/human
name = LANGUAGE_SOL_COMMON
@@ -244,4 +244,4 @@
"tod", "ser", "su", "no", "nue", "el",
"ad", "al", "an", "ar", "as", "ci", "co", "de", "do", "el", "en", "er", "es", "ie", "in", "la", "lo", "me", "na",
"no", "nt", "or", "os", "pa", "qu", "ra", "re", "ro", "se", "st", "ta", "te", "to", "ue", "un",
"tod", "ser", "su", "no", "nue", "el")
"tod", "ser", "su", "no", "nue", "el")
+2 -1
View File
@@ -128,7 +128,8 @@
return
var/obj/item/weapon/rig/rig = src.get_rig()
if(rig)
rig.forced_move(direction, user)
if(istype(rig,/obj/item/weapon/rig))
rig.forced_move(direction, user)
/obj/item/device/mmi/Destroy()
if(isrobot(loc))
@@ -1521,6 +1521,6 @@
var/braintype = get_FBP_type()
if(braintype == FBP_DRONE)
var/turf/T = get_turf(src)
var/obj/item/weapon/permit/drone/permit = new(T)
var/obj/item/clothing/accessory/permit/drone/permit = new(T)
permit.set_name(real_name)
equip_to_appropriate_slot(permit) // If for some reason it can't find room, it'll still be on the floor.
@@ -67,6 +67,27 @@
if(mRun in mutations)
tally = 0
// Turf related slowdown
var/turf/T = get_turf(src)
if(T && T.movement_cost)
var/turf_move_cost = T.movement_cost
if(istype(T, /turf/simulated/floor/water))
if(species.water_movement)
turf_move_cost = Clamp(-3, turf_move_cost + species.water_movement, 15)
if(shoes)
var/obj/item/clothing/shoes/feet = shoes
if(feet.water_speed)
turf_move_cost = Clamp(-3, turf_move_cost + feet.water_speed, 15)
tally += turf_move_cost
if(istype(T, /turf/simulated/floor/outdoors/snow))
if(species.snow_movement)
turf_move_cost = Clamp(-3, turf_move_cost + species.snow_movement, 15)
if(shoes)
var/obj/item/clothing/shoes/feet = shoes
if(feet.water_speed)
turf_move_cost = Clamp(-3, turf_move_cost + feet.snow_speed, 15)
tally += turf_move_cost
// Loop through some slots, and add up their slowdowns. Shoes are handled below, unfortunately.
// Includes slots which can provide armor, the back slot, and suit storage.
for(var/obj/item/I in list(wear_suit, w_uniform, back, gloves, head, s_store))
@@ -82,10 +103,6 @@
var/obj/item/pulled = pulling
item_tally += max(pulled.slowdown, 0)
var/turf/T = get_turf(src)
if(T && T.movement_cost)
tally += T.movement_cost
item_tally *= species.item_slowdown_mod
tally += item_tally
+38 -29
View File
@@ -515,31 +515,31 @@
// Hot air hurts :(
if((breath.temperature < species.cold_level_1 || breath.temperature > species.heat_level_1) && !(COLD_RESISTANCE in mutations))
if((breath.temperature < species.breath_cold_level_1 || breath.temperature > species.breath_heat_level_1) && !(COLD_RESISTANCE in mutations))
if(breath.temperature <= species.cold_level_1)
if(breath.temperature <= species.breath_cold_level_1)
if(prob(20))
src << "<span class='danger'>You feel your face freezing and icicles forming in your lungs!</span>"
else if(breath.temperature >= species.heat_level_1)
else if(breath.temperature >= species.breath_heat_level_1)
if(prob(20))
src << "<span class='danger'>You feel your face burning and a searing heat in your lungs!</span>"
if(breath.temperature >= species.heat_level_1)
if(breath.temperature < species.heat_level_2)
if(breath.temperature >= species.breath_heat_level_1)
if(breath.temperature < species.breath_heat_level_2)
apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
else if(breath.temperature < species.heat_level_3)
else if(breath.temperature < species.breath_heat_level_3)
apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
else
apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Heat")
fire_alert = max(fire_alert, 2)
else if(breath.temperature <= species.cold_level_1)
if(breath.temperature > species.cold_level_2)
else if(breath.temperature <= species.breath_cold_level_1)
if(breath.temperature > species.breath_cold_level_2)
apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Cold")
fire_alert = max(fire_alert, 1)
else if(breath.temperature > species.cold_level_3)
else if(breath.temperature > species.breath_cold_level_3)
apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Cold")
fire_alert = max(fire_alert, 1)
else
@@ -629,34 +629,42 @@
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE)
return 1 //godmode
var/burn_dam = 0
// switch() can't access numbers inside variables, so we need to use some ugly if() spam ladder.
if(bodytemperature >= species.heat_level_3)
burn_dam = HEAT_DAMAGE_LEVEL_3
else if(bodytemperature >= species.heat_level_2)
burn_dam = HEAT_DAMAGE_LEVEL_2
else if(bodytemperature >= species.heat_level_1)
burn_dam = HEAT_DAMAGE_LEVEL_1
if(bodytemperature >= species.heat_level_1)
if(bodytemperature >= species.heat_level_2)
if(bodytemperature >= species.heat_level_3)
burn_dam = HEAT_DAMAGE_LEVEL_3
else
burn_dam = HEAT_DAMAGE_LEVEL_2
else
burn_dam = HEAT_DAMAGE_LEVEL_1
take_overall_damage(burn=burn_dam, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 2)
else if(bodytemperature <= species.cold_level_1)
//Body temperature is too cold.
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE)
return 1 //godmode
if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))
var/burn_dam = 0
if(bodytemperature <= species.cold_level_3)
burn_dam = COLD_DAMAGE_LEVEL_3
else if(bodytemperature <= species.cold_level_2)
burn_dam = COLD_DAMAGE_LEVEL_2
else if(bodytemperature <= species.heat_level_1)
burn_dam = COLD_DAMAGE_LEVEL_1
var/cold_dam = 0
if(bodytemperature <= species.cold_level_1)
if(bodytemperature <= species.cold_level_2)
if(bodytemperature <= species.cold_level_3)
cold_dam = COLD_DAMAGE_LEVEL_3
else
cold_dam = COLD_DAMAGE_LEVEL_2
else
cold_dam = COLD_DAMAGE_LEVEL_1
take_overall_damage(burn=burn_dam, used_weapon = "Low Body Temperature")
take_overall_damage(burn=cold_dam, used_weapon = "Low Body Temperature")
fire_alert = max(fire_alert, 1)
// Account for massive pressure differences. Done by Polymorph
@@ -1649,12 +1657,13 @@
for(var/obj/item/weapon/implant/I in src)
if(I.implanted)
if(istype(I,/obj/item/weapon/implant/tracking))
holder1.icon_state = "hud_imp_tracking"
if(istype(I,/obj/item/weapon/implant/loyalty))
holder2.icon_state = "hud_imp_loyal"
if(istype(I,/obj/item/weapon/implant/chem))
holder3.icon_state = "hud_imp_chem"
if(!I.malfunction)
if(istype(I,/obj/item/weapon/implant/tracking))
holder1.icon_state = "hud_imp_tracking"
if(istype(I,/obj/item/weapon/implant/loyalty))
holder2.icon_state = "hud_imp_loyal"
if(istype(I,/obj/item/weapon/implant/chem))
holder3.icon_state = "hud_imp_chem"
hud_list[IMPTRACK_HUD] = holder1
hud_list[IMPLOYAL_HUD] = holder2
@@ -92,33 +92,50 @@
var/breath_type = "oxygen" // Non-oxygen gas breathed, if any.
var/poison_type = "phoron" // Poisonous air.
var/exhale_type = "carbon_dioxide" // Exhaled gas type.
var/body_temperature = 310.15 // Species will try to stabilize at this temperature. (also affects temperature processing)
// Cold
var/cold_level_1 = 260 // Cold damage level 1 below this point.
var/cold_level_2 = 200 // Cold damage level 2 below this point.
var/cold_level_3 = 120 // Cold damage level 3 below this point.
var/breath_cold_level_1 = 240 // Cold gas damage level 1 below this point.
var/breath_cold_level_2 = 180 // Cold gas damage level 2 below this point.
var/breath_cold_level_3 = 100 // Cold gas damage level 3 below this point.
var/cold_discomfort_level = 285 // Aesthetic messages about feeling chilly.
var/list/cold_discomfort_strings = list(
"You feel chilly.",
"You shiver suddenly.",
"Your chilly flesh stands out in goosebumps."
)
// Hot
var/heat_level_1 = 360 // Heat damage level 1 above this point.
var/heat_level_2 = 400 // Heat damage level 2 above this point.
var/heat_level_3 = 1000 // Heat damage level 3 above this point.
var/breath_heat_level_1 = 380 // Heat gas damage level 1 below this point.
var/breath_heat_level_2 = 450 // Heat gas damage level 2 below this point.
var/breath_heat_level_3 = 1250 // Heat gas damage level 3 below this point.
var/heat_discomfort_level = 315 // Aesthetic messages about feeling warm.
var/list/heat_discomfort_strings = list(
"You feel sweat drip down your neck.",
"You feel uncomfortably warm.",
"Your skin prickles in the heat."
)
var/passive_temp_gain = 0 // Species will gain this much temperature every second
var/hazard_high_pressure = HAZARD_HIGH_PRESSURE // Dangerously high pressure.
var/warning_high_pressure = WARNING_HIGH_PRESSURE // High pressure warning.
var/warning_low_pressure = WARNING_LOW_PRESSURE // Low pressure warning.
var/hazard_low_pressure = HAZARD_LOW_PRESSURE // Dangerously low pressure.
var/light_dam // If set, mob will be damaged in light over this value and heal in light below its negative.
var/body_temperature = 310.15 // Species will try to stabilize at this temperature. (also affects temperature processing)
var/minimum_breath_pressure = 16 // Minimum required pressure for breath, in kPa
var/heat_discomfort_level = 315 // Aesthetic messages about feeling warm.
var/cold_discomfort_level = 285 // Aesthetic messages about feeling chilly.
var/list/heat_discomfort_strings = list(
"You feel sweat drip down your neck.",
"You feel uncomfortably warm.",
"Your skin prickles in the heat."
)
var/list/cold_discomfort_strings = list(
"You feel chilly.",
"You shiver suddenly.",
"Your chilly flesh stands out in goosebumps."
)
var/metabolic_rate = 1
@@ -135,7 +152,12 @@
var/flags = 0 // Various specific features.
var/appearance_flags = 0 // Appearance/display related features.
var/spawn_flags = 0 // Flags that specify who can spawn as this species
var/slowdown = 0 // Passive movement speed malus (or boost, if negative)
var/water_movement = 0 // How much faster or slower the species is in water
var/snow_movement = 0 // How much faster or slower the species is on snow
var/item_slowdown_mod = 1 // How affected by item slowdown the species is.
var/primitive_form // Lesser form, if any (ie. monkey for humans)
var/greater_form // Greater form, if any, ie. human for monkeys.
@@ -13,7 +13,6 @@
max_age = 45
health_hud_intensity = 3
male_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
female_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
male_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg'
@@ -35,6 +34,7 @@
fire_icon_state = "generic" // Humanoid is too big for them and spriting a new one is really annoying.
slowdown = -1
snow_movement = -2 // Ignores light snow
total_health = 50
brute_mod = 1.35
burn_mod = 1.35
@@ -54,12 +54,22 @@
swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL
push_flags = MONKEY|SLIME|SIMPLE_ANIMAL|ALIEN
cold_level_1 = 180
cold_level_2 = 130
cold_level_3 = 70
heat_level_1 = 320
heat_level_2 = 370
heat_level_3 = 600
cold_level_1 = 180 //Default 260
cold_level_2 = 130 //Default 200
cold_level_3 = 70 //Default 120
breath_cold_level_1 = 180 //Default 240 - Lower is better
breath_cold_level_2 = 100 //Default 180
breath_cold_level_3 = 60 //Default 100
heat_level_1 = 320 //Default 360
heat_level_2 = 370 //Default 400
heat_level_3 = 600 //Default 1000
breath_heat_level_1 = 350 //Default 380 - Higher is better
breath_heat_level_2 = 400 //Default 450
breath_heat_level_3 = 800 //Default 1250
heat_discomfort_level = 295
heat_discomfort_strings = list(
"Your feathers prickle in the heat.",
@@ -56,12 +56,22 @@
cold_level_2 = 220 //Default 200
cold_level_3 = 130 //Default 120
breath_cold_level_1 = 260 //Default 240 - Lower is better
breath_cold_level_2 = 200 //Default 180
breath_cold_level_3 = 120 //Default 100
heat_level_1 = 420 //Default 360 - Higher is better
heat_level_2 = 480 //Default 400
heat_level_3 = 1100 //Default 1000
breath_heat_level_1 = 450 //Default 380 - Higher is better
breath_heat_level_2 = 530 //Default 450
breath_heat_level_3 = 1400 //Default 1250
minimum_breath_pressure = 18 //Bigger, means they need more air
body_temperature = T20C
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
@@ -123,6 +133,7 @@
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
darksight = 8
slowdown = -0.5
snow_movement = -1 //Ignores half of light snow
brute_mod = 1.15
burn_mod = 1.15
flash_mod = 1.1
@@ -142,14 +153,24 @@
governments, something that permeates even to today's times. They prefer colder, tundra-like climates, much like their \
home worlds and speak a variety of languages, especially Siik and Akhani."
body_temperature = 320.15 //Even more cold resistant, even more flammable
cold_level_1 = 200 //Default 260
cold_level_2 = 140 //Default 200
cold_level_3 = 80 //Default 120
breath_cold_level_1 = 180 //Default 240 - Lower is better
breath_cold_level_2 = 100 //Default 180
breath_cold_level_3 = 60 //Default 100
heat_level_1 = 330 //Default 360
heat_level_2 = 380 //Default 400
heat_level_3 = 800 //Default 1000
breath_heat_level_1 = 360 //Default 380 - Higher is better
breath_heat_level_2 = 430 //Default 450
breath_heat_level_3 = 1000 //Default 1250
primitive_form = "Farwa"
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
@@ -166,6 +187,7 @@
"You feel uncomfortably warm.",
"Your overheated skin itches."
)
cold_discomfort_level = 275
has_organ = list( //No appendix.
@@ -198,6 +220,8 @@
name_language = LANGUAGE_SKRELLIAN
health_hud_intensity = 2
water_movement = -3
min_age = 19
max_age = 130
@@ -218,10 +242,18 @@
cold_level_2 = 220 //Default 200
cold_level_3 = 130 //Default 120
breath_cold_level_1 = 250 //Default 240 - Lower is better
breath_cold_level_2 = 190 //Default 180
breath_cold_level_3 = 120 //Default 100
heat_level_1 = 420 //Default 360 - Higher is better
heat_level_2 = 480 //Default 400
heat_level_3 = 1100 //Default 1000
breath_heat_level_1 = 400 //Default 380 - Higher is better
breath_heat_level_2 = 500 //Default 450
breath_heat_level_3 = 1350 //Default 1250
reagent_tag = IS_SKRELL
has_limbs = list(
@@ -250,6 +282,8 @@
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/diona)
//primitive_form = "Nymph"
slowdown = 5
snow_movement = -2 //Ignore light snow
water_movement = -4 //Ignore shallow water
rarity_value = 3
hud_type = /datum/hud_data/diona
siemens_coefficient = 0.3
@@ -99,6 +99,17 @@
/obj/item/weapon/grown
)
/obj/item/weapon/gripper/gravekeeper //Used for handling grave things, flowers, etc.
name = ""
icon_state = "gripper"
desc = "A specialized grasping tool used in the preparation and maintenance of graves."
can_hold = list(
/obj/item/seeds,
/obj/item/weapon/grown,
/obj/item/weapon/material/gravemarker
)
/obj/item/weapon/gripper/no_use/organ
name = "organ gripper"
icon_state = "gripper-flesh"
@@ -0,0 +1,78 @@
/* Other, unaffiliated modules */
// The module that borgs on the surface have. Generally has a lot of useful tools in exchange for questionable loyalty to the crew.
/obj/item/weapon/robot_module/robot/lost
name = "lost robot module"
hide_on_manifest = 1
sprites = list(
"Drone" = "drone-lost"
)
/obj/item/weapon/robot_module/robot/lost/New(var/mob/living/silicon/robot/R)
..()
// Sec
src.modules += new /obj/item/weapon/melee/baton/shocker/robot(src)
src.modules += new /obj/item/weapon/handcuffs/cyborg(src)
src.modules += new /obj/item/borg/combat/shield(src)
// Med
src.modules += new /obj/item/borg/sight/hud/med(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.modules += new /obj/item/weapon/reagent_containers/borghypo/lost(src)
// Engi
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
// Sci
src.modules += new /obj/item/device/robotanalyzer(src)
// Potato
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wire = new /datum/matter_synth/wire()
synths += wire
var/obj/item/stack/cable_coil/cyborg/C = new /obj/item/stack/cable_coil/cyborg(src)
C.synths = list(wire)
src.modules += C
/obj/item/weapon/robot_module/robot/gravekeeper
name = "gravekeeper robot module"
hide_on_manifest = 1
sprites = list(
"Drone" = "drone-gravekeeper",
"Sleek" = "sleek-gravekeeper"
)
/obj/item/weapon/robot_module/robot/gravekeeper/New(var/mob/living/silicon/robot/R)
..()
// For fending off animals and looters
src.modules += new /obj/item/weapon/melee/baton/shocker/robot(src)
src.modules += new /obj/item/borg/combat/shield(src)
// For repairing gravemarkers
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/wrench/cyborg(src)
// For growing flowers
src.modules += new /obj/item/weapon/material/minihoe(src)
src.modules += new /obj/item/weapon/material/hatchet(src)
src.modules += new /obj/item/device/analyzer/plant_analyzer(src)
src.modules += new /obj/item/weapon/storage/bag/plants(src)
src.modules += new /obj/item/weapon/robot_harvester(src)
// For digging and beautifying graves
src.modules += new /obj/item/weapon/shovel(src)
src.modules += new /obj/item/weapon/gripper/gravekeeper(src)
// For really persistent looters
src.emag = new /obj/item/weapon/gun/energy/retro/mounted(src)
var/datum/matter_synth/wood = new /datum/matter_synth/wood(25000)
synths += wood
@@ -0,0 +1,45 @@
/* Syndicate modules */
/obj/item/weapon/robot_module/robot/syndicate
name = "illegal robot module"
hide_on_manifest = 1
languages = list(
LANGUAGE_SOL_COMMON = 1,
LANGUAGE_TRADEBAND = 1,
LANGUAGE_UNATHI = 0,
LANGUAGE_SIIK = 0,
LANGUAGE_SKRELLIAN = 0,
LANGUAGE_ROOTLOCAL = 0,
LANGUAGE_GUTTER = 1,
LANGUAGE_SCHECHI = 0,
LANGUAGE_EAL = 1,
LANGUAGE_SIGN = 0
)
sprites = list(
"Cerberus" = "syndie_bloodhound",
"Cerberus - Treaded" = "syndie_treadhound",
"Ares" = "squats",
"Telemachus" = "toiletbotantag",
"WTOperator" = "hosborg",
"XI-GUS" = "spidersyndi",
"XI-ALP" = "syndi-heavy"
)
var/id
/obj/item/weapon/robot_module/robot/syndicate/New(var/mob/living/silicon/robot/R)
..()
loc = R
src.modules += new /obj/item/weapon/melee/energy/sword(src)
src.modules += new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(src)
src.modules += new /obj/item/weapon/card/emag(src)
var/jetpack = new/obj/item/weapon/tank/jetpack/carbondioxide(src)
src.modules += jetpack
R.internals = jetpack
id = R.idcard
src.modules += id
/obj/item/weapon/robot_module/robot/syndicate/Destroy()
src.modules -= id
id = null
return ..()
@@ -0,0 +1,25 @@
/mob/living/silicon/robot/gravekeeper
lawupdate = 0
scrambledcodes = 1
icon_state = "drone-lost"
modtype = "Gravekeeper"
lawchannel = "State"
braintype = "Drone"
idcard_type = /obj/item/weapon/card/id
/mob/living/silicon/robot/gravekeeper/init()
aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src)
mmi = new /obj/item/device/mmi/digital/robot(src) // Explicitly a drone.
module = new /obj/item/weapon/robot_module/robot/gravekeeper(src)
overlays.Cut()
init_id()
updatename("Gravekeeper")
if(!cell)
cell = new /obj/item/weapon/cell/high(src) // 15k cell, as recharging stations are a lot more rare on the Surface.
laws = new /datum/ai_laws/gravekeeper()
playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0)
@@ -5,6 +5,7 @@
icon_state = "crab"
icon_living = "crab"
icon_dead = "crab_dead"
faction = "crabs"
intelligence_level = SA_ANIMAL
wander = 0
@@ -45,3 +46,37 @@
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
//Sif Crabs
/mob/living/simple_animal/giant_crab
name = "Giant Crab"
desc = "A large, hard-shelled crustacean. This one is mostly grey."
icon_state = "sif_crab"
icon_living = "sif_crab"
icon_dead = "sif_crab_dead"
faction = "crabs"
intelligence_level = SA_ANIMAL
maxHealth = 200
health = 200
mob_size = MOB_LARGE
cooperative = 1
retaliate = 1
turns_per_move = 3
minbodytemp = 175
melee_damage_lower = 15
melee_damage_upper = 35
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
friendly = "pinches"
speak_chance = 1
speak_emote = list("clicks")
emote_hear = list("clicks")
emote_see = list("clacks")
@@ -78,6 +78,7 @@
W.assignment = corpseidjob
W.registered_name = M.real_name
M.equip_to_slot_or_del(W, slot_wear_id)
delete_me = 1
qdel(src)
+7
View File
@@ -1059,6 +1059,13 @@ mob/proc/yank_out_object()
/mob/proc/is_muzzled()
return 0
//Exploitable Info Update
/mob/proc/amend_exploitable(var/obj/item/I)
var/obj/item/exploit_item = new I(src.loc)
exploit_addons |= exploit_item
var/exploitmsg = html_decode("\n" + "Has " + exploit_item.name + ".")
exploit_record += exploitmsg
/client/proc/check_has_body_select()
return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel)
+1
View File
@@ -72,6 +72,7 @@
var/sec_record = ""
var/gen_record = ""
var/exploit_record = ""
var/exploit_addons = list() //Assorted things that show up at the end of the exploit_record list
var/blinded = null
var/bhunger = 0 //Carbon
var/ajourn = 0