mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
[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:
@@ -63919,7 +63919,7 @@
|
||||
/area/commons/vacant_room/commissary)
|
||||
"fCk" = (
|
||||
/obj/structure/cable,
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/lia,
|
||||
/mob/living/simple_animal/hostile/carp/lia,
|
||||
/turf/open/floor/iron/grimy,
|
||||
/area/command/heads_quarters/hos)
|
||||
"fCE" = (
|
||||
|
||||
@@ -40214,7 +40214,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{
|
||||
dir = 5
|
||||
},
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/lia,
|
||||
/mob/living/simple_animal/hostile/carp/lia,
|
||||
/turf/open/floor/carpet,
|
||||
/area/command/heads_quarters/hos)
|
||||
"mpi" = (
|
||||
|
||||
@@ -76312,7 +76312,7 @@
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = 24
|
||||
},
|
||||
/mob/living/simple_animal/hostile/carp/cayenne/lia,
|
||||
/mob/living/simple_animal/hostile/carp/lia,
|
||||
/turf/open/floor/iron/dark,
|
||||
/area/command/heads_quarters/hos)
|
||||
"ptQ" = (
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#define MEDAL_TOOLBOX_SOUL "Toolsoul"
|
||||
#define MEDAL_CHEM_TUT "Beginner Chemist"
|
||||
#define MEDAL_HOT_DAMN "Hot Damn!"
|
||||
#define MEDAL_CAYENNE_DISK "Very Important Piscis"
|
||||
|
||||
//Skill medal hub IDs
|
||||
#define MEDAL_LEGENDARY_MINER "Legendary Miner"
|
||||
|
||||
@@ -165,3 +165,9 @@
|
||||
desc = "Sometimes you need to make some noise to make a point."
|
||||
database_id = MEDAL_HOT_DAMN
|
||||
icon = "hotdamn"
|
||||
|
||||
/datum/award/achievement/misc/cayenne_disk
|
||||
name = "Very Important Piscis"
|
||||
desc = "You can rest well now."
|
||||
database_id = MEDAL_CAYENNE_DISK
|
||||
icon = "cayenne_disk"
|
||||
|
||||
@@ -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
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Reference in New Issue
Block a user