From 9d66079aff23908e496d30c78a66a8179d0ceea4 Mon Sep 17 00:00:00 2001 From: Rae Date: Mon, 9 May 2022 17:29:26 +0200 Subject: [PATCH] reorganise, speeen, sentinel --- .../living/simple_mob/simple_mob_abilities.dm | 33 ++++- .../subtypes/{vore => }/xenomorph.dm | 117 ++++++++++++------ .../{vore => }/xenomorph_abilities.dm | 17 ++- .../xeno_screen.dmi} | Bin vorestation.dme | 4 +- 5 files changed, 125 insertions(+), 46 deletions(-) rename modular_chomp/code/modules/mob/living/simple_mob/subtypes/{vore => }/xenomorph.dm (61%) rename modular_chomp/code/modules/mob/living/simple_mob/subtypes/{vore => }/xenomorph_abilities.dm (86%) rename modular_chomp/icons/{effects/xenobuild_icons.dmi => mob/xeno_screen.dmi} (100%) diff --git a/modular_chomp/code/modules/mob/living/simple_mob/simple_mob_abilities.dm b/modular_chomp/code/modules/mob/living/simple_mob/simple_mob_abilities.dm index 1cbf23f263..49a561bd9f 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/simple_mob_abilities.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/simple_mob_abilities.dm @@ -303,4 +303,35 @@ new /obj/effect/alien/acid(get_turf(O), O) visible_message("[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!") - return \ No newline at end of file + return + +// spin blatantly stolen from BlackMajor's bigdragon +/mob/living/simple_mob/proc/speen(var/range = 2) + var/list/thrownatoms = list() + for(var/mob/living/victim in oview(range, src)) + thrownatoms += victim + src.spin(12,1) + for(var/am in thrownatoms) + var/atom/movable/AM = am + if(AM == src || AM.anchored) + continue + addtimer(CALLBACK(src, .proc/speen_throw, am), 1) + playsound(src, "sound/weapons/punchmiss.ogg", 50, 1) + +//Split repulse into two parts so I can recycle this later +/mob/living/simple_mob/proc/speen_throw(var/atom/movable/AM, var/gentle = 0, var/damage = 10) + var/maxthrow = 7 + var/atom/throwtarget + throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(AM, src))) + + if (!throwtarget) // default case is north if unset + throwtarget = locate(src.x, world.maxy, src.z) + + if(isliving(AM)) + var/mob/living/M = AM + M.Weaken(1.5) + if(!gentle) + M.adjustBruteLoss(damage) + to_chat(M, "You're thrown back by [src]!") + playsound(src, get_sfx("punch"), 50, 1) + AM.throw_at(throwtarget, maxthrow, 3, src) \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/xenomorph.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph.dm similarity index 61% rename from modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/xenomorph.dm rename to modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph.dm index aec4be7910..c3e8b129c1 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/xenomorph.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph.dm @@ -3,13 +3,9 @@ // Base type (Mostly initialises as an ability-less xeno hunter /mob/living/simple_mob/xeno_ch - name = "xenomorph" - desc = "A chitin-covered bipedal creature with an eerie skittery nature." + name = "badly spawned xenomorph" + desc = "A chitin-covered bipedal creature with an eerie skittery nature. this one was spawned in wrong." - icon_dead = "alienh_dead" - icon_living = "alienh" - icon_rest = "alienh_sleep" - icon_state = "alienh" icon = 'modular_chomp/icons/mob/xenos_32.dmi' vis_height = 32 @@ -50,6 +46,38 @@ 'sound/voice/hiss5.ogg') has_hands = TRUE + can_enter_vent_with = list( /obj/item/weapon/implant, + /obj/item/device/radio/borg, + /obj/item/weapon/holder, + /obj/machinery/camera, + /obj/belly, + /obj/screen, + /atom/movable/emissive_blocker, + /obj/item/weapon/material, + /obj/item/weapon/melee, + /obj/item/stack/, + /obj/item/weapon/tool, + /obj/item/weapon/reagent_containers/food, + /obj/item/weapon/coin, + /obj/item/weapon/aliencoin, + /obj/item/weapon/ore, + /obj/item/weapon/disk/nuclear, + /obj/item/toy, + /obj/item/weapon/card, + /obj/item/device/radio, + /obj/item/device/perfect_tele_beacon, + /obj/item/weapon/clipboard, + /obj/item/weapon/paper, + /obj/item/weapon/pen, + /obj/item/canvas, + /obj/item/paint_palette, + /obj/item/paint_brush, + /obj/item/device/camera, + /obj/item/weapon/photo, + /obj/item/device/camera_film, + /obj/item/device/taperecorder, + /obj/item/device/tape) + var/xeno_build_time = 5 //time to build a structure //HUD @@ -58,7 +86,7 @@ var/datum/action/innate/xeno_ch/xeno_acidspit/acidspit_action = new var/datum/action/innate/xeno_ch/xeno_corrode/corrode_action = new var/datum/action/innate/xeno_ch/xeno_pounce/pounce_action = new - + var/datum/action/innate/xeno_ch/xeno_spin/spin_action = new /mob/living/simple_mob/xeno_ch/Initialize() ..() @@ -75,9 +103,15 @@ // Xenomorph hunter subtype /mob/living/simple_mob/xeno_ch/hunter name = "xenomorph hunter" + desc = "A chitin-covered bipedal creature with an eerie skittery nature." movement_cooldown = 1 + icon_dead = "alienh_dead" + icon_living = "alienh" + icon_rest = "alienh_sleep" + icon_state = "alienh" + icon_state_prepounce = "alienh_pounce" icon_pounce = 'modular_chomp/icons/mob/xenoleap_96.dmi' icon_state_pounce = "alienh_leap" @@ -86,38 +120,6 @@ icon_pounce_x = -32 icon_pounce_y = -32 - can_enter_vent_with = list( /obj/item/weapon/implant, - /obj/item/device/radio/borg, - /obj/item/weapon/holder, - /obj/machinery/camera, - /obj/belly, - /obj/screen, - /atom/movable/emissive_blocker, - /obj/item/weapon/material, - /obj/item/weapon/melee, - /obj/item/stack/, - /obj/item/weapon/tool, - /obj/item/weapon/reagent_containers/food, - /obj/item/weapon/coin, - /obj/item/weapon/aliencoin, - /obj/item/weapon/ore, - /obj/item/weapon/disk/nuclear, - /obj/item/toy, - /obj/item/weapon/card, - /obj/item/device/radio, - /obj/item/device/perfect_tele_beacon, - /obj/item/weapon/clipboard, - /obj/item/weapon/paper, - /obj/item/weapon/pen, - /obj/item/canvas, - /obj/item/paint_palette, - /obj/item/paint_brush, - /obj/item/device/camera, - /obj/item/weapon/photo, - /obj/item/device/camera_film, - /obj/item/device/taperecorder, - /obj/item/device/tape) - /mob/living/simple_mob/xeno_ch/hunter/Login() . = ..() verbs |= /mob/living/simple_mob/proc/pounce_toggle @@ -125,6 +127,41 @@ verbs |= /mob/living/proc/hide pounce_action.Grant(src) +//Xenomorph Sentinel subtype +/mob/living/simple_mob/xeno_ch/sentinel + name = "xenomorph sentinel" + desc = "A chitin-covered bipedal creature with an acrid scent about it." + + movement_cooldown = 1.5 + + icon_dead = "aliens_dead" + icon_living = "aliens" + icon_rest = "aliens_sleep" + icon_state = "aliens" + + icon_state_prepounce = "aliens_pounce" + icon_pounce = 'modular_chomp/icons/mob/xenoleap_96.dmi' + icon_state_pounce = "aliens_leap" + icon_overlay_spit = "alienspit" + icon_overlay_spit_pounce = "alienspit_leap" + icon_pounce_x = -32 + icon_pounce_y = -32 + + +/mob/living/simple_mob/xeno_ch/sentinel/Login() + . = ..() + verbs |= /mob/living/simple_mob/proc/pounce_toggle + verbs |= /mob/living/proc/hide + verbs |= /mob/living/simple_mob/proc/neurotoxin + verbs |= /mob/living/simple_mob/proc/acidspit + verbs |= /mob/living/simple_mob/proc/corrosive_acid + pounce_action.Grant(src) + neurotox_action.Grant(src) + acidspit_action.Grant(src) + corrode_action.Grant(src) + + +//Xenomorph queen subtype /mob/living/simple_mob/xeno_ch/queen name = "xenomorph queen" desc = "A towering chitin-covered bipedal creature with a rather intimidating aura about them." @@ -150,9 +187,11 @@ verbs |= /mob/living/simple_mob/proc/neurotoxin verbs |= /mob/living/simple_mob/proc/acidspit verbs |= /mob/living/simple_mob/proc/corrosive_acid + verbs |= /mob/living/simple_mob/proc/speen neurotox_action.Grant(src) acidspit_action.Grant(src) corrode_action.Grant(src) + spin_action.Grant(src) /mob/living/simple_mob/xeno_ch/queen/maid name = "xenomorph maid queen" diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/xenomorph_abilities.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph_abilities.dm similarity index 86% rename from modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/xenomorph_abilities.dm rename to modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph_abilities.dm index 556bced054..f7153d2eee 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/vore/xenomorph_abilities.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph_abilities.dm @@ -5,7 +5,7 @@ var/list/options = list("Resin Door","Resin Membrane","Nest","Resin Wall","Weed Node") for(var/option in options) - LAZYSET(options, option, image('modular_chomp/icons/effects/xenobuild_icons.dmi', option)) + LAZYSET(options, option, image('modular_chomp/icons/mob/xeno_screen.dmi', option)) var/choice = show_radial_menu(src, src, options, radius = 60) if(!choice || QDELETED(src) || src.incapacitated()) return FALSE @@ -52,7 +52,7 @@ /datum/action/innate/xeno_ch check_flags = AB_CHECK_RESTRAINED | AB_CHECK_STUNNED | AB_CHECK_ALIVE - button_icon = 'modular_chomp/icons/effects/xenobuild_icons.dmi' + button_icon = 'modular_chomp/icons/mob/xeno_screen.dmi' var/mob/living/simple_mob/xeno_ch/parent_xeno @@ -100,9 +100,18 @@ /datum/action/innate/xeno_ch/xeno_pounce/Activate() parent_xeno.pounce_toggle() -/mob/living/simple_mob/xeno_ch/proc/grantactions() +/datum/action/innate/xeno_ch/xeno_spin + name = "Spin" + button_icon_state = "Spin" + +/datum/action/innate/xeno_ch/xeno_spin/Activate() + parent_xeno.speen() + + +/mob/living/simple_mob/xeno_ch/proc/grantallactions() build_action.Grant(src) neurotox_action.Grant(src) acidspit_action.Grant(src) corrode_action.Grant(src) - pounce_action.Grant(src) \ No newline at end of file + pounce_action.Grant(src) + spin_action.Grant(src) \ No newline at end of file diff --git a/modular_chomp/icons/effects/xenobuild_icons.dmi b/modular_chomp/icons/mob/xeno_screen.dmi similarity index 100% rename from modular_chomp/icons/effects/xenobuild_icons.dmi rename to modular_chomp/icons/mob/xeno_screen.dmi diff --git a/vorestation.dme b/vorestation.dme index 38ef8a9738..e8b35050a9 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4491,6 +4491,6 @@ #include "modular_chomp\code\modules\mob\living\carbon\human\species\station\protean\protean_species.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob.dm" #include "modular_chomp\code\modules\mob\living\simple_mob\simple_mob_abilities.dm" -#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\xenomorph.dm" -#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\xenomorph_abilities.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\xenomorph.dm" +#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\xenomorph_abilities.dm" // END_INCLUDE