mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
More fixes etc
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 5
|
||||
attacktext = list("slashed")
|
||||
see_in_dark = 10
|
||||
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
@@ -47,6 +48,9 @@
|
||||
player_msg = "In this form, your health will regenerate as long as you have metal in you."
|
||||
|
||||
can_buckle = 1
|
||||
buckle_lying = 1
|
||||
mount_offset_x = 0
|
||||
mount_offset_y = 0
|
||||
has_hands = 1
|
||||
shock_resist = 1
|
||||
nameset = 1
|
||||
@@ -64,14 +68,73 @@
|
||||
humanform = H
|
||||
updatehealth()
|
||||
refactory = locate() in humanform.internal_organs
|
||||
verbs |= /mob/living/proc/hide
|
||||
verbs |= /mob/living/proc/usehardsuit
|
||||
verbs |= /mob/living/simple_mob/protean_blob/proc/nano_partswap
|
||||
verbs |= /mob/living/simple_mob/protean_blob/proc/nano_regenerate
|
||||
verbs |= /mob/living/simple_mob/protean_blob/proc/nano_blobform
|
||||
verbs |= /mob/living/simple_mob/protean_blob/proc/nano_rig_transform
|
||||
verbs |= /mob/living/simple_mob/protean_blob/proc/appearance_switch
|
||||
verbs -= /mob/living/simple_mob/proc/nutrition_heal
|
||||
else
|
||||
update_icon()
|
||||
verbs |= /mob/living/proc/hide
|
||||
verbs |= /mob/living/simple_mob/proc/animal_mount
|
||||
verbs |= /mob/living/proc/toggle_rider_reins
|
||||
|
||||
//Hidden verbs for macro hotkeying
|
||||
/mob/living/simple_mob/protean_blob/proc/nano_partswap()
|
||||
set name = "Ref - Single Limb"
|
||||
set desc = "Allows you to replace and reshape your limbs as you see fit."
|
||||
set category = "Abilities"
|
||||
set hidden = 1
|
||||
humanform.nano_partswap()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/proc/nano_regenerate()
|
||||
set name = "Total Reassembly (wip)"
|
||||
set desc = "Completely reassemble yourself from whatever save slot you have loaded in preferences. Assuming you meet the requirements."
|
||||
set category = "Abilities"
|
||||
set hidden = 1
|
||||
humanform.nano_regenerate()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/proc/nano_blobform()
|
||||
set name = "Toggle Blobform"
|
||||
set desc = "Switch between amorphous and humanoid forms."
|
||||
set category = "Abilities"
|
||||
set hidden = 1
|
||||
humanform.nano_blobform()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/proc/nano_rig_transform()
|
||||
set name = "Modify Form - Hardsuit"
|
||||
set desc = "Allows a protean to retract its mass into its hardsuit module at will."
|
||||
set category = "Abilities"
|
||||
set hidden = 1
|
||||
humanform.nano_rig_transform()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/proc/appearance_switch()
|
||||
set name = "Switch Blob Appearance"
|
||||
set desc = "Allows a protean blob to switch its outwards appearance."
|
||||
set category = "Abilities"
|
||||
set hidden = 1
|
||||
humanform.appearance_switch()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/Login()
|
||||
..()
|
||||
plane_holder.set_vis(VIS_AUGMENTED, 1)
|
||||
plane_holder.set_vis(VIS_CH_HEALTH_VR, 1)
|
||||
plane_holder.set_vis(VIS_CH_ID, 1)
|
||||
plane_holder.set_vis(VIS_CH_STATUS_R, 1)
|
||||
plane_holder.set_vis(VIS_CH_BACKUP, 1) //Gonna need these so we can see the status of our host. Could probably write it so this only happens when worn, but eeehhh
|
||||
if(!riding_datum)
|
||||
riding_datum = new /datum/riding/simple_mob/protean_blob(src)
|
||||
|
||||
datum/riding/simple_mob/protean_blob/handle_vehicle_layer()
|
||||
ridden.layer = OBJ_LAYER
|
||||
|
||||
/mob/living/simple_mob/protean_blob/MouseDrop_T()
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/protean_blob/runechat_y_offset(width, height)
|
||||
return (..()) - (20*size_multiplier)
|
||||
|
||||
/mob/living/simple_mob/protean_blob/Destroy()
|
||||
humanform = null
|
||||
@@ -119,15 +182,12 @@
|
||||
if((stat < DEAD) && (health <= 0))
|
||||
death()
|
||||
|
||||
nutrition = humanform.nutrition
|
||||
|
||||
//Overhealth
|
||||
if(health > getMaxHealth())
|
||||
health = getMaxHealth()
|
||||
|
||||
//Grab any other interesting values
|
||||
confused = humanform.confused
|
||||
radiation = humanform.radiation
|
||||
paralysis = humanform.paralysis
|
||||
|
||||
//Update our hud if we have one
|
||||
if(healths)
|
||||
if(stat != DEAD)
|
||||
@@ -239,13 +299,11 @@
|
||||
/mob/living/simple_mob/protean_blob/lay_down()
|
||||
..()
|
||||
if(resting)
|
||||
animate(src,alpha = 40,time = 1 SECOND)
|
||||
mouse_opacity = 0
|
||||
plane = ABOVE_OBJ_PLANE
|
||||
else
|
||||
mouse_opacity = 1
|
||||
icon_state = "wake"
|
||||
animate(src,alpha = 255,time = 1 SECOND)
|
||||
plane = MOB_PLANE
|
||||
sleep(7)
|
||||
update_icon()
|
||||
@@ -347,6 +405,8 @@ var/global/list/disallowed_protean_accessories = list(
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
|
||||
var/client/C = client
|
||||
|
||||
//Record where they should go
|
||||
var/atom/creation_spot = drop_location()
|
||||
|
||||
@@ -397,13 +457,14 @@ var/global/list/disallowed_protean_accessories = list(
|
||||
//We can still speak our languages!
|
||||
blob.languages = languages.Copy()
|
||||
blob.name = real_name
|
||||
blob.voice_name = name
|
||||
var/datum/species/protean/S = src.species
|
||||
blob.icon_living = S.blob_appearance
|
||||
blob.item_state = S.blob_appearance
|
||||
blob.update_icon()
|
||||
|
||||
//Flip them to the protean panel
|
||||
client?.statpanel = "Protean"
|
||||
addtimer(CALLBACK(src, .proc/nano_set_panel, C), 4)
|
||||
|
||||
//Return our blob in case someone wants it
|
||||
return blob
|
||||
@@ -446,6 +507,8 @@ var/global/list/disallowed_protean_accessories = list(
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
|
||||
var/client/C = blob.client
|
||||
|
||||
//Stop healing if we are
|
||||
if(blob.healing)
|
||||
blob.healing.expire()
|
||||
@@ -497,7 +560,11 @@ var/global/list/disallowed_protean_accessories = list(
|
||||
qdel(blob)
|
||||
|
||||
//Flip them to the protean panel
|
||||
client?.statpanel = "Protean"
|
||||
addtimer(CALLBACK(src, .proc/nano_set_panel, C), 4)
|
||||
|
||||
//Return ourselves in case someone wants it
|
||||
return src
|
||||
|
||||
/mob/living/carbon/human/proc/nano_set_panel(var/client/C)
|
||||
if(C)
|
||||
C.statpanel = "Protean"
|
||||
@@ -192,4 +192,7 @@
|
||||
|
||||
/obj/item/device/mmi/digital/posibrain/nano/transfer_identity()
|
||||
. = ..()
|
||||
icon_state = "posi1"
|
||||
icon_state = "posi1"
|
||||
|
||||
/obj/item/organ/internal/nano/digest_act(atom/movable/item_storage = null)
|
||||
return FALSE
|
||||
@@ -9,29 +9,32 @@
|
||||
set category = "Abilities"
|
||||
set hidden = 1
|
||||
|
||||
var/mob/living/caller = src
|
||||
if(temporary_form)
|
||||
caller = temporary_form
|
||||
if(stat)
|
||||
to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
to_chat(caller,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
return
|
||||
|
||||
if(!isturf(loc))
|
||||
to_chat(src,"<span class='warning'>You need more space to perform this action!</span>")
|
||||
if(!isturf(caller.loc))
|
||||
to_chat(caller,"<span class='warning'>You need more space to perform this action!</span>")
|
||||
return
|
||||
|
||||
var/obj/item/organ/internal/nano/refactory/refactory = nano_get_refactory()
|
||||
//Missing the organ that does this
|
||||
if(!istype(refactory))
|
||||
to_chat(src,"<span class='warning'>You don't have a working refactory module!</span>")
|
||||
to_chat(caller,"<span class='warning'>You don't have a working refactory module!</span>")
|
||||
return
|
||||
var/choice = tgui_input_list(src,"Pick the bodypart to change:", "Refactor - One Bodypart", species.has_limbs)
|
||||
var/choice = tgui_input_list(caller,"Pick the bodypart to change:", "Refactor - One Bodypart", species.has_limbs)
|
||||
if(!choice)
|
||||
return
|
||||
|
||||
//Organ is missing, needs restoring
|
||||
if(!organs_by_name[choice] || istype(organs_by_name[choice], /obj/item/organ/external/stump)) //allows limb stumps to regenerate like removed limbs.
|
||||
if(refactory.get_stored_material(MAT_STEEL) < PER_LIMB_STEEL_COST)
|
||||
to_chat(src,"<span class='warning'>You're missing that limb, and need to store at least [PER_LIMB_STEEL_COST] steel to regenerate it.</span>")
|
||||
to_chat(caller,"<span class='warning'>You're missing that limb, and need to store at least [PER_LIMB_STEEL_COST] steel to regenerate it.</span>")
|
||||
return
|
||||
var/regen = tgui_alert(src,"That limb is missing, do you want to regenerate it in exchange for [PER_LIMB_STEEL_COST] steel?","Regenerate limb?",list("Yes","No"))
|
||||
var/regen = tgui_alert(caller,"That limb is missing, do you want to regenerate it in exchange for [PER_LIMB_STEEL_COST] steel?","Regenerate limb?",list("Yes","No"))
|
||||
if(regen != "Yes")
|
||||
return
|
||||
if(!refactory.use_stored_material(MAT_STEEL,PER_LIMB_STEEL_COST))
|
||||
@@ -40,8 +43,11 @@
|
||||
var/obj/item/organ/external/oldlimb = organs_by_name[choice]
|
||||
oldlimb.removed()
|
||||
qdel(oldlimb)
|
||||
|
||||
var/mob/living/simple_mob/protean_blob/blob = nano_intoblob()
|
||||
var/mob/living/simple_mob/protean_blob/blob
|
||||
if(!temporary_form)
|
||||
blob = nano_intoblob()
|
||||
else
|
||||
blob = temporary_form
|
||||
active_regen = 1
|
||||
if(do_after(blob,5 SECONDS))
|
||||
var/list/limblist = species.has_limbs[choice]
|
||||
@@ -52,7 +58,6 @@
|
||||
new_eo.sync_colour_to_human(src)
|
||||
regenerate_icons()
|
||||
active_regen = 0
|
||||
nano_outofblob(blob)
|
||||
return
|
||||
|
||||
//Organ exists, let's reshape it
|
||||
@@ -68,7 +73,7 @@
|
||||
usable_manufacturers[company] = M
|
||||
if(!usable_manufacturers.len)
|
||||
return
|
||||
var/manu_choice = tgui_input_list(src, "Which manufacturer do you wish to mimic for this limb?", "Manufacturer for [choice]", usable_manufacturers)
|
||||
var/manu_choice = tgui_input_list(caller, "Which manufacturer do you wish to mimic for this limb?", "Manufacturer for [choice]", usable_manufacturers)
|
||||
|
||||
if(!manu_choice)
|
||||
return //Changed mind
|
||||
@@ -78,7 +83,6 @@
|
||||
return //Lost it meanwhile
|
||||
|
||||
eo.robotize(manu_choice)
|
||||
visible_message("<B>[src]</B>'s [choice] loses its shape, then reforms.")
|
||||
update_icons_body()
|
||||
|
||||
/mob/living/carbon/human/proc/nano_regenerate()
|
||||
@@ -86,8 +90,10 @@
|
||||
set desc = "Completely reassemble yourself from whatever save slot you have loaded in preferences. Assuming you meet the requirements."
|
||||
set category = "Abilities"
|
||||
set hidden = 1
|
||||
var/mob/living/caller = src
|
||||
if(temporary_form)
|
||||
to_chat(temporary_form,"<span class ='warning'>This function isn't coded yet. Soon, my child.</span>")
|
||||
caller = temporary_form
|
||||
to_chat(caller,"<span class ='warning'>This function isn't coded yet. Soon, my child.</span>")
|
||||
else
|
||||
to_chat(src,"<span class ='warning'>This function isn't coded yet. Soon, my child.</span>")
|
||||
|
||||
@@ -316,9 +322,10 @@
|
||||
if(P.stat)
|
||||
to_chat(P,"<span class='warning'>You can only do this while not stunned.</span>")
|
||||
else
|
||||
if(P.l_hand) drop_from_inventory(P.l_hand)
|
||||
if(P.r_hand) drop_from_inventory(P.r_hand)
|
||||
P.has_hands = 0
|
||||
if(P.l_hand)
|
||||
drop_from_inventory(P.l_hand)
|
||||
if(P.r_hand)
|
||||
drop_from_inventory(P.r_hand)
|
||||
S.OurRig.myprotean = P
|
||||
src.drop_from_inventory(S.OurRig)
|
||||
P.forceMove(S.OurRig)
|
||||
@@ -396,7 +403,11 @@ CHOMP Removal end*/
|
||||
if(temporary_form)
|
||||
if(blobstyle)
|
||||
temporary_form.icon_living = S.blob_appearance
|
||||
temporary_form.item_state = S.blob_appearance
|
||||
temporary_form.update_icon()
|
||||
if(istype(temporary_form.loc, /obj/item/weapon/holder/protoblob))
|
||||
var/obj/item/weapon/holder/protoblob/PB = temporary_form.loc
|
||||
PB.item_state = S.blob_appearance
|
||||
|
||||
/// /// /// A helper to reuse
|
||||
/mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
protean = 1
|
||||
offline_vision_restriction = 0
|
||||
open = 1
|
||||
cell_type = /obj/item/weapon/cell/protean
|
||||
|
||||
/obj/item/weapon/rig/protean/relaymove(mob/user, var/direction)
|
||||
if(user.stat || user.stunned)
|
||||
@@ -34,6 +35,9 @@
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/rig/protean/digest_act(atom/movable/item_storage = null)
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/rig/protean/New(var/newloc, var/mob/living/carbon/human/P)
|
||||
if(P)
|
||||
var/datum/species/protean/S = P.species
|
||||
@@ -343,4 +347,33 @@
|
||||
else
|
||||
if(istype(W,/obj/item/weapon/storage/backpack))
|
||||
AssimilateBag(user,0,W)
|
||||
..()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/cell/protean
|
||||
name = "Protean power cell"
|
||||
desc = "Something terrible must have happened if you're managing to see this."
|
||||
maxcharge = 10000
|
||||
charge_amount = 100
|
||||
var/mob/living/carbon/human/charger
|
||||
|
||||
/obj/item/weapon/cell/protean/New()
|
||||
charge = maxcharge
|
||||
update_icon()
|
||||
addtimer(CALLBACK(src, .proc/search_for_protean), 60)
|
||||
|
||||
/obj/item/weapon/cell/protean/proc/search_for_protean()
|
||||
if(istype(src.loc, /obj/item/weapon/rig/protean))
|
||||
var/obj/item/weapon/rig/protean/prig = src.loc
|
||||
charger = prig.wearer
|
||||
if(charger)
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/weapon/cell/protean/process()
|
||||
var/C = charge
|
||||
if(charger)
|
||||
if((world.time >= last_use + charge_delay) && charger.nutrition > 100)
|
||||
give(charge_amount)
|
||||
charger.nutrition -= ((1/200)*(charge - C)) //Take nutrition relative to charge. Change the 1/200 if you want to alter the nutrition to charge ratio
|
||||
else
|
||||
return PROCESS_KILL
|
||||
@@ -14,7 +14,7 @@
|
||||
flesh_color = "#505050"
|
||||
base_color = "#FFFFFF" //Color mult, start out with this
|
||||
|
||||
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
|
||||
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
|
||||
health_hud_intensity = 2
|
||||
@@ -35,6 +35,7 @@
|
||||
max_age = 200
|
||||
oxy_mod = 0
|
||||
radiation_mod = 0 //Can't be assed with fandangling rad protections while blob formed/suited
|
||||
darksight = 10
|
||||
|
||||
hazard_low_pressure = -1 //Space doesn't bother them
|
||||
hazard_high_pressure = INFINITY //consistency
|
||||
|
||||
Reference in New Issue
Block a user