diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm index 97dd430a12..29e4d66424 100644 --- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -2,10 +2,10 @@ /mob/living/simple_animal/hostile/asteroid/fugu name = "wumborian fugu" desc = "The wumborian fugu rapidly increases its body mass in order to ward off its prey. Great care should be taken to avoid it while it's in this state as it is nearly invincible, but it cannot maintain its form forever." - icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - icon_state = "Fugu" - icon_living = "Fugu" - icon_aggro = "Fugu" + icon = 'icons/mob/lavaland/64x64megafauna.dmi' + icon_state = "Fugu0" + icon_living = "Fugu0" + icon_aggro = "Fugu0" icon_dead = "Fugu_dead" icon_gib = "syndicate_gib" mouse_opacity = MOUSE_OPACITY_OPAQUE @@ -16,6 +16,7 @@ speed = 0 maxHealth = 50 health = 50 + pixel_x = -16 harm_intent_damage = 5 obj_damage = 0 melee_damage_lower = 0 @@ -30,13 +31,23 @@ gold_core_spawnable = HOSTILE_SPAWN var/wumbo = 0 var/inflate_cooldown = 0 + var/datum/action/innate/fugu/expand/E loot = list(/obj/item/asteroid/fugu_gland{layer = ABOVE_MOB_LAYER}) +/mob/living/simple_animal/hostile/asteroid/fugu/Initialize() + . = ..() + E = new + E.Grant(src) + +/mob/living/simple_animal/hostile/asteroid/fugu/Destroy() + QDEL_NULL(E) + return ..() + /mob/living/simple_animal/hostile/asteroid/fugu/Life() if(!wumbo) inflate_cooldown = max((inflate_cooldown - 1), 0) if(target && AIStatus == AI_ON) - Inflate() + E.Activate() ..() /mob/living/simple_animal/hostile/asteroid/fugu/adjustHealth(amount, updating_health = TRUE, forced = FALSE) @@ -46,42 +57,47 @@ /mob/living/simple_animal/hostile/asteroid/fugu/Aggro() ..() - Inflate() + E.Activate() -/mob/living/simple_animal/hostile/asteroid/fugu/verb/Inflate() - set name = "Inflate" - set category = "Fugu" - set desc = "Temporarily increases your size, and makes you significantly more dangerous and tough." - if(wumbo) - to_chat(src, "You're already inflated.") +/datum/action/innate/fugu + icon_icon = 'icons/mob/actions/actions_animal.dmi' + +/datum/action/innate/fugu/expand + name = "Inflate" + desc = "Temporarily increases your size, and makes you significantly more dangerous and tough! Do not bully the fugu!" + button_icon_state = "expand" + +/datum/action/innate/fugu/expand/Activate() + var/mob/living/simple_animal/hostile/asteroid/fugu/F = owner + if(F.wumbo) + to_chat(F, "YOU'RE ALREADY WUMBO!") return - if(inflate_cooldown) - to_chat(src, "We need time to gather our strength.") + if(F.inflate_cooldown) + to_chat(F, "You need time to gather your strength.") return - if(buffed) - to_chat(src, "Something is interfering with our growth.") + if(F.buffed) + to_chat(F, "Something is interfering with your growth.") return - wumbo = 1 - icon_state = "Fugu_big" - obj_damage = 60 - melee_damage_lower = 15 - melee_damage_upper = 20 - harm_intent_damage = 0 - throw_message = "is absorbed by the girth of the" - retreat_distance = null - minimum_distance = 1 - move_to_delay = 6 - transform *= 2 - environment_smash = ENVIRONMENT_SMASH_WALLS - mob_size = MOB_SIZE_LARGE - speed = 1 - addtimer(CALLBACK(src, .proc/Deflate), 100) + F.wumbo = 1 + F.icon_state = "Fugu1" + F.obj_damage = 60 + F.melee_damage_lower = 15 + F.melee_damage_upper = 20 + F.harm_intent_damage = 0 + F.throw_message = "is absorbed by the girth of the" + F.retreat_distance = null + F.minimum_distance = 1 + F.move_to_delay = 6 + F.environment_smash = ENVIRONMENT_SMASH_WALLS + F.mob_size = MOB_SIZE_LARGE + F.speed = 1 + addtimer(CALLBACK(F, /mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate), 100) /mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate() if(wumbo) walk(src, 0) wumbo = 0 - icon_state = "Fugu" + icon_state = "Fugu0" obj_damage = 0 melee_damage_lower = 0 melee_damage_upper = 0 @@ -90,7 +106,6 @@ retreat_distance = 9 minimum_distance = 9 move_to_delay = 2 - transform /= 2 inflate_cooldown = 4 environment_smash = ENVIRONMENT_SMASH_NONE mob_size = MOB_SIZE_SMALL diff --git a/icons/mob/actions/actions_animal.dmi b/icons/mob/actions/actions_animal.dmi index 1dcf7590cd..aefa471dd2 100644 Binary files a/icons/mob/actions/actions_animal.dmi and b/icons/mob/actions/actions_animal.dmi differ diff --git a/icons/mob/lavaland/64x64megafauna.dmi b/icons/mob/lavaland/64x64megafauna.dmi index 7cc2b92a17..64304fdcd1 100644 Binary files a/icons/mob/lavaland/64x64megafauna.dmi and b/icons/mob/lavaland/64x64megafauna.dmi differ diff --git a/icons/mob/lavaland/lavaland_monsters.dmi b/icons/mob/lavaland/lavaland_monsters.dmi index f072421196..fd93db24aa 100644 Binary files a/icons/mob/lavaland/lavaland_monsters.dmi and b/icons/mob/lavaland/lavaland_monsters.dmi differ