[Ready for code review] Moves alien verbs to spells (#20002)

* Moves alien verbs to spells

* lol

* Standardization, polish, making alien plasma huds more consistant

* The very cursed way of handling touch spells

* logging + more polish

* snakecase + documentation

* finishing touches

* oops, ty henri

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

* sprites from TGstation

* sprites, again

* oops

* farie's review part 1

* farie's review p2, signals

* Erics PR compat

* farie's review 3

* that too

* the shawnshank redemption

* boink

* removes larva transfer plasma

* you want a sprite cranberry?

* TM fix 1

* FUCK I BROKE LOGGING

* bam

* final touches

---------

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
GDN
2023-02-12 21:34:11 +01:00
committed by GitHub
co-authored by Henri215
parent 98d7440f75
commit aa56d75f93
41 changed files with 548 additions and 403 deletions
+37 -43
View File
@@ -1,49 +1,48 @@
/obj/item/organ/internal/xenos
/obj/item/organ/internal/alien
origin_tech = "biotech=5"
icon_state = "xgibmid2"
var/list/alien_powers = list()
tough = TRUE
sterile = TRUE
///can be changed if xenos get an update..
/obj/item/organ/internal/xenos/insert(mob/living/carbon/M, special = 0)
/// This adds and removes alien spells upon addition, if a noncarbon tries to do this well... I blame adminbus
/obj/item/organ/internal/alien/insert(mob/living/carbon/M, special = 0)
..()
for(var/P in alien_powers)
M.verbs |= P
for(var/powers_to_add in alien_powers)
M.AddSpell(new powers_to_add)
/obj/item/organ/internal/xenos/remove(mob/living/carbon/M, special = 0)
for(var/P in alien_powers)
M.verbs -= P
/obj/item/organ/internal/alien/remove(mob/living/carbon/M, special = 0)
for(var/powers_to_remove in alien_powers)
M.RemoveSpell(new powers_to_remove)
. = ..()
/obj/item/organ/internal/xenos/prepare_eat()
/obj/item/organ/internal/alien/prepare_eat()
var/obj/S = ..()
S.reagents.add_reagent("sacid", 10)
return S
//XENOMORPH ORGANS
/obj/item/organ/internal/xenos/plasmavessel
/obj/item/organ/internal/alien/plasmavessel
name = "xeno plasma vessel"
icon_state = "plasma"
w_class = WEIGHT_CLASS_NORMAL
origin_tech = "biotech=5;plasmatech=4"
parent_organ = "chest"
slot = "plasmavessel"
alien_powers = list(/mob/living/carbon/alien/humanoid/verb/plant, /mob/living/carbon/alien/humanoid/verb/transfer_plasma)
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds, /obj/effect/proc_holder/spell/touch/alien_spell/transfer_plasma)
var/stored_plasma = 0
var/max_plasma = 500
var/heal_rate = 5
var/plasma_rate = 10
/obj/item/organ/internal/xenos/plasmavessel/prepare_eat()
/obj/item/organ/internal/alien/plasmavessel/prepare_eat()
var/obj/S = ..()
S.reagents.add_reagent("plasma", stored_plasma/10)
return S
/obj/item/organ/internal/xenos/plasmavessel/queen
/obj/item/organ/internal/alien/plasmavessel/queen
name = "bloated xeno plasma vessel"
icon_state = "plasma_large"
origin_tech = "biotech=6;plasmatech=4"
@@ -51,112 +50,107 @@
max_plasma = 500
plasma_rate = 25
/obj/item/organ/internal/xenos/plasmavessel/drone
/obj/item/organ/internal/alien/plasmavessel/drone
name = "large xeno plasma vessel"
icon_state = "plasma_large"
stored_plasma = 200
max_plasma = 500
/obj/item/organ/internal/xenos/plasmavessel/sentinel
/obj/item/organ/internal/alien/plasmavessel/sentinel
stored_plasma = 100
max_plasma = 250
/obj/item/organ/internal/xenos/plasmavessel/hunter
/obj/item/organ/internal/alien/plasmavessel/hunter
name = "small xeno plasma vessel"
icon_state = "plasma_tiny"
stored_plasma = 100
max_plasma = 150
alien_powers = list(/mob/living/carbon/alien/humanoid/verb/plant)
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds)
/obj/item/organ/internal/xenos/plasmavessel/larva
/obj/item/organ/internal/alien/plasmavessel/larva
name = "tiny xeno plasma vessel"
icon_state = "plasma_tiny"
max_plasma = 100
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds)
/obj/item/organ/internal/xenos/plasmavessel/on_life()
/obj/item/organ/internal/alien/plasmavessel/on_life()
//If there are alien weeds on the ground then heal if needed or give some plasma
if(locate(/obj/structure/alien/weeds) in owner.loc)
if(owner.health >= owner.maxHealth)
owner.adjustPlasma(plasma_rate)
owner.add_plasma(plasma_rate)
else
var/heal_amt = heal_rate
if(!isalien(owner))
heal_amt *= 0.2
owner.adjustPlasma(plasma_rate*0.5)
owner.add_plasma((plasma_rate*0.5))
owner.adjustBruteLoss(-heal_amt)
owner.adjustFireLoss(-heal_amt)
owner.adjustOxyLoss(-heal_amt)
owner.adjustCloneLoss(-heal_amt)
/obj/item/organ/internal/xenos/plasmavessel/insert(mob/living/carbon/M, special = 0)
/obj/item/organ/internal/alien/plasmavessel/insert(mob/living/carbon/M, special = 0)
..()
if(isalien(M))
var/mob/living/carbon/alien/A = M
A.updatePlasmaDisplay()
M.update_plasma_display(M)
/obj/item/organ/internal/alien/plasmavessel/remove(mob/living/carbon/M, special = 0)
. =..()
if(isalien(M))
var/mob/living/carbon/alien/A = M
A.updatePlasmaDisplay()
M.update_plasma_display(M)
/obj/item/organ/internal/xenos/acidgland
/obj/item/organ/internal/alien/acidgland
name = "xeno acid gland"
icon_state = "acid"
parent_organ = "head"
slot = "acid"
origin_tech = "biotech=5;materials=2;combat=2"
alien_powers = list(/mob/living/carbon/alien/humanoid/proc/corrosive_acid)
alien_powers = list(/obj/effect/proc_holder/spell/touch/alien_spell/corrosive_acid)
/obj/item/organ/internal/xenos/hivenode
/obj/item/organ/internal/alien/hivenode
name = "xeno hive node"
icon_state = "hivenode"
parent_organ = "head"
slot = "hivenode"
origin_tech = "biotech=5;magnets=4;bluespace=3"
w_class = WEIGHT_CLASS_TINY
alien_powers = list(/mob/living/carbon/alien/humanoid/verb/whisp)
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/whisper)
/obj/item/organ/internal/xenos/hivenode/insert(mob/living/carbon/M, special = 0)
/obj/item/organ/internal/alien/hivenode/insert(mob/living/carbon/M, special = 0)
..()
M.faction |= "alien"
M.add_language("Hivemind")
M.add_language("Xenomorph")
ADD_TRAIT(M, TRAIT_XENO_IMMUNE, "xeno immune")
/obj/item/organ/internal/xenos/hivenode/remove(mob/living/carbon/M, special = 0)
/obj/item/organ/internal/alien/hivenode/remove(mob/living/carbon/M, special = 0)
M.faction -= "alien"
M.remove_language("Hivemind")
M.remove_language("Xenomorph")
REMOVE_TRAIT(M, TRAIT_XENO_IMMUNE, "xeno immune")
. = ..()
/obj/item/organ/internal/xenos/neurotoxin
/obj/item/organ/internal/alien/neurotoxin
name = "xeno neurotoxin gland"
icon_state = "neurotox"
parent_organ = "head"
slot = "neurotox"
origin_tech = "biotech=5;combat=5"
alien_powers = list(/mob/living/carbon/alien/humanoid/proc/neurotoxin)
var/neurotoxin_cooldown = FALSE
var/neurotoxin_cooldown_time = 5 SECONDS
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/neurotoxin)
/obj/item/organ/internal/xenos/resinspinner
/obj/item/organ/internal/alien/resinspinner
name = "xeno resin organ"//...there tiger....
parent_organ = "mouth"
icon_state = "liver-x"
slot = "spinner"
origin_tech = "biotech=5;materials=4"
alien_powers = list(/mob/living/carbon/alien/humanoid/proc/resin)
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/build_resin)
/obj/item/organ/internal/xenos/eggsac
/obj/item/organ/internal/alien/eggsac
name = "xeno egg sac"
icon_state = "eggsac"
parent_organ = "groin"
slot = "eggsac"
w_class = WEIGHT_CLASS_BULKY
origin_tech = "biotech=6"
alien_powers = list(/mob/living/carbon/alien/humanoid/queen/verb/lay_egg)
alien_powers = list(/obj/effect/proc_holder/spell/alien_spell/plant_weeds/eggs)