mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-29 08:09:34 +01:00
Nymph phyxes (#9180)
* Fixes to nymphs * clean up lingering carbon/alien references * Add growth to stat panel * Add rootlocal to known languages * add zone sel * *nibble
This commit is contained in:
@@ -233,8 +233,6 @@
|
||||
M_job = "slime"
|
||||
else if(issmall(M))
|
||||
M_job = "Monkey"
|
||||
else if(isalien(M))
|
||||
M_job = "Alien"
|
||||
else
|
||||
M_job = "Carbon-based"
|
||||
|
||||
@@ -344,8 +342,6 @@
|
||||
dat += "<td>Ghost</td>"
|
||||
else if(issmall(M))
|
||||
dat += "<td>Monkey</td>"
|
||||
else if(isalien(M))
|
||||
dat += "<td>Alien</td>"
|
||||
else
|
||||
dat += "<td>Unknown</td>"
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/datum/admin_secret_item/random_event/trigger_xenomorph_infestation
|
||||
name = "Trigger a Skathari Incursion"
|
||||
|
||||
/datum/admin_secret_item/random_event/trigger_xenomorph_infestation/execute(var/mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
return xenomorphs.attempt_random_spawn()
|
||||
@@ -277,7 +277,6 @@
|
||||
|
||||
switch(href_list["simplemake"])
|
||||
if("observer") M.change_mob_type( /mob/observer/dead , null, null, delmob )
|
||||
if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob )
|
||||
if("nymph") M.change_mob_type( /mob/living/carbon/diona , null, null, delmob )
|
||||
if("human") M.change_mob_type( /mob/living/carbon/human , null, null, delmob, href_list["species"])
|
||||
if("slime") M.change_mob_type( /mob/living/simple_mob/slime/xenobio , null, null, delmob )
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/mob/living/Initialize()
|
||||
if(ai_holder_type)
|
||||
ai_holder = new ai_holder_type(src)
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.hud_used = new /datum/hud(H)
|
||||
H.create_mob_hud(H.hud_used)
|
||||
@@ -429,11 +429,11 @@
|
||||
if(STANCE_IDLE)
|
||||
if(speak_chance) // In the long loop since otherwise it wont shut up.
|
||||
handle_idle_speaking()
|
||||
|
||||
|
||||
if(hostile)
|
||||
ai_log("handle_stance_strategical() : STANCE_IDLE, going to find_target().", AI_LOG_TRACE)
|
||||
find_target()
|
||||
|
||||
|
||||
if(should_go_home())
|
||||
ai_log("handle_stance_tactical() : STANCE_IDLE, going to go home.", AI_LOG_TRACE)
|
||||
go_home()
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
var/global/datum/antagonist/xenos/xenomorphs
|
||||
|
||||
/datum/antagonist/xenos
|
||||
id = MODE_XENOMORPH
|
||||
role_type = BE_ALIEN
|
||||
role_text = "Skathari"
|
||||
role_text_plural = "Skathari"
|
||||
mob_path = /mob/living/carbon/alien/larva
|
||||
bantype = "Xenomorph"
|
||||
flags = ANTAG_OVERRIDE_MOB | ANTAG_RANDSPAWN | ANTAG_OVERRIDE_JOB | ANTAG_VOTABLE
|
||||
welcome_text = "Hiss! You are a larval alien. Hide and bide your time until you are ready to evolve."
|
||||
antaghud_indicator = "hudalien"
|
||||
|
||||
hard_cap = 5
|
||||
hard_cap_round = 8
|
||||
initial_spawn_req = 4
|
||||
initial_spawn_target = 6
|
||||
|
||||
spawn_announcement = "Unidentified lifesigns detected coming aboard the station. Secure any exterior access, including ducting and ventilation."
|
||||
spawn_announcement_title = "Lifesign Alert"
|
||||
spawn_announcement_sound = 'sound/AI/aliens.ogg'
|
||||
spawn_announcement_delay = 5000
|
||||
|
||||
/datum/antagonist/xenos/New(var/no_reference)
|
||||
..()
|
||||
if(!no_reference)
|
||||
xenomorphs = src
|
||||
|
||||
/datum/antagonist/xenos/attempt_random_spawn()
|
||||
if(config.aliens_allowed) ..()
|
||||
|
||||
/datum/antagonist/xenos/proc/get_vents()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in machines)
|
||||
if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels))
|
||||
if(temp_vent.network.normal_members.len > 50)
|
||||
vents += temp_vent
|
||||
return vents
|
||||
|
||||
/datum/antagonist/xenos/create_objectives(var/datum/mind/player)
|
||||
if(!..())
|
||||
return
|
||||
player.objectives += new /datum/objective/survive()
|
||||
player.objectives += new /datum/objective/escape()
|
||||
|
||||
/datum/antagonist/xenos/place_mob(var/mob/living/player)
|
||||
player.forceMove(get_turf(pick(get_vents())))
|
||||
@@ -258,18 +258,18 @@
|
||||
/// FOOD END
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/obj/item/reagent_containers/food/snacks/attack_generic(var/mob/living/user)
|
||||
if(!isanimal(user) && !isalien(user))
|
||||
return
|
||||
if(isanimal(user))
|
||||
var/mob/living/simple_mob/animal/critter = user
|
||||
if(!critter.has_appetite())
|
||||
to_chat(critter, SPAN_WARNING("You don't have much of an appetite at the moment."))
|
||||
return TRUE
|
||||
critter.eat_food_item(src, bitesize)
|
||||
else
|
||||
else if(istype(user, /mob/living/carbon/diona))
|
||||
user.visible_message("<b>[user]</b> nibbles away at \the [src].","You nibble away at \the [src].")
|
||||
if(reagents)
|
||||
reagents.trans_to_mob(user, bitesize, CHEM_INGEST)
|
||||
else
|
||||
return FALSE
|
||||
bitecount++
|
||||
spawn(5)
|
||||
if(!src && !user.client)
|
||||
|
||||
@@ -94,7 +94,7 @@ var/global/list/ghost_traps
|
||||
// Allows people to set their own name. May or may not need to be removed for posibrains if people are dumbasses.
|
||||
/datum/ghosttrap/proc/set_new_name(var/mob/target)
|
||||
var/newname = sanitizeSafe(input(target,"Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN)
|
||||
if (newname != "")
|
||||
if (newname)
|
||||
target.real_name = newname
|
||||
target.name = target.real_name
|
||||
|
||||
|
||||
@@ -89,8 +89,6 @@
|
||||
return "alien [caste_name] ([alien_number])"
|
||||
|
||||
/datum/species/xenos/can_understand(var/mob/other)
|
||||
if(istype(other, /mob/living/carbon/alien/larva))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/species/xenos/hug(var/mob/living/carbon/human/H,var/mob/living/target)
|
||||
|
||||
@@ -24,8 +24,13 @@ var/global/list/_nymph_default_emotes = list(
|
||||
/decl/emote/audible/chirp
|
||||
)
|
||||
|
||||
/datum/say_list/diona
|
||||
emote_hear = list("chirps")
|
||||
emote_see = list("jumps", "rolls", "scrathes")
|
||||
|
||||
/mob/living/carbon/diona
|
||||
name = "diona nymph"
|
||||
desc = "A skittery little creature."
|
||||
voice_name = "diona nymph"
|
||||
speak_emote = list("chirrups")
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
@@ -47,6 +52,10 @@ var/global/list/_nymph_default_emotes = list(
|
||||
mob_size = 4
|
||||
|
||||
inventory_panel_type = null // Disable inventory by default
|
||||
has_huds = TRUE
|
||||
|
||||
say_list_type = /datum/say_list/diona
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/passive
|
||||
|
||||
var/can_namepick_as_adult = TRUE
|
||||
var/adult_name = "diona gestalt"
|
||||
@@ -76,6 +85,7 @@ var/global/list/_nymph_default_emotes = list(
|
||||
regenerate_icons()
|
||||
|
||||
species = GLOB.all_species[SPECIES_DIONA]
|
||||
add_language(LANGUAGE_ROOTLOCAL)
|
||||
add_language(LANGUAGE_ROOTGLOBAL)
|
||||
add_language(LANGUAGE_GALCOM)
|
||||
|
||||
@@ -93,15 +103,6 @@ var/global/list/_nymph_default_emotes = list(
|
||||
update_icons()
|
||||
|
||||
|
||||
/mob/living/carbon/diona/proc/handle_npc(var/mob/living/carbon/diona/D)
|
||||
if(D.stat != CONSCIOUS)
|
||||
return
|
||||
if(prob(33) && D.canmove && isturf(D.loc) && !D.pulledby) //won't move if being pulled
|
||||
step(D, pick(cardinal))
|
||||
if(prob(1))
|
||||
D.emote(pick("scratch","jump","chirp","roll"))
|
||||
|
||||
|
||||
/mob/living/carbon/diona/u_equip(obj/item/W as obj)
|
||||
return
|
||||
|
||||
@@ -143,3 +144,14 @@ var/global/list/_nymph_default_emotes = list(
|
||||
var/datum/ghosttrap/plant/P = get_ghost_trap("living plant")
|
||||
if(P.assess_candidate(user))
|
||||
P.transfer_personality(user, src)
|
||||
|
||||
/mob/living/carbon/diona/make_hud_overlays()
|
||||
hud_list[HEALTH_HUD] = gen_hud_image(ingame_hud_med, src, "100", plane = PLANE_CH_HEALTH)
|
||||
hud_list[STATUS_HUD] = gen_hud_image(ingame_hud, src, "hudhealthy", plane = PLANE_CH_STATUS)
|
||||
hud_list[LIFE_HUD] = gen_hud_image(ingame_hud, src, "hudhealthy", plane = PLANE_CH_LIFE)
|
||||
add_overlay(hud_list)
|
||||
|
||||
/mob/living/carbon/diona/Stat()
|
||||
..()
|
||||
if (statpanel("Status"))
|
||||
stat(null, text("Growth: [round(amount_grown/max_grown)]%"))
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
adjustToxLoss(-1)
|
||||
adjustOxyLoss(-1)
|
||||
|
||||
if(!client)
|
||||
handle_npc(src)
|
||||
|
||||
|
||||
// Alien larva are quite simple.
|
||||
/mob/living/carbon/diona/Life()
|
||||
@@ -124,20 +121,6 @@
|
||||
reset_view(null)
|
||||
return TRUE
|
||||
|
||||
|
||||
/mob/living/carbon/diona/handle_environment(var/datum/gas_mixture/environment)
|
||||
if(!environment)
|
||||
return
|
||||
|
||||
if(environment.temperature > (T0C+66))
|
||||
adjustFireLoss((environment.temperature - (T0C+66))/5) // Might be too high, check in testing.
|
||||
throw_alert("alien_fire", /obj/screen/alert/alien_fire)
|
||||
if(prob(20))
|
||||
to_chat(src,SPAN_DANGER( "You feel a searing heat!"))
|
||||
else
|
||||
clear_alert("alien_fire")
|
||||
|
||||
|
||||
/mob/living/carbon/diona/handle_fire()
|
||||
. = ..()
|
||||
if(!.) // True == Not on fire
|
||||
|
||||
@@ -34,12 +34,8 @@
|
||||
|
||||
..()
|
||||
|
||||
if(!data["donor"] || istype(data["donor"], /mob/living/carbon/human))
|
||||
if(!data["donor"] || ishuman(data["donor"]))
|
||||
blood_splatter(T, src, 1)
|
||||
else if(istype(data["donor"], /mob/living/carbon/alien))
|
||||
var/obj/effect/decal/cleanable/blood/B = blood_splatter(T, src, 1)
|
||||
if(B)
|
||||
B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*"
|
||||
|
||||
/datum/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
|
||||
|
||||
@@ -105,8 +105,8 @@ var/global/list/ventcrawl_machinery = list(
|
||||
if(canmove && pipe)
|
||||
return pipe
|
||||
|
||||
/mob/living/carbon/alien/ventcrawl_carry()
|
||||
return 1
|
||||
/mob/living/carbon/diona/ventcrawl_carry()
|
||||
return TRUE
|
||||
|
||||
/mob/living/var/ventcrawl_layer = 3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user