[MIRROR] Cayenne can pick up the nuclear authentication disk (#3887)

* Cayenne can pick up the nuclear authentication disk (#57395)

Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>

* Cayenne can pick up the nuclear authentication disk

Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-03-05 15:02:35 +01:00
committed by GitHub
parent 27a35c2436
commit c241bdec2b
8 changed files with 108 additions and 52 deletions
@@ -44,7 +44,6 @@
is_flying_animal = TRUE
pressure_resistance = 200
gold_core_spawnable = HOSTILE_SPAWN
var/random_color = TRUE //if the carp uses random coloring
var/rarechance = 1 //chance for rare color variant
var/snack_distance = 0
@@ -72,9 +71,8 @@
/mob/living/simple_animal/hostile/carp/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT)
carp_randomify(rarechance)
update_icons()
add_cell_sample()
carp_randomify(rarechance)
/mob/living/simple_animal/hostile/carp/add_cell_sample()
AddElement(/datum/element/swabable, CELL_LINE_TABLE_CARP, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5)
@@ -88,23 +86,28 @@
else
our_color = pick(carp_colors)
add_atom_colour(carp_colors[our_color], FIXED_COLOUR_PRIORITY)
add_carp_overlay()
regenerate_icons()
/mob/living/simple_animal/hostile/carp/proc/add_carp_overlay()
/mob/living/simple_animal/hostile/carp/death(gibbed)
. = ..()
cut_overlays()
if(!random_color || gibbed)
return
regenerate_icons()
/mob/living/simple_animal/hostile/carp/revive(full_heal = FALSE, admin_revive = FALSE)
. = ..()
if(.)
regenerate_icons()
/mob/living/simple_animal/hostile/carp/regenerate_icons()
cut_overlays()
if(!random_color)
return
cut_overlays()
var/mutable_appearance/base_overlay = mutable_appearance(icon, "base_mouth")
var/mutable_appearance/base_overlay = mutable_appearance(icon, stat == DEAD ? "base_dead_mouth" : "base_mouth")
base_overlay.appearance_flags = RESET_COLOR
add_overlay(base_overlay)
/mob/living/simple_animal/hostile/carp/proc/add_dead_carp_overlay()
if(!random_color)
return
cut_overlays()
var/mutable_appearance/base_dead_overlay = mutable_appearance(icon, "base_dead_mouth")
base_dead_overlay.appearance_flags = RESET_COLOR
add_overlay(base_dead_overlay)
..()
/mob/living/simple_animal/hostile/carp/proc/chomp_plastic()
var/obj/item/storage/cans/tasty_plastic = locate(/obj/item/storage/cans) in view(1, src)
@@ -121,28 +124,6 @@
if(stat == CONSCIOUS)
chomp_plastic()
/mob/living/simple_animal/hostile/carp/death(gibbed)
. = ..()
cut_overlays()
if(!random_color || gibbed)
return
add_dead_carp_overlay()
/mob/living/simple_animal/hostile/carp/revive(full_heal = FALSE, admin_revive = FALSE)
. = ..()
if(.)
regenerate_icons()
/mob/living/simple_animal/hostile/carp/regenerate_icons()
cut_overlays()
if(!random_color)
return
if(stat != DEAD)
add_carp_overlay()
else
add_dead_carp_overlay()
..()
/mob/living/simple_animal/hostile/carp/tamed()
. = ..()
can_buckle = TRUE
@@ -219,6 +200,27 @@
if(regen_cooldown < world.time)
heal_overall_damage(2 * delta_time)
/mob/living/simple_animal/hostile/carp/lia
name = "Lia"
real_name = "Lia"
desc = "A failed experiment of Nanotrasen to create weaponised carp technology. This less than intimidating carp now serves as the Head of Security's pet."
gender = FEMALE
speak_emote = list("squeaks")
gold_core_spawnable = NO_SPAWN
faction = list("neutral")
health = 200
icon_dead = "magicarp_dead"
icon_gib = "magicarp_gib"
icon_living = "magicarp"
icon_state = "magicarp"
maxHealth = 200
random_color = FALSE
food_type = list()
tame_chance = 0
bonus_tame_chance = 0
pet_bonus = TRUE
pet_bonus_emote = "bloops happily!"
/mob/living/simple_animal/hostile/carp/cayenne
name = "Cayenne"
real_name = "Cayenne"
@@ -233,18 +235,65 @@
bonus_tame_chance = 0
pet_bonus = TRUE
pet_bonus_emote = "bloops happily!"
/// Keeping track of the nuke disk for the functionality of storing it.
var/obj/item/disk/nuclear/disky
/mob/living/simple_animal/hostile/carp/cayenne/lia
name = "Lia"
real_name = "Lia"
desc = "A failed experiment of Nanotrasen to create weaponised carp technology. This less than intimidating carp now serves as the Head of Security's pet."
faction = list("neutral")
health = 200
icon_dead = "magicarp_dead"
icon_gib = "magicarp_gib"
icon_living = "magicarp"
icon_state = "magicarp"
maxHealth = 200
random_color = FALSE
/mob/living/simple_animal/hostile/carp/cayenne/Initialize()
. = ..()
ADD_TRAIT(src, TRAIT_DISK_VERIFIER, INNATE_TRAIT) //carp can verify disky
ADD_TRAIT(src, TRAIT_ADVANCEDTOOLUSER, INNATE_TRAIT) //carp SMART
/mob/living/simple_animal/hostile/carp/cayenne/death(gibbed)
disky.forceMove(drop_location())
disky = null
return ..()
/mob/living/simple_animal/hostile/carp/cayenne/Destroy(force)
. = ..()
QDEL_NULL(disky)
/mob/living/simple_animal/hostile/carp/cayenne/examine(mob/user)
. = ..()
if(disky)
. += "<span class='notice'>Wait... is that [disky] in [p_their()] mouth?</span>"
/mob/living/simple_animal/hostile/carp/cayenne/AttackingTarget(atom/attacked_target)
if(istype(attacked_target, /obj/item/disk/nuclear))
var/obj/item/disk/nuclear/potential_disky = attacked_target
if(potential_disky.anchored)
return
potential_disky.forceMove(src)
disky = potential_disky
to_chat(src, "<span class='nicegreen'>YES!! You manage to pick up [disky]. (Click anywhere to place it back down.)</span>")
regenerate_icons()
if(!disky.fake)
client.give_award(/datum/award/achievement/misc/cayenne_disk, src)
return
if(disky)
if(isopenturf(attacked_target))
to_chat(src, "<span class='notice'>You place [disky] on [attacked_target]</span>")
disky.forceMove(attacked_target.drop_location())
disky = null
regenerate_icons()
else
disky.melee_attack_chain(src, attacked_target)
return
return ..()
/mob/living/simple_animal/hostile/carp/cayenne/Exited(atom/movable/AM, atom/newLoc)
. = ..()
if(AM == disky)
disky = null
regenerate_icons()
/mob/living/simple_animal/hostile/carp/cayenne/regenerate_icons()
. = ..()
if(!disky || stat == DEAD)
return
cut_overlays()
add_overlay("disk_mouth")
var/mutable_appearance/disk_overlay = mutable_appearance(icon, "disk_overlay")
disk_overlay.appearance_flags = RESET_COLOR
add_overlay(disk_overlay)
#undef REGENERATION_DELAY