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. +