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 7a76072cb58..5737f5f4b2b 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 1dcf7590cd0..aefa471dd23 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 7cc2b92a178..64304fdcd1f 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 f072421196d..fd93db24aa2 100644 Binary files a/icons/mob/lavaland/lavaland_monsters.dmi and b/icons/mob/lavaland/lavaland_monsters.dmi differ