Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates La Luna, Pinnochio for Rcorp and playables, gives minions NV on Rcorp AND moves CheckCombat to simple_animal. #1621

Merged
merged 6 commits into from
Nov 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -386,11 +386,6 @@
return TRUE
return FALSE

/mob/living/simple_animal/hostile/abnormality/proc/CheckCombat() //Is it currently a combat gamemode? Used to check if somethings can teleport.
if(SSmaptype.maptype in SSmaptype.combatmaps)
return TRUE
return FALSE

/mob/living/simple_animal/hostile/abnormality/proc/GetName()
return name

Expand Down
27 changes: 22 additions & 5 deletions code/modules/mob/living/simple_animal/abnormality/he/pinocchio.dm
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,6 @@
RegisterSignal(realboy, COMSIG_LIVING_DEATH, .proc/PuppetDeath)
realboy.name = "Pinocchio the Liar"
realboy.real_name = "Pinocchio the Liar"
realboy.ai_controller = /datum/ai_controller/insane/murder/puppet
realboy.InitializeAIController()
realboy.apply_status_effect(/datum/status_effect/panicked_type/puppet)
realboy.adjust_all_attribute_levels(100)
realboy.adjust_attribute_bonus(FORTITUDE_ATTRIBUTE, 400) // 600 health
realboy.health = realboy.maxHealth
Expand All @@ -148,6 +145,20 @@
ADD_TRAIT(realboy, TRAIT_NODROP, "Abnormality")
realboy.update_icon()

//--Side Gamemodes stuff--
//For playable abnormalities, directly lets the playing currently controlling pinocchio get control of the spawned mob
if(client)
mind.transfer_to(realboy)
//Prevents pinocchio from going insane on Rcorp.
if(!CheckCombat())
realboy.ai_controller = /datum/ai_controller/insane/murder/puppet
realboy.InitializeAIController()
realboy.apply_status_effect(/datum/status_effect/panicked_type/puppet)
EgorDinamit marked this conversation as resolved.
Show resolved Hide resolved
//Destroys the invisible pinocchio, as it is unecessary in Rcorp, also gives him a flashlight as NV spell does not work on him.
else
realboy.put_in_r_hand(new /obj/item/flashlight/seclite(realboy))
qdel(src)

/mob/living/simple_animal/hostile/abnormality/pinocchio/proc/PuppetDeath(gibbed) //we die when the puppet mob dies
UnregisterSignal(realboy, COMSIG_LIVING_DEATH)
if(!QDELETED(realboy))
Expand Down Expand Up @@ -213,6 +224,7 @@
//Special panic type for carbon mob
/datum/ai_controller/insane/murder/puppet
lines_type = /datum/ai_behavior/say_line/insanity_murder/puppet
continue_processing_when_client = FALSE //Prevents playable pinocchio from going around murdering everyone.

/datum/status_effect/panicked_type/puppet
icon = null
Expand Down Expand Up @@ -247,10 +259,16 @@
/mob/living/carbon/human/species/pinocchio/canBeHandcuffed()
return FALSE

/mob/living/carbon/human/species/pinocchio/UnarmedAttack(atom/A, proximity)
if(istype(A, /obj/structure/toolabnormality/touch))
to_chat(src, span_userdanger("YOUR FOOLISHNESS IS IMPRESSIVE."))
return
. = ..()

/datum/species/puppet
name = "Puppet"
id = "puppet"
sexes = 0
sexes = FALSE
hair_color = "352014"
say_mod = "creaks, snaps"
attack_verb = "slash"
Expand All @@ -261,7 +279,6 @@
species_traits = list(NO_UNDERWEAR,NOBLOOD,NOEYESPRITES)
inherent_traits = list(TRAIT_ADVANCEDTOOLUSER,TRAIT_NOMETABOLISM,TRAIT_TOXIMMUNE,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_GENELESS,\
TRAIT_NOHUNGER,TRAIT_XENO_IMMUNE,TRAIT_NOCLONELOSS)
sexes = FALSE
punchdamagelow = 10
punchdamagehigh = 15
bodypart_overides = list(
Expand Down
25 changes: 21 additions & 4 deletions code/modules/mob/living/simple_animal/abnormality/waw/luna.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,23 @@

/mob/living/simple_animal/hostile/abnormality/luna/ZeroQliphoth(mob/living/carbon/human/user)
icon_state = "dellaluna_breach"
var/turf/W = pick(GLOB.department_centers)
var/mob/living/simple_animal/hostile/luna/spawningmonster = new(get_turf(W))
breached_monster = spawningmonster
//Normal breach
if(!CheckCombat())
var/turf/W = pick(GLOB.department_centers)
var/mob/living/simple_animal/hostile/luna/spawningmonster = new(get_turf(W))
breached_monster = spawningmonster
addtimer(CALLBACK(src, .proc/BreachEnd, user), breach_length)

//--Side Gamemodes stuff--
//Timer will not run the timer on Rcorp.
else
var/mob/living/simple_animal/hostile/luna/spawningmonster = new(get_turf(src))
breached_monster = spawningmonster
qdel(src) //Destroys the piano, as it is unecessary in Rcorp.

breached = TRUE
addtimer(CALLBACK(src, .proc/BreachEnd, user), breach_length)
if(client)
mind.transfer_to(breached_monster) //For playable abnormalities, directly lets the playing currently controlling pianto get control of the spawned mob
return

/mob/living/simple_animal/hostile/abnormality/luna/WorkComplete(mob/living/carbon/human/user, work_type, pe)
Expand Down Expand Up @@ -99,6 +111,11 @@
to_chat(user, span_nicegreen("The performance is completed."))


//Side Gamemodes stuff, should only ever be called outside of the main gamemode
/mob/living/simple_animal/hostile/abnormality/luna/BreachEffect(mob/living/carbon/human/user, breach_type = BREACH_NORMAL)
ZeroQliphoth()


/* Monster Half */
/mob/living/simple_animal/hostile/luna
name = "La Luna"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,6 @@
var/obj/item/implant/radio/slime/imp = new(src)
imp.implant(src, src) //acts as if the abno is both the implanter and the one being implanted, which is technically true I guess?

// Is it currently a combat gamemode? Used to check if somethings can teleport.
/mob/living/simple_animal/hostile/distortion/proc/CheckCombat()
if(SSmaptype.maptype in SSmaptype.combatmaps)
return TRUE
return FALSE

// Applies fear damage to everyone in range
/mob/living/simple_animal/hostile/distortion/proc/FearEffect()
if(fear_level <= 0)
Expand Down
11 changes: 11 additions & 0 deletions code/modules/mob/living/simple_animal/simple_animal.dm
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,10 @@
unsuitable_cold_damage = unsuitable_atmos_damage
if(!unsuitable_heat_damage)
unsuitable_heat_damage = unsuitable_atmos_damage
//LC13 Check, it's here to give everything nightvision on Rcorp.
if(CheckCombat())
var/obj/effect/proc_holder/spell/targeted/night_vision/bloodspell = new
AddSpell(bloodspell)


/mob/living/simple_animal/Life()
Expand Down Expand Up @@ -740,3 +744,10 @@

/mob/living/simple_animal/proc/stop_deadchat_plays()
stop_automated_movement = FALSE

// -- LC13 THINGS --

/mob/living/simple_animal/proc/CheckCombat() //Is it currently a combat gamemode? Used to check for a few interactions, like if somethings can teleport.
EgorDinamit marked this conversation as resolved.
Show resolved Hide resolved
if(SSmaptype.maptype in SSmaptype.combatmaps)
return TRUE
return FALSE
Loading