Skip to content

Commit

Permalink
Updates La Luna, Pinnochio for Rcorp and playables, gives minions NV …
Browse files Browse the repository at this point in the history
…on Rcorp AND moves CheckCombat to simple_animal. (#1621)

* Adds Everything

adds nv combat checks to
nosferatu bats
ml slimes
censored minis
tbird spawns
la luna spawned mob

adds mind transfer to pinocchio and la luna
add check for combat to initialize ai controllers for pinocchio, gives him a seclite on rcorp
add check for combat to spawn the breached la luna mob on its position instead of in a random department and to disable the timer.

makes pino ai disabled while a client is possesing it.

* removes one line

* Changes CheckCombat location, applies it to all minions.

* Makes button refuse pino.

fuck you pinocchio

* moves blocking code to pinocchio's

* moves the nightvision checks to simple_animal

moves the nightvision checks to simple_animal

removes the checks from censored, luna, tbird, ml, nosferatu
  • Loading branch information
TaculoTaculo authored Nov 11, 2023
1 parent f159ee0 commit e23ea7b
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 20 deletions.
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)
//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.
if(SSmaptype.maptype in SSmaptype.combatmaps)
return TRUE
return FALSE

0 comments on commit e23ea7b

Please sign in to comment.