Merge pull request #1185 from CHOMPStation2/ProteanNerf
Protean living Hardsuit, nerf refactory, remove ventcrawl
@@ -44,6 +44,8 @@
|
|||||||
var/glove_type = /obj/item/clothing/gloves/gauntlets/rig
|
var/glove_type = /obj/item/clothing/gloves/gauntlets/rig
|
||||||
var/cell_type = /obj/item/weapon/cell/high
|
var/cell_type = /obj/item/weapon/cell/high
|
||||||
var/air_type = /obj/item/weapon/tank/oxygen
|
var/air_type = /obj/item/weapon/tank/oxygen
|
||||||
|
var/unremovable_cell = FALSE //CHOMP Edit - an addition for protean living hardsuit.
|
||||||
|
|
||||||
|
|
||||||
//Component/device holders.
|
//Component/device holders.
|
||||||
var/obj/item/weapon/tank/air_supply // Air tank, if any.
|
var/obj/item/weapon/tank/air_supply // Air tank, if any.
|
||||||
@@ -899,14 +901,19 @@
|
|||||||
wearer.lay_down()
|
wearer.lay_down()
|
||||||
to_chat(user, "<span class='notice'>\The [wearer] is now [wearer.resting ? "resting" : "getting up"].</span>")
|
to_chat(user, "<span class='notice'>\The [wearer] is now [wearer.resting ? "resting" : "getting up"].</span>")
|
||||||
|
|
||||||
/obj/item/weapon/rig/proc/forced_move(var/direction, var/mob/user)
|
/obj/item/weapon/rig/proc/forced_move(var/direction, var/mob/user, var/ai_moving = TRUE)
|
||||||
|
|
||||||
// Why is all this shit in client/Move()? Who knows?
|
// Why is all this shit in client/Move()? Who knows?
|
||||||
if(world.time < wearer_move_delay)
|
if(world.time < wearer_move_delay)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!wearer || !wearer.loc || !ai_can_move_suit(user, check_user_module = 1))
|
if(!wearer || !wearer.loc) //CHOMP Edit - Removed some stuff for protean living hardsuit
|
||||||
return
|
return
|
||||||
|
|
||||||
|
//CHOMP Addition - Added this for protean living hardsuit
|
||||||
|
if(ai_moving)
|
||||||
|
if(!ai_can_move_suit(user, check_user_module = 1))
|
||||||
|
return
|
||||||
|
|
||||||
//This is sota the goto stop mobs from moving var
|
//This is sota the goto stop mobs from moving var
|
||||||
if(wearer.transforming || !wearer.canmove)
|
if(wearer.transforming || !wearer.canmove)
|
||||||
@@ -965,7 +972,10 @@
|
|||||||
wearer_move_delay += 2
|
wearer_move_delay += 2
|
||||||
return wearer.buckled.relaymove(wearer,direction)
|
return wearer.buckled.relaymove(wearer,direction)
|
||||||
|
|
||||||
cell.use(200) //Arbitrary, TODO
|
var/power_cost = 200
|
||||||
|
if(!ai_moving)
|
||||||
|
power_cost = 20
|
||||||
|
cell.use(power_cost) //Arbitrary, TODO
|
||||||
wearer.Move(get_step(get_turf(wearer),direction),direction)
|
wearer.Move(get_step(get_turf(wearer),direction),direction)
|
||||||
|
|
||||||
// This returns the rig if you are contained inside one, but not if you are wearing it
|
// This returns the rig if you are contained inside one, but not if you are wearing it
|
||||||
|
|||||||
@@ -136,7 +136,7 @@
|
|||||||
|
|
||||||
if("cell")
|
if("cell")
|
||||||
|
|
||||||
if(cell)
|
if(cell && !unremovable_cell) //CHOMP Edit - addition for living protean hardsuit
|
||||||
to_chat(user, "You detach \the [cell] from \the [src]'s battery mount.")
|
to_chat(user, "You detach \the [cell] from \the [src]'s battery mount.")
|
||||||
for(var/obj/item/rig_module/module in installed_modules)
|
for(var/obj/item/rig_module/module in installed_modules)
|
||||||
module.deactivate()
|
module.deactivate()
|
||||||
|
|||||||
213
code/modules/clothing/spacesuits/rig/suits/alien_ch.dm
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
/*
|
||||||
|
proteans
|
||||||
|
*/
|
||||||
|
/obj/item/weapon/rig/protean
|
||||||
|
name = "nanosuit control cluster"
|
||||||
|
suit_type = "nanomachine"
|
||||||
|
icon = 'icons/obj/rig_modules_ch.dmi'
|
||||||
|
icon_state = "nanomachine_rig"
|
||||||
|
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 90)
|
||||||
|
siemens_coefficient= 0.5
|
||||||
|
slowdown = 0
|
||||||
|
offline_slowdown = 0
|
||||||
|
seal_delay = 1
|
||||||
|
var/mob/living/carbon/human/myprotean
|
||||||
|
initial_modules = list(/obj/item/rig_module/power_sink)
|
||||||
|
|
||||||
|
helm_type = /obj/item/clothing/head/helmet/space/rig/protean //These are important for sprite pointers
|
||||||
|
boot_type = /obj/item/clothing/shoes/magboots/rig/protean
|
||||||
|
chest_type = /obj/item/clothing/suit/space/rig/protean
|
||||||
|
glove_type = /obj/item/clothing/gloves/gauntlets/rig/protean
|
||||||
|
|
||||||
|
//I doooon't think I can get rig_back.dmi as a _ch file. That is part of /obj/item/weapon/rig/update_icon(var/update_mob_icon).
|
||||||
|
|
||||||
|
/obj/item/weapon/rig/protean/relaymove(mob/user, var/direction)
|
||||||
|
if(user.stat || user.stunned)
|
||||||
|
return
|
||||||
|
forced_move(direction, user, FALSE)
|
||||||
|
|
||||||
|
/obj/item/clothing/head/helmet/space/rig/protean
|
||||||
|
name = "mass"
|
||||||
|
desc = "A helmet-shaped clump of nanomachines."
|
||||||
|
siemens_coefficient= 0
|
||||||
|
light_overlay = "should not use a light overlay"
|
||||||
|
species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid ie uses human spritesheets
|
||||||
|
|
||||||
|
/obj/item/clothing/gloves/gauntlets/rig/protean
|
||||||
|
name = "mass"
|
||||||
|
desc = "Glove-shaped clusters of nanomachines."
|
||||||
|
siemens_coefficient= 0
|
||||||
|
species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid.
|
||||||
|
|
||||||
|
/obj/item/clothing/shoes/magboots/rig/protean
|
||||||
|
name = "mass"
|
||||||
|
desc = "Boot-shaped clusters of nanomachines."
|
||||||
|
siemens_coefficient= 0
|
||||||
|
species_restricted = list(SPECIES_HUMAN, SPECIES_PROMETHEAN, SPECIES_VASILISSAN, SPECIES_ALRAUNE) //anything that's roughly humanoid.
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/space/rig/protean
|
||||||
|
name = "mass"
|
||||||
|
desc = "A body-hugging mass of nanomachines."
|
||||||
|
siemens_coefficient= 0
|
||||||
|
can_breach = 0
|
||||||
|
species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN)
|
||||||
|
allowed = list(
|
||||||
|
/obj/item/weapon/gun,
|
||||||
|
/obj/item/device/flashlight,
|
||||||
|
/obj/item/weapon/tank,
|
||||||
|
/obj/item/device/suit_cooling_unit,
|
||||||
|
/obj/item/weapon/melee/baton,
|
||||||
|
/obj/item/weapon/storage/backpack,
|
||||||
|
) //Subspace radio is in for the citadel version. IDK if we have that and I don't think we need it so I removed it from this list.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Backend stuff to make the sprites work. Copied and pasted from rig_pieces_vr.dm, but added ch to everything. Only reason for this to be touched is to add or remove species. This might just need to go in a new file named rig_pieces_ch.dm.
|
||||||
|
/obj/item/clothing/head/helmet/space/rig/protean
|
||||||
|
sprite_sheets = list(
|
||||||
|
SPECIES_HUMAN = 'icons/mob/head_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/mob/species/tajaran/helmet_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/mob/species/akula/helmet_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/mob/species/sergal/helmet_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/mob/species/sergal/helmet_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/helmet_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/mob/species/fox/helmet_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/mob/species/vulpkanin/helmet_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/mob/species/skrell/helmet_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/mob/species/seromi/head_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/mob/species/skrell/helmet_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/mob/species/vox/head_ch.dmi'
|
||||||
|
)
|
||||||
|
|
||||||
|
sprite_sheets_obj = list(
|
||||||
|
SPECIES_HUMAN = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/obj/clothing/hats_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/obj/clothing/hats_ch.dmi'
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/space/rig/protean
|
||||||
|
sprite_sheets = list(
|
||||||
|
SPECIES_HUMAN = 'icons/mob/spacesuit_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/mob/species/tajaran/suit_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/mob/species/skrell/suit_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/mob/species/unathi/suit_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/mob/species/unathi/suit_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/mob/species/akula/suit_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/mob/species/sergal/suit_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/mob/species/sergal/suit_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/suit_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/mob/species/fox/suit_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/mob/species/vulpkanin/suit_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/mob/species/skrell/suit_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/mob/species/seromi/suit_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/mob/species/skrell/suit_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/mob/species/vox/suit_ch.dmi'
|
||||||
|
)
|
||||||
|
|
||||||
|
sprite_sheets_obj = list(
|
||||||
|
SPECIES_HUMAN = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/obj/clothing/spacesuits_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/obj/clothing/spacesuits_ch.dmi'
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/item/clothing/gloves/gauntlets/rig/protean
|
||||||
|
sprite_sheets = list(
|
||||||
|
SPECIES_HUMAN = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/mob/hands_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/mob/species/vox/gloves_ch.dmi'
|
||||||
|
)
|
||||||
|
|
||||||
|
sprite_sheets_obj = list(
|
||||||
|
SPECIES_HUMAN = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/obj/clothing/gloves_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/obj/clothing/gloves_ch.dmi'
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/item/clothing/shoes/magboots/rig/protean
|
||||||
|
sprite_sheets = list(
|
||||||
|
SPECIES_HUMAN = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/mob/feet_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/mob/species/vox/shoes_ch.dmi'
|
||||||
|
)
|
||||||
|
|
||||||
|
sprite_sheets_obj = list(
|
||||||
|
SPECIES_HUMAN = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_TAJ = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_SKRELL = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_UNATHI = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_XENOHYBRID = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_AKULA = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_SERGAL = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_NEVREAN = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_VULPKANIN = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_ZORREN_HIGH = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_FENNEC = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_PROMETHEAN = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_TESHARI = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_VASILISSAN = 'icons/obj/clothing/shoes_ch.dmi',
|
||||||
|
SPECIES_VOX = 'icons/obj/clothing/shoes_ch.dmi'
|
||||||
|
)
|
||||||
@@ -17,13 +17,13 @@
|
|||||||
// ai_inactive = TRUE //Always off //VORESTATION AI TEMPORARY REMOVAL
|
// ai_inactive = TRUE //Always off //VORESTATION AI TEMPORARY REMOVAL
|
||||||
show_stat_health = FALSE //We will do it ourselves
|
show_stat_health = FALSE //We will do it ourselves
|
||||||
|
|
||||||
response_help = "pets"
|
response_help = "pets the" //CHOMP Edit
|
||||||
response_disarm = "gently pushes aside"
|
response_disarm = "gently pushes aside the " //CHOMP Edit
|
||||||
response_harm = "hits"
|
response_harm = "hits the" //CHOMP Edit
|
||||||
|
|
||||||
harm_intent_damage = 2
|
harm_intent_damage = 3
|
||||||
melee_damage_lower = 10
|
melee_damage_lower = 5 //CHOMP Edit
|
||||||
melee_damage_upper = 10
|
melee_damage_upper = 5 //CHOMP Edit
|
||||||
attacktext = list("slashed")
|
attacktext = list("slashed")
|
||||||
|
|
||||||
min_oxy = 0
|
min_oxy = 0
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
max_n2 = 0
|
max_n2 = 0
|
||||||
minbodytemp = 0
|
minbodytemp = 0
|
||||||
maxbodytemp = 900
|
maxbodytemp = 900
|
||||||
movement_cooldown = 3
|
movement_cooldown = 2 //CHOMP Edit
|
||||||
|
|
||||||
var/mob/living/carbon/human/humanform
|
var/mob/living/carbon/human/humanform
|
||||||
var/obj/item/organ/internal/nano/refactory/refactory
|
var/obj/item/organ/internal/nano/refactory/refactory
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
var/human_brute = 0
|
var/human_brute = 0
|
||||||
var/human_burn = 0
|
var/human_burn = 0
|
||||||
|
|
||||||
player_msg = "In this form, you can move a little faster, your health will regenerate as long as you have metal in you, and you can ventcrawl!"
|
player_msg = "In this form, your health will regenerate as long as you have metal in you." //CHOMP Edit removed ventcrawl
|
||||||
|
|
||||||
can_buckle = TRUE //Blobsurfing
|
can_buckle = TRUE //Blobsurfing
|
||||||
|
|
||||||
@@ -64,8 +64,10 @@
|
|||||||
humanform = H
|
humanform = H
|
||||||
updatehealth()
|
updatehealth()
|
||||||
refactory = locate() in humanform.internal_organs
|
refactory = locate() in humanform.internal_organs
|
||||||
verbs |= /mob/living/proc/ventcrawl
|
// verbs |= /mob/living/proc/ventcrawl //CHOMP Removal
|
||||||
verbs |= /mob/living/proc/hide
|
verbs |= /mob/living/proc/hide
|
||||||
|
verbs |= /mob/living/simple_mob/protean_blob/proc/rig_transform //CHOMP Addition
|
||||||
|
verbs |= /mob/living/proc/usehardsuit //CHOMP Addition
|
||||||
else
|
else
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -267,14 +269,31 @@
|
|||||||
if(refactory && istype(A,/obj/item/stack/material))
|
if(refactory && istype(A,/obj/item/stack/material))
|
||||||
var/obj/item/stack/material/S = A
|
var/obj/item/stack/material/S = A
|
||||||
var/substance = S.material.name
|
var/substance = S.material.name
|
||||||
var/list/edible_materials = list("steel", "plasteel", "diamond", "mhydrogen") //Can't eat all materials, just useful ones.
|
var/list/edible_materials = list(MAT_STEEL) //Can't eat all materials, just useful ones.
|
||||||
var allowed = FALSE
|
var/allowed = FALSE //CHOMP Edit
|
||||||
for(var/material in edible_materials)
|
for(var/material in edible_materials)
|
||||||
if(material == substance) allowed = TRUE
|
if(material == substance)
|
||||||
|
allowed = TRUE
|
||||||
if(!allowed)
|
if(!allowed)
|
||||||
return
|
return
|
||||||
if(refactory.add_stored_material(S.material.name,1*S.perunit) && S.use(1))
|
if(refactory.add_stored_material(S.material.name,1*S.perunit) && S.use(1))
|
||||||
visible_message("<b>[name]</b> gloms over some of \the [S], absorbing it.")
|
visible_message("<b>[name]</b> gloms over some of \the [S], absorbing it.")
|
||||||
|
else if(isitem(A) && a_intent == "grab") //CHOMP Add all this block, down to I.forceMove.
|
||||||
|
var/obj/item/I = A
|
||||||
|
if(!vore_selected)
|
||||||
|
to_chat(src,"<span class='warning'>You either don't have a belly selected, or don't have a belly!</span>")
|
||||||
|
return FALSE
|
||||||
|
if(is_type_in_list(I,item_vore_blacklist) || I.anchored)
|
||||||
|
to_chat(src, "<span class='warning'>You can't eat this.</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
if(is_type_in_list(I,edible_trash) | adminbus_trash)
|
||||||
|
if(I.hidden_uplink)
|
||||||
|
to_chat(src, "<span class='warning'>You really should not be eating this.</span>")
|
||||||
|
message_admins("[key_name(src)] has attempted to ingest an uplink item. ([src ? "<a href='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>" : "null"])")
|
||||||
|
return
|
||||||
|
visible_message("<b>[name]</b> stretches itself over the [I], engulfing it whole!")
|
||||||
|
I.forceMove(vore_selected)
|
||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
@@ -283,7 +302,7 @@
|
|||||||
var/obj/item/stack/material/S = O
|
var/obj/item/stack/material/S = O
|
||||||
var/substance = S.material.name
|
var/substance = S.material.name
|
||||||
var/list/edible_materials = list("steel", "plasteel", "diamond", "mhydrogen") //Can't eat all materials, just useful ones.
|
var/list/edible_materials = list("steel", "plasteel", "diamond", "mhydrogen") //Can't eat all materials, just useful ones.
|
||||||
var allowed = FALSE
|
var/allowed = FALSE //CHOMP Edit
|
||||||
for(var/material in edible_materials)
|
for(var/material in edible_materials)
|
||||||
if(material == substance) allowed = TRUE
|
if(material == substance) allowed = TRUE
|
||||||
if(!allowed)
|
if(!allowed)
|
||||||
@@ -292,7 +311,20 @@
|
|||||||
visible_message("<b>[name]</b> gloms over some of \the [S], absorbing it.")
|
visible_message("<b>[name]</b> gloms over some of \the [S], absorbing it.")
|
||||||
else
|
else
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/mob/living/simple_mob/protean_blob/attack_hand(mob/living/L) //CHOMP Add this whole block.
|
||||||
|
if(L.get_effective_size() >= (src.get_effective_size() + 0.5) )
|
||||||
|
src.get_scooped(L)
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
/mob/living/simple_mob/protean_blob/MouseDrop(var/atom/over_object) //CHOMP Add this whole block.
|
||||||
|
if(ishuman(over_object) && usr == src && src.Adjacent(over_object))
|
||||||
|
var/mob/living/carbon/human/H = over_object
|
||||||
|
get_scooped(H, TRUE)
|
||||||
|
else
|
||||||
|
return ..()
|
||||||
|
|
||||||
/mob/living/simple_mob/protean_blob/MouseEntered(location,control,params)
|
/mob/living/simple_mob/protean_blob/MouseEntered(location,control,params)
|
||||||
if(resting)
|
if(resting)
|
||||||
return
|
return
|
||||||
@@ -306,6 +338,8 @@ var/global/list/disallowed_protean_accessories = list(
|
|||||||
|
|
||||||
// Helpers - Unsafe, WILL perform change.
|
// Helpers - Unsafe, WILL perform change.
|
||||||
/mob/living/carbon/human/proc/nano_intoblob()
|
/mob/living/carbon/human/proc/nano_intoblob()
|
||||||
|
if(loc == /obj/item/weapon/rig/protean)
|
||||||
|
return
|
||||||
var/panel_was_up = FALSE
|
var/panel_was_up = FALSE
|
||||||
if(client?.statpanel == "Protean")
|
if(client?.statpanel == "Protean")
|
||||||
panel_was_up = TRUE
|
panel_was_up = TRUE
|
||||||
@@ -341,6 +375,8 @@ var/global/list/disallowed_protean_accessories = list(
|
|||||||
things_to_drop -= things_to_not_drop //Crunch the lists
|
things_to_drop -= things_to_not_drop //Crunch the lists
|
||||||
things_to_drop -= organs //Mah armbs
|
things_to_drop -= organs //Mah armbs
|
||||||
things_to_drop -= internal_organs //Mah sqeedily spooch
|
things_to_drop -= internal_organs //Mah sqeedily spooch
|
||||||
|
for(var/obj/item/weapon/rig/protean/O in things_to_drop) //CHOMP Add
|
||||||
|
things_to_drop -= O //CHOMP Add
|
||||||
|
|
||||||
for(var/obj/item/I in things_to_drop) //rip hoarders
|
for(var/obj/item/I in things_to_drop) //rip hoarders
|
||||||
drop_from_inventory(I)
|
drop_from_inventory(I)
|
||||||
@@ -397,10 +433,44 @@ var/global/list/disallowed_protean_accessories = list(
|
|||||||
remove_micros(I, root) //Recursion. I'm honestly depending on there being no containment loop, but at the cost of performance that can be fixed too.
|
remove_micros(I, root) //Recursion. I'm honestly depending on there being no containment loop, but at the cost of performance that can be fixed too.
|
||||||
if(istype(I, /obj/item/weapon/holder))
|
if(istype(I, /obj/item/weapon/holder))
|
||||||
root.remove_from_mob(I)
|
root.remove_from_mob(I)
|
||||||
|
|
||||||
|
//CHOMP Add start
|
||||||
|
/mob/living/simple_mob/protean_blob/proc/rig_transform() //CHOMP Add this whole block.
|
||||||
|
set name = "Modify Form - Hardsuit"
|
||||||
|
set desc = "Allows a protean blob to solidify its form into one extremely similar to a hardsuit."
|
||||||
|
set category = "Abilities"
|
||||||
|
|
||||||
|
if(istype(loc, /obj/item/weapon/rig/protean))
|
||||||
|
var/obj/item/weapon/rig/protean/prig = loc
|
||||||
|
src.forceMove(get_turf(prig))
|
||||||
|
qdel(prig)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(isturf(loc))
|
||||||
|
var/obj/item/weapon/rig/protean/prig = new(loc)
|
||||||
|
if(prig)
|
||||||
|
prig.forceMove(get_turf(src))
|
||||||
|
src.forceMove(prig)
|
||||||
|
return
|
||||||
|
|
||||||
|
/mob/living/proc/usehardsuit()
|
||||||
|
set name = "Utilize Hardsuit Interface"
|
||||||
|
set desc = "Allows a protean blob to open hardsuit interface."
|
||||||
|
set category = "Abilities"
|
||||||
|
|
||||||
|
if(istype(loc, /obj/item/weapon/rig/protean))
|
||||||
|
var/obj/item/weapon/rig/protean/prig = loc
|
||||||
|
to_chat(src, "You attempt to interface with the [prig].")
|
||||||
|
prig.ui_interact(src, nano_state = interactive_state)
|
||||||
|
else
|
||||||
|
to_chat(src, "You are not in RIG form.")
|
||||||
|
//CHOMP Add end
|
||||||
|
|
||||||
/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob)
|
/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob)
|
||||||
if(!istype(blob))
|
if(!istype(blob))
|
||||||
return
|
return
|
||||||
|
if(blob.loc == /obj/item/weapon/rig/protean)
|
||||||
|
return
|
||||||
|
|
||||||
var/panel_was_up = FALSE
|
var/panel_was_up = FALSE
|
||||||
if(client?.statpanel == "Protean")
|
if(client?.statpanel == "Protean")
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
//TODO: Replace ventcrawl with morphing. /mob/living/simple_mob/vore/hostile/morph
|
||||||
#define PER_LIMB_STEEL_COST SHEET_MATERIAL_AMOUNT
|
#define PER_LIMB_STEEL_COST SHEET_MATERIAL_AMOUNT
|
||||||
////
|
////
|
||||||
// One-part Refactor
|
// One-part Refactor
|
||||||
@@ -18,7 +19,6 @@
|
|||||||
to_chat(src,"<span class='warning'>You don't have a working refactory module!</span>")
|
to_chat(src,"<span class='warning'>You don't have a working refactory module!</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
var/choice = input(src,"Pick the bodypart to change:", "Refactor - One Bodypart") as null|anything in species.has_limbs
|
var/choice = input(src,"Pick the bodypart to change:", "Refactor - One Bodypart") as null|anything in species.has_limbs
|
||||||
if(!choice)
|
if(!choice)
|
||||||
return
|
return
|
||||||
@@ -81,12 +81,108 @@
|
|||||||
////
|
////
|
||||||
// Full Refactor
|
// Full Refactor
|
||||||
////
|
////
|
||||||
|
/*
|
||||||
|
/mob/living/carbon/human/proc/nano_regenerate()
|
||||||
|
set name = "Regenerate"
|
||||||
|
set desc = "Allows you to regrow limbs and replace organs."
|
||||||
|
set category = "Abilities"
|
||||||
|
set hidden = TRUE
|
||||||
|
|
||||||
|
if(nutrition < 250)
|
||||||
|
to_chat(src, "<span class='warning'>You lack the energy to begin regeneration!</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
if(active_regen)
|
||||||
|
to_chat(src, "<span class='warning'>You are already regenerating!</span>")
|
||||||
|
return
|
||||||
|
else
|
||||||
|
active_regen = TRUE
|
||||||
|
src.visible_message("<B>[src]</B>'s nanites begin to regenerate...")
|
||||||
|
|
||||||
|
|
||||||
|
var/mob/living/simple_mob/protean_blob/blob = nano_intoblob()
|
||||||
|
var/delay_length = round(active_regen_delay * species.active_regen_mult)
|
||||||
|
if(do_after(blob, delay_length, null, 0))
|
||||||
|
if(stat != DEAD)
|
||||||
|
adjust_nutrition(-200)
|
||||||
|
species.create_organs(src)
|
||||||
|
var/obj/item/organ/external/torso = organs_by_name[BP_TORSO]
|
||||||
|
torso.robotize() //synthetic wasn't defined here.
|
||||||
|
LAZYCLEARLIST(blood_DNA)
|
||||||
|
LAZYCLEARLIST(feet_blood_DNA)
|
||||||
|
blood_color = null
|
||||||
|
feet_blood_color = null
|
||||||
|
regenerate_icons() //Probably worth it, yeah.
|
||||||
|
to_chat(src, "<span class='notice'>Your regeneration is complete.</span>") //Guarantees the message shows no matter how bad the timing.
|
||||||
|
to_chat(blob, "<span class='notice'>Your regeneration is complete!</span>")
|
||||||
|
else
|
||||||
|
to_chat(src, "<span class='critical'>Your regeneration has failed.</span>")
|
||||||
|
to_chat(blob, "<span class='critical'>Your regeneration has failed!</span>")
|
||||||
|
else
|
||||||
|
to_chat(src, "<span class='critical'>Your regeneration is interrupted.</span>")
|
||||||
|
to_chat(blob, "<span class='critical'>Your regeneration is interrupted!</span>")
|
||||||
|
active_regen = FALSE
|
||||||
|
nano_outofblob(blob)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var/delay_length = round(active_regen_delay * species.active_regen_mult)
|
||||||
|
if(do_after(src,delay_length))
|
||||||
|
adjust_nutrition(-200)
|
||||||
|
|
||||||
|
for(var/obj/item/organ/I in internal_organs)
|
||||||
|
if(I.robotic >= ORGAN_ROBOT) // No free robofix.
|
||||||
|
continue
|
||||||
|
if(I.damage > 0)
|
||||||
|
I.damage = max(I.damage - 30, 0) //Repair functionally half of a dead internal organ.
|
||||||
|
I.status = 0 // Wipe status, as it's being regenerated from possibly dead.
|
||||||
|
to_chat(src, "<span class='notice'>You feel a soothing sensation within your [I.name]...</span>")
|
||||||
|
|
||||||
|
// Replace completely missing limbs.
|
||||||
|
for(var/limb_type in src.species.has_limbs)
|
||||||
|
var/obj/item/organ/external/E = src.organs_by_name[limb_type]
|
||||||
|
|
||||||
|
if(E && E.disfigured)
|
||||||
|
E.disfigured = 0
|
||||||
|
if(E && (E.is_stump() || (E.status & (ORGAN_DESTROYED|ORGAN_DEAD|ORGAN_MUTATED))))
|
||||||
|
E.removed()
|
||||||
|
qdel(E)
|
||||||
|
E = null
|
||||||
|
if(!E)
|
||||||
|
var/list/organ_data = src.species.has_limbs[limb_type]
|
||||||
|
var/limb_path = organ_data["path"]
|
||||||
|
var/obj/item/organ/O = new limb_path(src)
|
||||||
|
organ_data["descriptor"] = O.name
|
||||||
|
to_chat(src, "<span class='notice'>You feel a slithering sensation as your [O.name] reform.</span>")
|
||||||
|
|
||||||
|
var/agony_to_apply = round(0.66 * O.max_damage) // 66% of the limb's health is converted into pain.
|
||||||
|
src.apply_damage(agony_to_apply, HALLOSS)
|
||||||
|
|
||||||
|
for(var/organtype in species.has_organ) // Replace completely missing internal organs. -After- external ones, so they all should exist.
|
||||||
|
if(!src.internal_organs_by_name[organtype])
|
||||||
|
var/organpath = species.has_organ[organtype]
|
||||||
|
var/obj/item/organ/Int = new organpath(src, TRUE)
|
||||||
|
|
||||||
|
Int.rejuvenate(TRUE)
|
||||||
|
|
||||||
|
handle_organs() // Update everything
|
||||||
|
|
||||||
|
update_icons_body()
|
||||||
|
active_regen = FALSE
|
||||||
|
else
|
||||||
|
to_chat(src, "<span class='critical'>Your regeneration is interrupted!</span>")
|
||||||
|
adjust_nutrition(-75)
|
||||||
|
active_regen = FALSE
|
||||||
|
*/
|
||||||
|
|
||||||
/mob/living/carbon/human/proc/nano_regenerate() //fixed the proc, it used to leave active_regen true.
|
/mob/living/carbon/human/proc/nano_regenerate() //fixed the proc, it used to leave active_regen true.
|
||||||
set name = "Ref - Whole Body"
|
set name = "Ref - Whole Body"
|
||||||
set desc = "Allows you to regrow limbs and replace organs, given you have enough materials."
|
set desc = "Allows you to regrow limbs and replace organs, given you have enough materials."
|
||||||
set category = "Abilities"
|
set category = "Abilities"
|
||||||
set hidden = TRUE
|
set hidden = TRUE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(stat)
|
if(stat)
|
||||||
to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||||
return
|
return
|
||||||
@@ -178,7 +274,6 @@
|
|||||||
active_regen = FALSE
|
active_regen = FALSE
|
||||||
nano_outofblob(blob)
|
nano_outofblob(blob)
|
||||||
|
|
||||||
|
|
||||||
////
|
////
|
||||||
// Storing metal
|
// Storing metal
|
||||||
////
|
////
|
||||||
@@ -223,7 +318,7 @@
|
|||||||
visible_message("<span class='notice'>[src] devours some of the [substance] right off the stack!</span>")
|
visible_message("<span class='notice'>[src] devours some of the [substance] right off the stack!</span>")
|
||||||
else
|
else
|
||||||
to_chat(src,"<span class='notice'>You're completely capped out on [substance]!</span>")
|
to_chat(src,"<span class='notice'>You're completely capped out on [substance]!</span>")
|
||||||
|
|
||||||
////
|
////
|
||||||
// Blob Form
|
// Blob Form
|
||||||
////
|
////
|
||||||
@@ -269,6 +364,7 @@
|
|||||||
////
|
////
|
||||||
// Change size
|
// Change size
|
||||||
////
|
////
|
||||||
|
/*CHOMP Removal start - I am replacing this with the OG set size. No more metal requirement.
|
||||||
/mob/living/carbon/human/proc/nano_set_size()
|
/mob/living/carbon/human/proc/nano_set_size()
|
||||||
set name = "Adjust Volume"
|
set name = "Adjust Volume"
|
||||||
set category = "Abilities"
|
set category = "Abilities"
|
||||||
@@ -312,6 +408,7 @@
|
|||||||
to_chat(user,"<span class='warning'>Unfortunately, [cost-actually_added] steel was lost due to lack of storage space.</span>")
|
to_chat(user,"<span class='warning'>Unfortunately, [cost-actually_added] steel was lost due to lack of storage space.</span>")
|
||||||
|
|
||||||
user.visible_message("<span class='notice'>Black mist swirls around [user] as they change size.</span>")
|
user.visible_message("<span class='notice'>Black mist swirls around [user] as they change size.</span>")
|
||||||
|
CHOMP Removal end*/
|
||||||
|
|
||||||
/// /// /// A helper to reuse
|
/// /// /// A helper to reuse
|
||||||
/mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R)
|
/mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R)
|
||||||
@@ -369,11 +466,13 @@
|
|||||||
icon_state = "blob"
|
icon_state = "blob"
|
||||||
to_call = /mob/living/carbon/human/proc/nano_blobform
|
to_call = /mob/living/carbon/human/proc/nano_blobform
|
||||||
|
|
||||||
/obj/effect/protean_ability/change_volume
|
/*CHOMP removal start - This doesn't do anything at all now. Normal resize proc is being used instead.
|
||||||
|
/obj/effect/protean_ability/change_volume //CHOMP Edit
|
||||||
ability_name = "Change Volume"
|
ability_name = "Change Volume"
|
||||||
desc = "Alter your size by consuming steel to produce additional nanites, or regain steel by reducing your size and reclaiming them."
|
desc = "Alter your size between 25% and 200%." //CHOMP Edit - Removed talk about requiring metal
|
||||||
icon_state = "volume"
|
icon_state = "volume"
|
||||||
to_call = /mob/living/carbon/human/proc/nano_set_size
|
to_call = /mob/living/carbon/human/proc/nano_set_size
|
||||||
|
CHOMP removal end*/
|
||||||
|
|
||||||
/obj/effect/protean_ability/reform_limb
|
/obj/effect/protean_ability/reform_limb
|
||||||
ability_name = "Ref - Single Limb"
|
ability_name = "Ref - Single Limb"
|
||||||
@@ -386,11 +485,11 @@
|
|||||||
desc = "Rebuild your entire body into whatever design you want, assuming you have 10,000 metal."
|
desc = "Rebuild your entire body into whatever design you want, assuming you have 10,000 metal."
|
||||||
icon_state = "body"
|
icon_state = "body"
|
||||||
to_call = /mob/living/carbon/human/proc/nano_regenerate
|
to_call = /mob/living/carbon/human/proc/nano_regenerate
|
||||||
|
|
||||||
/obj/effect/protean_ability/metal_nom
|
/obj/effect/protean_ability/metal_nom
|
||||||
ability_name = "Ref - Store Metals"
|
ability_name = "Ref - Store Metals"
|
||||||
desc = "Store the metal you're holding. Your refactory can only store steel, and all other metals will be converted into nanites ASAP for various effects."
|
desc = "Store the metal you're holding. Your refactory can only store steel, and all other metals will be converted into nanites ASAP for various effects."
|
||||||
icon_state = "metal"
|
icon_state = "metal"
|
||||||
to_call = /mob/living/carbon/human/proc/nano_metalnom
|
to_call = /mob/living/carbon/human/proc/nano_metalnom
|
||||||
|
|
||||||
#undef PER_LIMB_STEEL_COST
|
#undef PER_LIMB_STEEL_COST
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#define DAM_SCALE_FACTOR 0.01
|
#define DAM_SCALE_FACTOR 0.01
|
||||||
#define METAL_PER_TICK 100
|
#define METAL_PER_TICK 100 //CHOMP Removal
|
||||||
/datum/species/protean
|
/datum/species/protean
|
||||||
name = SPECIES_PROTEAN
|
name = SPECIES_PROTEAN
|
||||||
name_plural = "Proteans"
|
name_plural = "Proteans"
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT | NO_HALLUCINATION | NO_INFECT | NO_PAIN
|
flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT | NO_HALLUCINATION | NO_INFECT | NO_PAIN
|
||||||
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS
|
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS
|
||||||
spawn_flags = SPECIES_IS_RESTRICTED //SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE CHOMPedit: disabled probably forever
|
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
|
||||||
health_hud_intensity = 2
|
health_hud_intensity = 2
|
||||||
num_alternate_languages = 3
|
num_alternate_languages = 3
|
||||||
assisted_langs = list(LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
|
assisted_langs = list(LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
has_organ = list(
|
has_organ = list(
|
||||||
O_BRAIN = /obj/item/organ/internal/mmi_holder/posibrain/nano,
|
O_BRAIN = /obj/item/organ/internal/mmi_holder/posibrain/nano,
|
||||||
O_ORCH = /obj/item/organ/internal/nano/orchestrator,
|
O_ORCH = /obj/item/organ/internal/nano/orchestrator,
|
||||||
O_FACT = /obj/item/organ/internal/nano/refactory
|
O_FACT = /obj/item/organ/internal/nano/refactory,
|
||||||
)
|
)
|
||||||
has_limbs = list(
|
has_limbs = list(
|
||||||
BP_TORSO = list("path" = /obj/item/organ/external/chest/unbreakable/nano),
|
BP_TORSO = list("path" = /obj/item/organ/external/chest/unbreakable/nano),
|
||||||
@@ -91,8 +91,8 @@
|
|||||||
/mob/living/carbon/human/proc/nano_regenerate, //These verbs are hidden so you can macro them,
|
/mob/living/carbon/human/proc/nano_regenerate, //These verbs are hidden so you can macro them,
|
||||||
/mob/living/carbon/human/proc/nano_partswap,
|
/mob/living/carbon/human/proc/nano_partswap,
|
||||||
/mob/living/carbon/human/proc/nano_metalnom,
|
/mob/living/carbon/human/proc/nano_metalnom,
|
||||||
/mob/living/carbon/human/proc/nano_blobform,
|
/mob/living/carbon/human/proc/nano_blobform,
|
||||||
/mob/living/carbon/human/proc/nano_set_size,
|
/mob/living/proc/set_size,
|
||||||
/mob/living/carbon/human/proc/nano_change_fitting, //These verbs are displayed normally,
|
/mob/living/carbon/human/proc/nano_change_fitting, //These verbs are displayed normally,
|
||||||
/mob/living/carbon/human/proc/shapeshifter_select_hair,
|
/mob/living/carbon/human/proc/shapeshifter_select_hair,
|
||||||
/mob/living/carbon/human/proc/shapeshifter_select_hair_colors,
|
/mob/living/carbon/human/proc/shapeshifter_select_hair_colors,
|
||||||
@@ -101,9 +101,14 @@
|
|||||||
/mob/living/carbon/human/proc/shapeshifter_select_gender,
|
/mob/living/carbon/human/proc/shapeshifter_select_gender,
|
||||||
/mob/living/carbon/human/proc/shapeshifter_select_wings,
|
/mob/living/carbon/human/proc/shapeshifter_select_wings,
|
||||||
/mob/living/carbon/human/proc/shapeshifter_select_tail,
|
/mob/living/carbon/human/proc/shapeshifter_select_tail,
|
||||||
/mob/living/carbon/human/proc/shapeshifter_select_ears
|
/mob/living/carbon/human/proc/shapeshifter_select_ears,
|
||||||
)
|
/mob/living/carbon/human/proc/succubus_drain,
|
||||||
|
/mob/living/carbon/human/proc/slime_feed,
|
||||||
|
/mob/living/carbon/human/proc/succubus_drain_finalize,
|
||||||
|
/mob/living/carbon/human/proc/succubus_drain_lethal,
|
||||||
|
/mob/living/proc/eat_trash
|
||||||
|
) //CHOMP Edit - Added succ stuff that promies have too. Also changed nano_set_size to standard set_size so there is no metal cost.
|
||||||
|
|
||||||
var/global/list/abilities = list()
|
var/global/list/abilities = list()
|
||||||
|
|
||||||
var/monochromatic = FALSE //IGNORE ME
|
var/monochromatic = FALSE //IGNORE ME
|
||||||
@@ -135,8 +140,8 @@
|
|||||||
|
|
||||||
/datum/species/protean/equip_survival_gear(var/mob/living/carbon/human/H)
|
/datum/species/protean/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||||
var/obj/item/stack/material/steel/metal_stack = new()
|
var/obj/item/stack/material/steel/metal_stack = new()
|
||||||
metal_stack.amount = 3
|
metal_stack.amount = 5 //CHOMP Edit
|
||||||
|
|
||||||
var/obj/item/clothing/accessory/permit/nanotech/permit = new()
|
var/obj/item/clothing/accessory/permit/nanotech/permit = new()
|
||||||
permit.set_name(H.real_name)
|
permit.set_name(H.real_name)
|
||||||
|
|
||||||
@@ -155,6 +160,9 @@
|
|||||||
new_nif.quick_implant(H)
|
new_nif.quick_implant(H)
|
||||||
else
|
else
|
||||||
H.nif.durability = rand(21,25)
|
H.nif.durability = rand(21,25)
|
||||||
|
|
||||||
|
var/obj/item/weapon/rig/protean/prig = new /obj/item/weapon/rig/protean(H)
|
||||||
|
prig.myprotean = H
|
||||||
|
|
||||||
/datum/species/protean/hug(var/mob/living/carbon/human/H, var/mob/living/target)
|
/datum/species/protean/hug(var/mob/living/carbon/human/H, var/mob/living/target)
|
||||||
return ..() //Wut
|
return ..() //Wut
|
||||||
@@ -174,7 +182,7 @@
|
|||||||
H.ckey = H.temporary_form.ckey
|
H.ckey = H.temporary_form.ckey
|
||||||
QDEL_NULL(H.temporary_form)
|
QDEL_NULL(H.temporary_form)
|
||||||
|
|
||||||
to_chat(H, "<span class='warning'>You died as a Protean. Please sit out of the round for at least 60 minutes before respawning, to represent the time it would take to ship a new-you to the station.</span>")
|
to_chat(H, "<span class='warning'>You died as a Protean. Please sit out of the round for at least 5 or 10 minutes before respawning, to represent the time it would take to ship a new-you to the station, depending on how you died.</span>")
|
||||||
|
|
||||||
for(var/obj/item/organ/I in H.internal_organs)
|
for(var/obj/item/organ/I in H.internal_organs)
|
||||||
I.removed()
|
I.removed()
|
||||||
@@ -189,6 +197,7 @@
|
|||||||
H.nano_intoblob()
|
H.nano_intoblob()
|
||||||
return ..() //Any instakill shot runtimes since there are no organs after this. No point to not skip these checks, going to nullspace anyway.
|
return ..() //Any instakill shot runtimes since there are no organs after this. No point to not skip these checks, going to nullspace anyway.
|
||||||
|
|
||||||
|
/*CHOMP Station removal start
|
||||||
var/obj/item/organ/internal/nano/refactory/refactory = locate() in H.internal_organs
|
var/obj/item/organ/internal/nano/refactory/refactory = locate() in H.internal_organs
|
||||||
if(refactory && !(refactory.status & ORGAN_DEAD))
|
if(refactory && !(refactory.status & ORGAN_DEAD))
|
||||||
|
|
||||||
@@ -209,6 +218,7 @@
|
|||||||
H.add_modifier(/datum/modifier/protean/silver, origin = refactory)
|
H.add_modifier(/datum/modifier/protean/silver, origin = refactory)
|
||||||
|
|
||||||
return ..()
|
return ..()
|
||||||
|
CHOMP Station removal end*/
|
||||||
|
|
||||||
/datum/species/protean/get_additional_examine_text(var/mob/living/carbon/human/H)
|
/datum/species/protean/get_additional_examine_text(var/mob/living/carbon/human/H)
|
||||||
return ..() //Hmm, what could be done here?
|
return ..() //Hmm, what could be done here?
|
||||||
@@ -230,7 +240,7 @@
|
|||||||
for(var/ability in abilities)
|
for(var/ability in abilities)
|
||||||
var/obj/effect/protean_ability/A = ability
|
var/obj/effect/protean_ability/A = ability
|
||||||
stat("[A.ability_name]",A.atom_button_text())
|
stat("[A.ability_name]",A.atom_button_text())
|
||||||
|
|
||||||
// Various modifiers
|
// Various modifiers
|
||||||
/datum/modifier/protean
|
/datum/modifier/protean
|
||||||
stacks = MODIFIER_STACK_FORBID
|
stacks = MODIFIER_STACK_FORBID
|
||||||
@@ -261,6 +271,7 @@
|
|||||||
if(!refactory.use_stored_material(material_name,material_use))
|
if(!refactory.use_stored_material(material_name,material_use))
|
||||||
expire()
|
expire()
|
||||||
|
|
||||||
|
/*CHOMP Removal start
|
||||||
/datum/modifier/protean/mhydrogen
|
/datum/modifier/protean/mhydrogen
|
||||||
name = "Protean Effect - M.Hydrogen"
|
name = "Protean Effect - M.Hydrogen"
|
||||||
desc = "You're affected by the presence of metallic hydrogen."
|
desc = "You're affected by the presence of metallic hydrogen."
|
||||||
@@ -305,6 +316,7 @@
|
|||||||
|
|
||||||
accuracy = 30
|
accuracy = 30
|
||||||
evasion = 30
|
evasion = 30
|
||||||
|
CHOMP Removal end*/
|
||||||
|
|
||||||
/datum/modifier/protean/steel
|
/datum/modifier/protean/steel
|
||||||
name = "Protean Effect - Steel"
|
name = "Protean Effect - Steel"
|
||||||
@@ -328,6 +340,7 @@
|
|||||||
else if(O.status & ORGAN_DEAD)
|
else if(O.status & ORGAN_DEAD)
|
||||||
O.status &= ~ORGAN_DEAD //Unset dead if we repaired it entirely
|
O.status &= ~ORGAN_DEAD //Unset dead if we repaired it entirely
|
||||||
|
|
||||||
|
|
||||||
// PAN Card
|
// PAN Card
|
||||||
/obj/item/clothing/accessory/permit/nanotech
|
/obj/item/clothing/accessory/permit/nanotech
|
||||||
name = "\improper P.A.N. card"
|
name = "\improper P.A.N. card"
|
||||||
@@ -349,6 +362,28 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
. += validstring
|
. += validstring
|
||||||
. += registring
|
. += registring
|
||||||
|
|
||||||
|
//CHOMP Add start
|
||||||
|
/mob/living/carbon/human/proc/rig_transform()
|
||||||
|
set name = "Modify Form - Hardsuit"
|
||||||
|
set desc = "Allows a protean to solidify its form into one extremely similar to a hardsuit."
|
||||||
|
set category = "Abilities"
|
||||||
|
|
||||||
|
if(istype(loc, /obj/item/weapon/rig/protean))
|
||||||
|
var/obj/item/weapon/rig/protean/prig = loc
|
||||||
|
src.forceMove(get_turf(prig))
|
||||||
|
prig.forceMove(src)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(isturf(loc))
|
||||||
|
var/obj/item/weapon/rig/protean/prig
|
||||||
|
for(var/obj/item/weapon/rig/protean/O in contents)
|
||||||
|
prig = O
|
||||||
|
break
|
||||||
|
if(prig)
|
||||||
|
prig.forceMove(get_turf(src))
|
||||||
|
src.forceMove(prig)
|
||||||
|
return
|
||||||
|
//CHOMP Add end
|
||||||
#undef DAM_SCALE_FACTOR
|
#undef DAM_SCALE_FACTOR
|
||||||
#undef METAL_PER_TICK
|
#undef METAL_PER_TICK //CHOMP Removal
|
||||||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 4.2 KiB |
BIN
icons/mob/hands_ch.dmi
Normal file
|
After Width: | Height: | Size: 898 B |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
BIN
icons/mob/spacesuit_ch.dmi
Normal file
|
After Width: | Height: | Size: 924 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 8.1 KiB |
BIN
icons/mob/species/vox/gloves_ch.dmi
Normal file
|
After Width: | Height: | Size: 463 B |
BIN
icons/mob/species/vox/head_ch.dmi
Normal file
|
After Width: | Height: | Size: 628 B |
BIN
icons/mob/species/vox/shoes_ch.dmi
Normal file
|
After Width: | Height: | Size: 443 B |
BIN
icons/mob/species/vox/suit_ch.dmi
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 7.7 KiB |
BIN
icons/obj/clothing/gloves_ch.dmi
Normal file
|
After Width: | Height: | Size: 491 B |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
icons/obj/clothing/shoes_ch.dmi
Normal file
|
After Width: | Height: | Size: 386 B |
BIN
icons/obj/clothing/spacesuits_ch.dmi
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
icons/obj/rig_modules_ch.dmi
Normal file
|
After Width: | Height: | Size: 329 B |
@@ -2073,6 +2073,7 @@
|
|||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\vision.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\vision.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\voice.dm"
|
#include "code\modules\clothing\spacesuits\rig\modules\specific\voice.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\suits\alien.dm"
|
#include "code\modules\clothing\spacesuits\rig\suits\alien.dm"
|
||||||
|
#include "code\modules\clothing\spacesuits\rig\suits\alien_ch.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\suits\combat.dm"
|
#include "code\modules\clothing\spacesuits\rig\suits\combat.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\suits\ert.dm"
|
#include "code\modules\clothing\spacesuits\rig\suits\ert.dm"
|
||||||
#include "code\modules\clothing\spacesuits\rig\suits\ert_vr.dm"
|
#include "code\modules\clothing\spacesuits\rig\suits\ert_vr.dm"
|
||||||
|
|||||||