diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm index 0a10a7bd066..14a01866ff4 100644 --- a/code/datums/diseases/advance/symptoms/dizzy.dm +++ b/code/datums/diseases/advance/symptoms/dizzy.dm @@ -33,5 +33,5 @@ Bonus M << "[pick("You feel dizzy.", "Your head starts spinning.")]" else M << "You are unable to look straight!" - M.make_dizzy(5) + M.Dizzy(5) return \ No newline at end of file diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 1ac322cc3dd..96c93a625d4 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -343,7 +343,7 @@ if(!M.mind || !M.mind.changeling) M.ear_deaf += 30 M.confused += 20 - M.make_jittery(50) + M.Jitter(50) else M << sound('sound/effects/screech.ogg') diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 63690a30078..903732b6d17 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -26,7 +26,7 @@ /obj/item/weapon/melee/cultblade/pickup(mob/living/user as mob) if(!iscultist(user)) user << "\red An overwhelming feeling of dread comes over you as you pick up the cultist's sword. It would be wise to be rid of this blade quickly." - user.make_dizzy(120) + user.Dizzy(120) /obj/item/clothing/head/culthood diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 8bc32a61042..97e7ed3f775 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -114,7 +114,7 @@ if(!istype(target, /obj) && !istype(target, /mob)) return if(istype(target, /mob)) var/mob/M = target - M.make_dizzy(3) + M.Dizzy(3) M.adjustBruteLoss(1) M.updatehealth() for (var/mob/V in viewers(src)) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 71ce4e29b80..257d4d133c2 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -134,7 +134,7 @@ M.Stun(10) M.Paralyse(4) else - M.make_jittery(500) + M.Jitter(500) /* //else the mousetraps are useless if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 398539f6b4a..33eff71e825 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -19,7 +19,7 @@ /* 21st Sept 2010 Updated by Skie -- Still not perfect but better! Stuff you can't do: -Call proc /mob/proc/make_dizzy() for some player +Call proc /mob/proc/Dizzy() for some player Because if you select a player mob as owner it tries to do the proc for /mob/living/carbon/human/ instead. And that gives a run-time error. But you can call procs that are of type /mob/living/carbon/human/proc/ for that player. diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 430ba3f23a5..0f7690a1a4d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -182,12 +182,12 @@ msg += "[t_He] [t_is] wearing \icon[wear_id] \a [wear_id].\n" //Jitters - if(is_jittery) - if(jitteriness >= 300) + switch(jitteriness) + if(300 to INFINITY) msg += "[t_He] [t_is] convulsing violently!\n" - else if(jitteriness >= 200) + if(200 to 300) msg += "[t_He] [t_is] extremely jittery.\n" - else if(jitteriness >= 100) + if(100 to 200) msg += "[t_He] [t_is] twitching ever so slightly.\n" if(suiciding) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d03a2c1e8a0..d5847142b99 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -119,6 +119,7 @@ else return ONE_ATMOSPHERE - pressure_difference + /mob/living/carbon/human proc/handle_disabilities() @@ -130,30 +131,23 @@ continue O.show_message(text("\red [src] starts having a seizure!"), 1) Paralyse(10) - make_jittery(1000) + Jitter(1000) if (disabilities & COUGHING) if ((prob(5) && paralysis <= 1)) drop_item() - spawn( 0 ) - emote("cough") - return + emote("cough") if (disabilities & TOURETTES) if ((prob(10) && paralysis <= 1)) Stun(10) - spawn( 0 ) - switch(rand(1, 3)) - if(1) - emote("twitch") - if(2 to 3) - say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") - var/old_x = pixel_x - var/old_y = pixel_y - pixel_x += rand(-2,2) - pixel_y += rand(-1,1) - sleep(2) - pixel_x = old_x - pixel_y = old_y - return + switch(rand(1, 3)) + if(1) + emote("twitch") + if(2 to 3) + say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") + var/x_offset = pixel_x + rand(-2,2) //Should probably be moved into the twitch emote at some point. + var/y_offset = pixel_y + rand(-1,1) + animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) + animate(pixel_x = pixel_x - x_offset, pixel_y = pixel_y - y_offset, time = 1) if (disabilities & NERVOUS) if (prob(10)) stuttering = max(10, stuttering) @@ -912,6 +906,50 @@ else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs ear_damage = max(ear_damage-0.05, 0) + //Dizziness + if(dizziness) + var/client/C = client + var/pixel_x_diff = 0 + var/pixel_y_diff = 0 + var/temp + var/saved_dizz = dizziness + dizziness = max(dizziness-1, 0) + if(C) + var/oldsrc = src + var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 // This shit is annoying at high strength + src = null + spawn(0) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) + if(C) + temp = amplitude * sin(0.008 * saved_dizz * world.time) + pixel_x_diff += temp + C.pixel_x += temp + temp = amplitude * cos(0.008 * saved_dizz * world.time) + pixel_y_diff += temp + C.pixel_y += temp + sleep(3) + if(C) + C.pixel_x -= pixel_x_diff + C.pixel_y -= pixel_y_diff + src = oldsrc + + //Jitteryness + if(jitteriness) + var/amplitude = min(4, (jitteriness/100) + 1) + var/pixel_x_diff = rand(-amplitude, amplitude) + var/pixel_y_diff = rand(-amplitude/3, amplitude/3) + + animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 2, loop = -1) + animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 2) + jitteriness = max(jitteriness-1, 0) + //Other if(stunned) AdjustStunned(-1) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5c0584eeefc..590305bc8af 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -569,79 +569,6 @@ var/list/slot_equipment_priority = list( \ for(var/mob/M in viewers()) M.see(message) -/* -adds a dizziness amount to a mob -use this rather than directly changing var/dizziness -since this ensures that the dizzy_process proc is started -currently only humans get dizzy - -value of dizziness ranges from 0 to 1000 -below 100 is not dizzy -*/ -/mob/proc/make_dizzy(var/amount) - if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy - return - - dizziness = min(1000, dizziness + amount) // store what will be new value - // clamped to max 1000 - if(dizziness > 100 && !is_dizzy) - spawn(0) - dizzy_process() - - -/* -dizzy process - wiggles the client's pixel offset over time -spawned from make_dizzy(), will terminate automatically when dizziness gets <100 -note dizziness decrements automatically in the mob's Life() proc. -*/ -/mob/proc/dizzy_process() - is_dizzy = 1 - while(dizziness > 100) - if(client) - var/amplitude = dizziness*(sin(dizziness * 0.044 * world.time) + 1) / 70 - client.pixel_x = amplitude * sin(0.008 * dizziness * world.time) - client.pixel_y = amplitude * cos(0.008 * dizziness * world.time) - - sleep(1) - //endwhile - reset the pixel offsets to zero - is_dizzy = 0 - if(client) - client.pixel_x = 0 - client.pixel_y = 0 - -// jitteriness - copy+paste of dizziness - -/mob/proc/make_jittery(var/amount) - if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy - return - - jitteriness = min(1000, jitteriness + amount) // store what will be new value - // clamped to max 1000 - if(jitteriness > 100 && !is_jittery) - spawn(0) - jittery_process() - - -// Typo from the oriignal coder here, below lies the jitteriness process. So make of his code what you will, the previous comment here was just a copypaste of the above. -/mob/proc/jittery_process() - var/old_x = pixel_x - var/old_y = pixel_y - is_jittery = 1 - while(jitteriness > 100) -// var/amplitude = jitteriness*(sin(jitteriness * 0.044 * world.time) + 1) / 70 -// pixel_x = amplitude * sin(0.008 * jitteriness * world.time) -// pixel_y = amplitude * cos(0.008 * jitteriness * world.time) - - var/amplitude = min(4, jitteriness / 100) - pixel_x = rand(-amplitude, amplitude) - pixel_y = rand(-amplitude/3, amplitude/3) - - sleep(1) - //endwhile - reset the pixel offsets to zero - is_jittery = 0 - pixel_x = old_x - pixel_y = old_y - /mob/Stat() ..() @@ -768,6 +695,11 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check return 0 +/mob/proc/Jitter(amount) + jitteriness = max(jitteriness,amount,0) + +/mob/proc/Dizzy(amount) + dizziness = max(dizziness,amount,0) /mob/proc/Stun(amount) if(status_flags & CANSTUN) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index eb2c904c047..1a6896915c9 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -74,8 +74,6 @@ var/bodytemperature = 310.055 //98.7 F var/drowsyness = 0//Carbon var/dizziness = 0//Carbon - var/is_dizzy = 0 - var/is_jittery = 0 var/jitteriness = 0//Carbon var/nutrition = 400//Carbon @@ -167,4 +165,4 @@ var/robot_talk_understand = 0 var/alien_talk_understand = 0 - var/turf/listed_turf = null //the current turf being examined in the stat panel + var/turf/listed_turf = null //the current turf being examined in the stat panel diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 4e18c895f15..154474e3c85 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -266,7 +266,7 @@ datum if(data >= 30) if (!M.stuttering) M.stuttering = 1 M.stuttering += 4 - M.make_dizzy(5) + M.Dizzy(5) if(data >= 30*2.5 && prob(33)) if (!M.confused) M.confused = 1 M.confused += 3 @@ -825,7 +825,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M.make_dizzy(1) + M.Dizzy(1) if(!M.confused) M.confused = 1 M.confused = max(M.confused, 20) holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM) @@ -1151,8 +1151,8 @@ datum M.status_flags &= ~DISFIGURED if(35 to INFINITY) M.adjustToxLoss(1) - M.make_dizzy(5) - M.make_jittery(5) + M.Dizzy(5) + M.Jitter(5) ..() return @@ -1995,18 +1995,18 @@ datum switch(data) if(1 to 5) if (!M.stuttering) M.stuttering = 1 - M.make_dizzy(5) + M.Dizzy(5) if(prob(10)) M.emote(pick("twitch","giggle")) if(5 to 10) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(10) - M.make_dizzy(10) + M.Jitter(10) + M.Dizzy(10) M.druggy = max(M.druggy, 35) if(prob(20)) M.emote(pick("twitch","giggle")) if (10 to INFINITY) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(20) - M.make_dizzy(20) + M.Jitter(20) + M.Dizzy(20) M.druggy = max(M.druggy, 40) if(prob(30)) M.emote(pick("twitch","giggle")) holder.remove_reagent(src.id, 0.2) @@ -2394,7 +2394,7 @@ datum M.sleeping = max(0,M.sleeping - 2) if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) if(holder.has_reagent("frostoil")) holder.remove_reagent("frostoil", 5) ..() @@ -2434,7 +2434,7 @@ datum M.sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) ..() return @@ -2479,7 +2479,7 @@ datum color = "#100800" // rgb: 16, 8, 0 on_mob_life(var/mob/living/M as mob) - M.make_jittery(20) + M.Jitter(20) M.druggy = max(M.druggy, 30) M.dizziness +=5 M.drowsyness = 0 @@ -2502,7 +2502,7 @@ datum M.sleeping = max(0,M.sleeping-1) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) M.nutrition += 1 ..() return @@ -2608,7 +2608,7 @@ datum M.sleeping = 0 if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) M.nutrition++ ..() @@ -2628,7 +2628,7 @@ datum M.sleeping = 0 if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0) M.nutrition++ ..() @@ -2664,7 +2664,7 @@ datum on_mob_life(var/mob/living/M as mob) M.druggy = max(M.druggy, 50) M.confused = max(M.confused+2,0) - M.make_dizzy(10) + M.Dizzy(10) if (!M.stuttering) M.stuttering = 1 M.stuttering += 3 if(!data) data = 1 @@ -2741,24 +2741,24 @@ datum switch(data) if(1 to 5) if (!M.stuttering) M.stuttering = 1 - M.make_dizzy(10) + M.Dizzy(10) if(prob(10)) M.emote(pick("twitch","giggle")) if(5 to 10) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(20) - M.make_dizzy(20) + M.Jitter(20) + M.Dizzy(20) M.druggy = max(M.druggy, 45) if(prob(20)) M.emote(pick("twitch","giggle")) if (10 to 200) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(40) - M.make_dizzy(40) + M.Jitter(40) + M.Dizzy(40) M.druggy = max(M.druggy, 60) if(prob(30)) M.emote(pick("twitch","giggle")) if(200 to INFINITY) if (!M.stuttering) M.stuttering = 1 - M.make_jittery(60) - M.make_dizzy(60) + M.Jitter(60) + M.Dizzy(60) M.druggy = max(M.druggy, 75) if(prob(40)) M.emote(pick("twitch","giggle")) if(prob(30)) M.adjustToxLoss(2) @@ -2789,7 +2789,7 @@ datum if(data >= boozepwr) if (!M.stuttering) M.stuttering = 1 M.stuttering += 4 - M.make_dizzy(5) + M.Dizzy(5) if(data >= boozepwr*2.5 && prob(33)) if (!M.confused) M.confused = 1 M.confused += 3 @@ -2841,7 +2841,7 @@ datum M.dizziness = max(0,M.dizziness-5) M.drowsyness = max(0,M.drowsyness-3) M.sleeping = max(0,M.sleeping-2) - M.make_jittery(5) + M.Jitter(5) ..() return @@ -2864,7 +2864,7 @@ datum M.sleeping = max(0,M.sleeping-2) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) - M.make_jittery(5) + M.Jitter(5) M.nutrition += 1 ..() return