From 1ce588539feb07ee5277d9d4782548207480d04d Mon Sep 17 00:00:00 2001
From: Sharkmare <34294231+Sharkmare@users.noreply.github.com>
Date: Fri, 5 Apr 2019 15:14:45 +0200
Subject: [PATCH] Minor Solarmoth maintenance
Solarmoth attacks should now handle properly.
Made a few vars to keep track of starting heat power.
Lunarmoths.
These ones aren't so simple
---
.../living/simple_animal/vore/solarmoth.dm | 68 ++++++++++++++++---
1 file changed, 60 insertions(+), 8 deletions(-)
diff --git a/code/modules/mob/living/simple_animal/vore/solarmoth.dm b/code/modules/mob/living/simple_animal/vore/solarmoth.dm
index b72924479a..a808719204 100644
--- a/code/modules/mob/living/simple_animal/vore/solarmoth.dm
+++ b/code/modules/mob/living/simple_animal/vore/solarmoth.dm
@@ -44,7 +44,9 @@
"bomb" = 100,
"bio" = 100,
"rad" = 100)
-
+
+ var/mycolour = COLOR_BLUE //Variable Lighting colours
+ var/original_temp = null //Value to remember temp
var/set_temperature = T0C + 10000 //Sets the target point of 10k degrees celsius
var/heating_power = 100000 //This controls the strength at which it heats the environment.
var/emp_heavy = 2
@@ -57,14 +59,23 @@
var/emp_chance = 20 // Beware synths
isEdible = 0 //You can look, but you can't lick.
-
-
/mob/living/simple_animal/retaliate/solarmoth/PunchTarget()
+ //this does not require us to hit the target therefore its before we check it -shark
if(target_mob&& prob(emp_chance))
target_mob.emp_act(4) //The weakest strength of EMP
visible_message("The moth releases a powerful shock!")
- ..()
+
+
+ . = ..()
+ if(.) // Let's first check IF we even hit someone before injecting -shark
+ if(isliving(.))
+ var/mob/living/L = .
+ if(L.reagents)
+ if(prob(poison_chance))
+ L << "You feel a shock rushing through your veins."
+ L.reagents.add_reagent(poison_type, poison_per_bite)
+/* Why did we even have PunchTarget() defined twice, why does byond allow this, wot. -shark
/mob/living/simple_animal/retaliate/solarmoth/PunchTarget()
. = ..()
if(isliving(.))
@@ -73,11 +84,11 @@
if(prob(poison_chance))
L << "You feel a shock rushing through your veins."
L.reagents.add_reagent(poison_type, poison_per_bite)
-
+*/
/mob/living/simple_animal/retaliate/solarmoth/Life()
. = ..()
- if(icon_state != icon_dead)
+ if(icon_state != icon_dead) //I mean on death() Life() should disable but i guess doesnt hurt to make sure -shark
var/datum/gas_mixture/env = loc.return_air() //Gets all the information on the local air.
var/transfer_moles = 0.25 * env.total_moles //The bigger the room, the harder it is to heat the room.
var/datum/gas_mixture/removed = env.remove(transfer_moles)
@@ -87,7 +98,7 @@
removed.add_thermal_energy(heat_transfer)
else if(heat_transfer > 0 && env.temperature < set_temperature) //Set temperature is 10,000 degrees celsius. So this thing will start cooking crazy hot between the temperatures of 200C and 10,000C.
- heating_power = 9999999999999 //FLAME ON! This will make the moth heat up the room at an incredible rate.
+ heating_power = original_temp*100 //Changed to work variable -shark //FLAME ON! This will make the moth heat up the room at an incredible rate.
heat_transfer = min(heat_transfer , heating_power) //limit by the power rating of the heater. Except it's hot, so yeah.
removed.add_thermal_energy(heat_transfer)
@@ -97,9 +108,13 @@
env.merge(removed)
var/global/list/moth_amount = list() //global moth list for the solargrub to read. Maybe want to transfer this to global variables file??
+
/mob/living/simple_animal/retaliate/solarmoth/New()
moth_amount += src //when this thing is created, it adds itself to the global list
. = ..()
+
+ //Since I'm changing hyper mode to be variable we need to store old power
+ original_temp = heating_power //We remember our old goal, for use in non perpetual heating level increase
/mob/living/simple_animal/retaliate/solarmoth/proc/explode()
src.anchored = 0
@@ -121,7 +136,7 @@ var/global/list/moth_amount = list() //global moth list for the solargrub to rea
/mob/living/simple_animal/retaliate/solarmoth/handle_light()
. = ..()
if(. == 0 && !is_dead())
- set_light(9.5, 1, COLOR_BLUE) //9.5 makes the brightness range super huge.
+ set_light(9.5, 1, mycolour) //9.5 makes the brightness range super huge.
return 1
@@ -133,4 +148,41 @@ var/global/list/moth_amount = list() //global moth list for the solargrub to rea
vore_pounce_chance = 0 //moths only eat incapacitated targets. It's too lazy burning you to a crisp to try to pounce you
vore_default_mode = DM_DIGEST
+/mob/living/simple_animal/retaliate/solarmoth/lunarmoth
+ name = "lunarmoth"
+ desc = "A majestic sparkling lunarmoth. Also a slight engineering hazard."
+
+ var/nospampls = 0
+
+ cold_damage_per_tick = 0
+ //ATMOS
+ set_temperature = T0C - 10000
+ heating_power = -100000
+ //light
+ mycolour = COLOR_WHITE
+/mob/living/simple_animal/hostile/tarrasque/mrx/proc/chilltheglass() //Why does a coldfusion moth do this? science -shark
+ nospampls = 1
+ if(prob(25))
+ for(var/obj/machinery/light/light in range(5, src))
+ if(prob(50))
+ light.broken()
+ if(prob(10))
+ for(var/obj/structure/window/window in range(5, src))
+ if(prob(50))
+ window.shatter()
+ if(prob(20))
+ for(var/obj/machinery/door/firedoor/door in range(14, src)) //double viewrange
+ if(prob(5))
+ visible_message("Emergency Shutter malfunction!")
+ door.blocked = 0
+ door.open(1)
+
+ spawn(100)
+ nospampls = 0
+
+/mob/living/simple_animal/retaliate/solarmoth/lunarmoth/Life()
+ ..()
+ if(!nospampls)
+ chilltheglass() //shatter and broken calls for glass and lights. Also some special thing.
+