mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-29 06:58:30 +01:00
Tweaks to beast form
The hanner now get a version of beast form that limits their max health to whatever theirs was before transforming, this can make them take very serious damage and even lose limbs in beast form if they use it to fight. Added a beast form variant of the bear which is way less OP.
This commit is contained in:
@@ -91,7 +91,7 @@
|
||||
/mob/living/proc/set_size,
|
||||
/mob/living/carbon/human/proc/lleill_contact,
|
||||
/mob/living/carbon/human/proc/lleill_alchemy,
|
||||
/mob/living/carbon/human/proc/lleill_beast_form
|
||||
/mob/living/carbon/human/proc/hanner_beast_form
|
||||
)
|
||||
|
||||
valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA)
|
||||
|
||||
@@ -370,7 +370,8 @@
|
||||
"Giant Bat" = /mob/living/simple_mob/vore/bat,
|
||||
"Horse" = /mob/living/simple_mob/vore/horse,
|
||||
"Horse (Big)" = /mob/living/simple_mob/vore/horse/big,
|
||||
"Kelpie" = /mob/living/simple_mob/vore/horse/kelpie
|
||||
"Kelpie" = /mob/living/simple_mob/vore/horse/kelpie,
|
||||
"Bear" = /mob/living/simple_mob/animal/space/bear/brown/beastmode
|
||||
)
|
||||
|
||||
var/chosen_beast = tgui_input_list(src, "Which form would you like to take?", "Choose Beast Form", beast_options)
|
||||
@@ -388,18 +389,21 @@
|
||||
log_debug("polymorph istype")
|
||||
return
|
||||
|
||||
if(M.stat) //We can let it undo the TF, because the person will be dead, but otherwise things get weird.
|
||||
log_debug("polymorph stat")
|
||||
to_chat(src, "<span class='warning'>You can't do that in your condition.</span>")
|
||||
return
|
||||
|
||||
if(M.health <= 10) //We can let it undo the TF, because the person will be dead, but otherwise things get weird.
|
||||
log_debug("polymorph injured")
|
||||
to_chat(src, "<span class='warning'>You are too injured to transform into a beast.</span>")
|
||||
return
|
||||
|
||||
visible_message("<b>\The [src]</b> begins significantly shifting their form.")
|
||||
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
|
||||
visible_message("<b>\The [src]</b> ceases shifting their form.")
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
log_debug("polymorph else")
|
||||
if(M.stat == DEAD) //We can let it undo the TF, because the person will be dead, but otherwise things get weird.
|
||||
log_debug("polymorph dead")
|
||||
return
|
||||
|
||||
var/image/coolanimation = image('icons/obj/glamour.dmi', null, "animation")
|
||||
coolanimation.plane = PLANE_LIGHTING_ABOVE
|
||||
src.overlays += coolanimation
|
||||
@@ -479,9 +483,141 @@
|
||||
set desc = "Return to your humanoid form."
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat)
|
||||
to_chat(src, "<span class='warning'>You can't do that in your condition.</span>")
|
||||
return
|
||||
|
||||
visible_message("<b>\The [src]</b> begins significantly shifting their form.")
|
||||
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
|
||||
visible_message("<b>\The [src]</b> ceases shifting their form.")
|
||||
return 0
|
||||
visible_message("<b>\The [src]</b> has reverted to their original form.")
|
||||
revert_mob_tf()
|
||||
|
||||
|
||||
//Hanner variant
|
||||
|
||||
/mob/living/carbon/human/proc/hanner_beast_form()
|
||||
set name = "Beast Form (100)"
|
||||
set desc = "Take the form of a non-humanoid creature."
|
||||
set category = "Abilities"
|
||||
if(!ishuman(src))
|
||||
return //If you're not a human you don't have permission to do this.
|
||||
|
||||
var/energy_cost = 100
|
||||
|
||||
if(species.lleill_energy < energy_cost)
|
||||
to_chat(src, "<span class='warning'>You do not have enough energy to do that! You currently have [species.lleill_energy] energy.</span>")
|
||||
return
|
||||
|
||||
var/list/beast_options = list("Rabbit" = /mob/living/simple_mob/vore/rabbit,
|
||||
"Red Panda" = /mob/living/simple_mob/vore/redpanda,
|
||||
"Fennec" = /mob/living/simple_mob/vore/fennec,
|
||||
"Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog,
|
||||
"Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat,
|
||||
"Wolf" = /mob/living/simple_mob/vore/wolf,
|
||||
"Panther" = /mob/living/simple_mob/vore/aggressive/panther,
|
||||
"Giant Snake" = /mob/living/simple_mob/vore/aggressive/giant_snake,
|
||||
"Otie" = /mob/living/simple_mob/vore/otie,
|
||||
"Squirrel" = /mob/living/simple_mob/vore/squirrel,
|
||||
"Raptor" = /mob/living/simple_mob/vore/raptor,
|
||||
"Giant Bat" = /mob/living/simple_mob/vore/bat,
|
||||
"Horse" = /mob/living/simple_mob/vore/horse,
|
||||
"Horse (Big)" = /mob/living/simple_mob/vore/horse/big,
|
||||
"Kelpie" = /mob/living/simple_mob/vore/horse/kelpie,
|
||||
"Bear" = /mob/living/simple_mob/animal/space/bear/brown/beastmode
|
||||
)
|
||||
|
||||
var/chosen_beast = tgui_input_list(src, "Which form would you like to take?", "Choose Beast Form", beast_options)
|
||||
|
||||
if(!chosen_beast)
|
||||
return
|
||||
|
||||
if(species.lleill_energy < energy_cost)
|
||||
to_chat(src, "<span class='warning'>You do not have enough energy to do that! You currently have [species.lleill_energy] energy.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/M = src
|
||||
log_debug("polymorph start")
|
||||
if(!istype(M))
|
||||
log_debug("polymorph istype")
|
||||
return
|
||||
|
||||
if(M.stat) //We can let it undo the TF, because the person will be dead, but otherwise things get weird.
|
||||
log_debug("polymorph stat")
|
||||
to_chat(src, "<span class='warning'>You can't do that in your condition.</span>")
|
||||
return
|
||||
|
||||
if(M.health <= 10) //We can let it undo the TF, because the person will be dead, but otherwise things get weird.
|
||||
log_debug("polymorph injured")
|
||||
to_chat(src, "<span class='warning'>You are too injured to transform into a beast.</span>")
|
||||
return
|
||||
|
||||
visible_message("<b>\The [src]</b> begins significantly shifting their form.")
|
||||
if(!do_after(src, 10 SECONDS, src, exclusive = TASK_USER_EXCLUSIVE))
|
||||
visible_message("<b>\The [src]</b> ceases shifting their form.")
|
||||
return 0
|
||||
|
||||
var/image/coolanimation = image('icons/obj/glamour.dmi', null, "animation")
|
||||
coolanimation.plane = PLANE_LIGHTING_ABOVE
|
||||
src.overlays += coolanimation
|
||||
spawn(10)
|
||||
src.overlays -= coolanimation
|
||||
|
||||
log_debug("polymorph not dead")
|
||||
var/mob/living/simple_mob/new_mob = spawn_beast_mob(beast_options[chosen_beast])
|
||||
new_mob.faction = M.faction
|
||||
|
||||
if(new_mob && isliving(new_mob))
|
||||
species.lleill_energy -= energy_cost
|
||||
log_debug("polymorph new_mob")
|
||||
for(var/obj/belly/B as anything in new_mob.vore_organs)
|
||||
log_debug("polymorph new_mob belly")
|
||||
new_mob.vore_organs -= B
|
||||
qdel(B)
|
||||
new_mob.vore_organs = list()
|
||||
new_mob.name = M.name
|
||||
new_mob.real_name = M.real_name
|
||||
new_mob.verbs |= /mob/living/proc/revert_beast_form
|
||||
new_mob.health = M.health
|
||||
new_mob.maxHealth = M.health
|
||||
for(var/lang in M.languages)
|
||||
new_mob.languages |= lang
|
||||
M.copy_vore_prefs_to_mob(new_mob)
|
||||
new_mob.vore_selected = M.vore_selected
|
||||
if(ishuman(M))
|
||||
log_debug("polymorph ishuman part2")
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(ishuman(new_mob))
|
||||
log_debug("polymorph ishuman(newmob)")
|
||||
var/mob/living/carbon/human/N = new_mob
|
||||
N.gender = H.gender
|
||||
N.identifying_gender = H.identifying_gender
|
||||
else
|
||||
log_debug("polymorph gender else")
|
||||
new_mob.gender = H.gender
|
||||
else
|
||||
log_debug("polymorph gender else 2")
|
||||
new_mob.gender = M.gender
|
||||
if(ishuman(new_mob))
|
||||
var/mob/living/carbon/human/N = new_mob
|
||||
N.identifying_gender = M.gender
|
||||
|
||||
for(var/obj/belly/B as anything in M.vore_organs)
|
||||
B.loc = new_mob
|
||||
B.forceMove(new_mob)
|
||||
B.owner = new_mob
|
||||
M.vore_organs -= B
|
||||
new_mob.vore_organs += B
|
||||
|
||||
new_mob.ckey = M.ckey
|
||||
if(M.ai_holder && new_mob.ai_holder)
|
||||
var/datum/ai_holder/old_AI = M.ai_holder
|
||||
old_AI.set_stance(STANCE_SLEEP)
|
||||
var/datum/ai_holder/new_AI = new_mob.ai_holder
|
||||
new_AI.hostile = old_AI.hostile
|
||||
new_AI.retaliate = old_AI.retaliate
|
||||
M.loc = new_mob
|
||||
M.forceMove(new_mob)
|
||||
new_mob.tf_mob_holder = M
|
||||
new_mob.visible_message("<b>\The [src]</b> has transformed into \the [chosen_beast]!")
|
||||
|
||||
@@ -112,6 +112,13 @@
|
||||
icon_gib = "bear-gib"
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_mob/animal/space/bear/brown/beastmode
|
||||
movement_cooldown = 2
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 15
|
||||
attack_armor_pen = 0
|
||||
|
||||
/mob/living/simple_mob/animal/space/carp
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
vore_active = 1
|
||||
|
||||
Reference in New Issue
Block a user