mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-20 19:57:28 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into 9/30/2017_golems_and_animals
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+859
-940
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user