mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
reorganise, speeen, sentinel
This commit is contained in:
@@ -303,4 +303,35 @@
|
||||
new /obj/effect/alien/acid(get_turf(O), O)
|
||||
visible_message("<span class='alium'><B>[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!</B></span>")
|
||||
|
||||
return
|
||||
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, "<span class='userdanger'>You're thrown back by [src]!</span>")
|
||||
playsound(src, get_sfx("punch"), 50, 1)
|
||||
AM.throw_at(throwtarget, maxthrow, 3, src)
|
||||
@@ -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"
|
||||
@@ -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)
|
||||
pounce_action.Grant(src)
|
||||
spin_action.Grant(src)
|
||||
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user