Overhauls and 2/28 sync (#244)

* map tweaks/shuttle engines

* helpers and defines

* global/onclick

* controllers and datums

* mapping

* game folder

* some other stuff

* some modules

* modules that aren't mobs

* some mob stuff

* new player stuff

* mob living

* silicon stuff

* simple animal things

* carbon/ayylmao

* update_icons

* carbon/human

* sounds and tools

* icons and stuff

* hippie grinder changes + tgui

* kitchen.dmi

* compile issues fixed

* mapfix

* Mapfixes 2.0

* mapedit2.0

* mapmerger pls

* Revert "mapedit2.0"

This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481.

* clean up vore folder + 2 hotfixes

* admin ticket refinement

* Blob tweaks and LAZYADD

* LAZYADD IS LAZY

* Magic strings purged

* DEFINES NEED HIGHER PRIORITIES

* Only a sleepless idiot deals in absolute TRUE|FALSE

* u h g

* progress bar fix

* reverts ticket logs

* there's always that one guy

* fixes and stuff

* 2/27 fixes

* game folder stuff

* stats

* some modules again

* clothing stuff

gets vg clothing out of the main files

* everything not mobs again

* mob stuff

* maps, tgui, sql stuff

* icons

* additional fixes and compile errors

* don't need this anymore

* Oh right this isn't needed anymore

* maint bar re-added

* that doesn't need to be here

* stupid events

* wtfeven

* probably makes Travis happy

* don't care to fix the grinder atm

* fixes vending sprites, changes turret

* lethal, not lethals

* overylays are finicky creatures

* lazy fix for bleeding edgy (#252)

* map tweaks/shuttle engines

* helpers and defines

* global/onclick

* controllers and datums

* mapping

* game folder

* some other stuff

* some modules

* modules that aren't mobs

* some mob stuff

* new player stuff

* mob living

* silicon stuff

* simple animal things

* carbon/ayylmao

* update_icons

* carbon/human

* sounds and tools

* icons and stuff

* hippie grinder changes + tgui

* kitchen.dmi

* compile issues fixed

* mapfix

* Mapfixes 2.0

* mapedit2.0

* mapmerger pls

* Revert "mapedit2.0"

This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481.

* clean up vore folder + 2 hotfixes

* admin ticket refinement

* Blob tweaks and LAZYADD

* LAZYADD IS LAZY

* Magic strings purged

* DEFINES NEED HIGHER PRIORITIES

* Only a sleepless idiot deals in absolute TRUE|FALSE

* u h g

* progress bar fix

* reverts ticket logs

* there's always that one guy

* fixes and stuff

* 2/27 fixes

* game folder stuff

* stats

* some modules again

* clothing stuff

gets vg clothing out of the main files

* everything not mobs again

* mob stuff

* maps, tgui, sql stuff

* icons

* additional fixes and compile errors

* don't need this anymore

* Oh right this isn't needed anymore

* maint bar re-added

* that doesn't need to be here

* stupid events

* wtfeven

* probably makes Travis happy

* don't care to fix the grinder atm

* fixes vending sprites, changes turret

* lethal, not lethals

* overylays are finicky creatures
This commit is contained in:
Poojawa
2017-02-28 09:30:49 -06:00
committed by GitHub
parent 93782cf716
commit 0bca862419
544 changed files with 309981 additions and 81206 deletions
+2 -2
View File
@@ -316,9 +316,9 @@
I = image("icon"='icons/mob/human_parts.dmi', "icon_state"="[species_id]_[body_zone]", "layer"=-BODYPARTS_LAYER, "dir"=image_dir)
else
if(should_draw_gender)
I = image("icon"='icons/mob/augments.dmi', "icon_state"="[icon_state]_[icon_gender]", "layer"=-BODYPARTS_LAYER, "dir"=image_dir)
I = image("icon"='icons/mob/augments.dmi', "icon_state"="[initial(icon_state)]_[icon_gender]", "layer"=-BODYPARTS_LAYER, "dir"=image_dir)
else
I = image("icon"='icons/mob/augments.dmi', "icon_state"="[icon_state]", "layer"=-BODYPARTS_LAYER, "dir"=image_dir)
I = image("icon"='icons/mob/augments.dmi', "icon_state"="[initial(icon_state)]", "layer"=-BODYPARTS_LAYER, "dir"=image_dir)
standing += I
return standing
@@ -100,8 +100,8 @@
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
if(H.stat != DEAD && prob(50 / severity))
H.heart_attack = TRUE
if(H.stat != DEAD && prob(50 / severity) && H.can_heartattack())
H.set_heartattack(TRUE)
H << "<span class='userdanger'>You feel a horrible agony in your chest!</span>"
addtimer(CALLBACK(src, .proc/undo_heart_attack), 600 / severity)
@@ -109,7 +109,7 @@
var/mob/living/carbon/human/H = owner
if(!istype(H))
return
H.heart_attack = FALSE
H.set_heartattack(FALSE)
if(H.stat == CONSCIOUS)
H << "<span class='notice'>You feel your heart beating again!</span>"
+15 -20
View File
@@ -104,6 +104,7 @@
zone = "chest"
slot = "heart"
origin_tech = "biotech=5"
// Heart attack code is in code/modules/mob/living/carbon/human/life.dm
var/beating = 1
var/icon_base = "heart"
attack_verb = list("beat", "thumped")
@@ -116,15 +117,8 @@
/obj/item/organ/heart/Remove(mob/living/carbon/M, special = 0)
..()
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.stat == DEAD || H.heart_attack)
Stop()
return
if(!special)
H.heart_attack = 1
addtimer(CALLBACK(src, .proc/stop_if_unowned), 120)
if(!special)
addtimer(CALLBACK(src, .proc/stop_if_unowned), 120)
/obj/item/organ/heart/proc/stop_if_unowned()
if(!owner)
@@ -134,18 +128,11 @@
..()
if(!beating)
visible_message("<span class='notice'>[user] squeezes [src] to \
make it beat again!</span>")
make it beat again!</span>", "<span class='notice'>You squeeze \
[src] to make it beat again!</span>")
Restart()
addtimer(CALLBACK(src, .proc/stop_if_unowned), 80)
/obj/item/organ/heart/Insert(mob/living/carbon/M, special = 0)
..()
if(ishuman(M) && beating)
var/mob/living/carbon/human/H = M
if(H.heart_attack)
H.heart_attack = 0
return
/obj/item/organ/heart/proc/Stop()
beating = 0
update_icon()
@@ -520,8 +507,9 @@
icon_state = "tonguenormal"
zone = "mouth"
slot = "tongue"
var/say_mod = null
attack_verb = list("licked", "slobbered", "slapped", "frenched", "tongued")
var/say_mod = null
var/taste_sensitivity = 15 // lower is more sensitive.
/obj/item/organ/tongue/get_spans()
return list()
@@ -544,6 +532,7 @@
desc = "A thin and long muscle typically found in reptilian races, apparently moonlights as a nose."
icon_state = "tonguelizard"
say_mod = "hisses"
taste_sensitivity = 10 // combined nose + tongue, extra sensitive
/obj/item/organ/tongue/lizard/TongueSpeech(var/message)
var/regex/lizard_hiss = new("s+", "g")
@@ -558,6 +547,7 @@
desc = "A freakish looking meat tube that apparently can take in liquids."
icon_state = "tonguefly"
say_mod = "buzzes"
taste_sensitivity = 25 // you eat vomit, this is a mercy
/obj/item/organ/tongue/fly/TongueSpeech(var/message)
var/regex/fly_buzz = new("z+", "g")
@@ -572,6 +562,7 @@
desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something."
icon_state = "tongueayylmao"
say_mod = "gibbers"
taste_sensitivity = 101 // ayys cannot taste anything.
/obj/item/organ/tongue/abductor/TongueSpeech(var/message)
//Hacks
@@ -597,6 +588,7 @@
desc = "Between the decay and the fact that it's just lying there you doubt a tongue has ever seemed less sexy."
icon_state = "tonguezombie"
say_mod = "moans"
taste_sensitivity = 32
/obj/item/organ/tongue/zombie/TongueSpeech(var/message)
var/list/message_list = splittext(message, " ")
@@ -619,6 +611,7 @@
desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"."
icon_state = "tonguexeno"
say_mod = "hisses"
taste_sensitivity = 10 // LIZARDS ARE ALIENS CONFIRMED
/obj/item/organ/tongue/alien/TongueSpeech(var/message)
playsound(owner, "hiss", 25, 1, 1)
@@ -632,6 +625,7 @@
icon_state = "tonguebone"
say_mod = "rattles"
attack_verb = list("bitten", "chattered", "chomped", "enamelled", "boned")
taste_sensitivity = 101 // skeletons cannot taste anything
var/chattering = FALSE
var/phomeme_type = "sans"
@@ -668,6 +662,7 @@
icon_state = "tonguerobot"
say_mod = "states"
attack_verb = list("beeped", "booped")
taste_sensitivity = 25 // not as good as an organic tongue
/obj/item/organ/tongue/robot/get_spans()
return ..() | SPAN_ROBOT
@@ -866,4 +861,4 @@
flash_protect = 2
/obj/item/organ/eyes/robotic/shield/emp_act(severity)
return
return
+104 -80
View File
@@ -43,6 +43,11 @@ var/static/regex/clap_words = regex("clap|applaud")
var/static/regex/honk_words = regex("ho+nk") //hooooooonk
var/static/regex/multispin_words = regex("like a record baby|right round")
#define COOLDOWN_STUN 1200
#define COOLDOWN_DAMAGE 600
#define COOLDOWN_MEME 300
#define COOLDOWN_NONE 100
/obj/item/organ/vocal_cords //organs that are activated through speech with the :x channel
name = "vocal cords"
icon_state = "appendix"
@@ -56,8 +61,8 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
/obj/item/organ/vocal_cords/proc/speak_with(message) //do what the organ does
return
/obj/item/organ/vocal_cords/proc/handle_speech(message) //change the message
return message
/obj/item/organ/vocal_cords/proc/handle_speech(message) //actually say the message
owner.say(message, spans = spans, sanitize = FALSE)
//Colossus drop, forces the listeners to obey certain commands
/obj/item/organ/vocal_cords/colossus
@@ -68,10 +73,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
slot = "vocal_cords"
actions_types = list(/datum/action/item_action/organ_action/colossus)
var/next_command = 0
var/cooldown_stun = 1200
var/cooldown_damage = 600
var/cooldown_meme = 300
var/cooldown_none = 150
var/cooldown_mod = 1
var/base_multiplier = 1
spans = list("colossus","yell")
@@ -102,6 +104,8 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
owner << "<span class='notice'>You must wait [(cords.next_command - world.time)/10] seconds before Speaking again.</span>"
return
var/command = input(owner, "Speak with the Voice of God", "Command")
if(QDELETED(src) || QDELETED(owner))
return
if(!command)
return
owner.say(".x[command]")
@@ -115,26 +119,40 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
if(!owner.can_speak())
owner << "<span class='warning'>You are unable to speak!</span>"
return FALSE
if(owner.stat)
return FALSE
return TRUE
/obj/item/organ/vocal_cords/colossus/handle_speech(message)
spans = list("colossus","yell") //reset spans, just in case someone gets deculted or the cords change owner
if(iscultist(owner))
spans = list("narsiesmall")
else if (is_servant_of_ratvar(owner))
spans = list("ratvar")
return uppertext(message)
owner.say(uppertext(message), spans = spans, sanitize = FALSE)
playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 300, 1, 5)
return //voice of god speaks for us
/obj/item/organ/vocal_cords/colossus/speak_with(message)
var/log_message = uppertext(message)
message = lowertext(message)
playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 300, 1, 5)
var/cooldown = voice_of_god(message, owner, spans, base_multiplier)
next_command = world.time + (cooldown * cooldown_mod)
//////////////////////////////////////
///////////VOICE OF GOD///////////////
//////////////////////////////////////
/proc/voice_of_god(message, mob/living/user, list/span_list, base_multiplier = 1)
var/cooldown = 0
if(!user || !user.can_speak() || user.stat)
return 0 //no cooldown
var/log_message = uppertext(message)
if(!span_list || !span_list.len)
if(iscultist(user))
span_list = list("narsiesmall")
else if (is_servant_of_ratvar(user))
span_list = list("ratvar")
else
span_list = list()
message = lowertext(message)
var/mob/living/list/listeners = list()
for(var/mob/living/L in get_hearers_in_view(8, owner))
if(!L.ear_deaf && !L.null_rod_check() && L != owner && L.stat != DEAD)
for(var/mob/living/L in get_hearers_in_view(8, user))
if(!L.ear_deaf && !L.null_rod_check() && L != user && L.stat != DEAD)
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
@@ -142,26 +160,26 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
listeners += L
if(!listeners.len)
next_command = world.time + cooldown_none
return
cooldown = COOLDOWN_NONE
return cooldown
var/power_multiplier = base_multiplier
if(owner.mind)
if(user.mind)
//Chaplains are very good at speaking with the voice of god
if(owner.mind.assigned_role == "Chaplain")
if(user.mind.assigned_role == "Chaplain")
power_multiplier *= 2
//Command staff has authority
if(owner.mind.assigned_role in command_positions)
if(user.mind.assigned_role in command_positions)
power_multiplier *= 1.4
//Why are you speaking
if(owner.mind.assigned_role == "Mime")
if(user.mind.assigned_role == "Mime")
power_multiplier *= 0.5
//Cultists are closer to their gods and are more powerful, but they'll give themselves away
if(iscultist(owner))
if(iscultist(user))
power_multiplier *= 2
else if (is_servant_of_ratvar(owner))
else if (is_servant_of_ratvar(user))
power_multiplier *= 2
//Try to check if the speaker specified a name or a job to focus on
@@ -202,76 +220,75 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//STUN
if(findtext(message, stun_words))
next_command = world.time + cooldown_stun
cooldown = COOLDOWN_STUN
for(var/V in listeners)
var/mob/living/L = V
L.Stun(3 * power_multiplier)
//WEAKEN
else if(findtext(message, weaken_words))
next_command = world.time + cooldown_stun
cooldown = COOLDOWN_STUN
for(var/V in listeners)
var/mob/living/L = V
L.Weaken(3 * power_multiplier)
//SLEEP
else if((findtext(message, sleep_words)))
next_command = world.time + cooldown_stun
for(var/V in listeners)
var/mob/living/L = V
L.Sleeping(2 * power_multiplier)
cooldown = COOLDOWN_STUN
for(var/mob/living/carbon/C in listeners)
C.Sleeping(2 * power_multiplier)
//VOMIT
else if((findtext(message, vomit_words)))
next_command = world.time + cooldown_stun
cooldown = COOLDOWN_STUN
for(var/mob/living/carbon/C in listeners)
C.vomit(10 * power_multiplier)
//SILENCE
else if((findtext(message, silence_words)))
next_command = world.time + cooldown_stun
cooldown = COOLDOWN_STUN
for(var/mob/living/carbon/C in listeners)
if(owner.mind && (owner.mind.assigned_role == "Librarian" || owner.mind.assigned_role == "Mime"))
if(user.mind && (user.mind.assigned_role == "Librarian" || user.mind.assigned_role == "Mime"))
power_multiplier *= 3
C.silent += (10 * power_multiplier)
//HALLUCINATE
else if((findtext(message, hallucinate_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
new /obj/effect/hallucination/delusion(get_turf(L),L,duration=150 * power_multiplier,skip_nearby=0)
//WAKE UP
else if((findtext(message, wakeup_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
L.SetSleeping(0)
//HEAL
else if((findtext(message, heal_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
L.heal_overall_damage(10 * power_multiplier, 10 * power_multiplier, 0, 0)
//BRUTE DAMAGE
else if((findtext(message, hurt_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
L.apply_damage(15 * power_multiplier, def_zone = "chest")
//BLEED
else if((findtext(message, bleed_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/mob/living/carbon/human/H in listeners)
H.bleed_rate += (5 * power_multiplier)
//FIRE
else if((findtext(message, burn_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
L.adjust_fire_stacks(1 * power_multiplier)
@@ -279,36 +296,36 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//HOT
else if((findtext(message, hot_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
L.bodytemperature += (50 * power_multiplier)
//COLD
else if((findtext(message, cold_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
L.bodytemperature -= (50 * power_multiplier)
//REPULSE
else if((findtext(message, repulse_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
var/throwtarget = get_edge_target_turf(owner, get_dir(owner, get_step_away(L, owner)))
var/throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(L, user)))
L.throw_at(throwtarget, 3 * power_multiplier, 1 * power_multiplier)
//ATTRACT
else if((findtext(message, attract_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
L.throw_at(get_step_towards(owner,L), 3 * power_multiplier, 1 * power_multiplier)
L.throw_at(get_step_towards(user,L), 3 * power_multiplier, 1 * power_multiplier)
//WHO ARE YOU?
else if((findtext(message, whoareyou_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
if(L.mind && L.mind.devilinfo)
@@ -319,15 +336,15 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//SAY MY NAME
else if((findtext(message, saymyname_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.say("[owner.name]!") //"Unknown!"
L.say("[user.name]!") //"Unknown!"
sleep(5) //So the chat flows more naturally
//KNOCK KNOCK
else if((findtext(message, knockknock_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.say("Who's there?")
@@ -335,13 +352,13 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//STATE LAWS
else if((findtext(message, statelaws_words)))
next_command = world.time + cooldown_stun
cooldown = COOLDOWN_STUN
for(var/mob/living/silicon/S in listeners)
S.statelaws(force = 1)
//MOVE
else if((findtext(message, move_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
var/direction
if(findtext(message, up_words))
direction = NORTH
@@ -359,7 +376,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//WALK
else if((findtext(message, walk_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
if(L.m_intent != MOVE_INTENT_WALK)
@@ -367,7 +384,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//RUN
else if((findtext(message, run_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
if(L.m_intent != MOVE_INTENT_RUN)
@@ -375,7 +392,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//HELP INTENT
else if((findtext(message, helpintent_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
H.a_intent_change(INTENT_HELP)
H.click_random_mob()
@@ -383,7 +400,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//DISARM INTENT
else if((findtext(message, disarmintent_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
H.a_intent_change(INTENT_DISARM)
H.click_random_mob()
@@ -391,7 +408,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//GRAB INTENT
else if((findtext(message, grabintent_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
H.a_intent_change(INTENT_GRAB)
H.click_random_mob()
@@ -399,7 +416,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//HARM INTENT
else if((findtext(message, harmintent_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
H.a_intent_change(INTENT_HARM)
H.click_random_mob()
@@ -407,20 +424,20 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//THROW/CATCH
else if((findtext(message, throwmode_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/C in listeners)
C.throw_mode_on()
//FLIP
else if((findtext(message, flip_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.emote("flip")
//SPEAK
else if((findtext(message, speak_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage"))
@@ -428,7 +445,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//REST
else if((findtext(message, rest_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
if(!L.resting)
@@ -436,7 +453,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//GET UP
else if((findtext(message, getup_words)))
next_command = world.time + cooldown_damage
cooldown = COOLDOWN_DAMAGE
for(var/V in listeners)
var/mob/living/L = V
if(L.resting)
@@ -447,7 +464,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//SIT
else if((findtext(message, sit_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
for(var/obj/structure/chair/chair in get_turf(L))
@@ -456,7 +473,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//STAND UP
else if((findtext(message, stand_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
if(L.buckled && istype(L.buckled, /obj/structure/chair))
@@ -464,7 +481,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//DANCE
else if((findtext(message, dance_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.emote("dance")
@@ -472,7 +489,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//JUMP
else if((findtext(message, jump_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
if(prob(25))
@@ -482,7 +499,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//SALUTE
else if((findtext(message, salute_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.emote("salute")
@@ -490,7 +507,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//PLAY DEAD
else if((findtext(message, deathgasp_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.emote("deathgasp")
@@ -498,7 +515,7 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//PLEASE CLAP
else if((findtext(message, clap_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.emote("clap")
@@ -506,23 +523,30 @@ var/static/regex/multispin_words = regex("like a record baby|right round")
//HONK
else if((findtext(message, honk_words)))
next_command = world.time + cooldown_meme
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(owner), 'sound/items/bikehorn.ogg', 300, 1), 25)
if(owner.mind && owner.mind.assigned_role == "Clown")
cooldown = COOLDOWN_MEME
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/items/bikehorn.ogg', 300, 1), 25)
if(user.mind && user.mind.assigned_role == "Clown")
for(var/mob/living/carbon/C in listeners)
C.slip(0,7 * power_multiplier)
next_command = world.time + cooldown_stun
cooldown = COOLDOWN_MEME
//RIGHT ROUND
else if((findtext(message, multispin_words)))
next_command = world.time + cooldown_meme
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
L.SpinAnimation(speed = 10, loops = 5)
else
next_command = world.time + cooldown_none
cooldown = COOLDOWN_NONE
message_admins("[key_name_admin(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
log_game("[key_name(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
message_admins("[key_name_admin(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
log_game("[key_name(user)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
return cooldown
#undef COOLDOWN_STUN
#undef COOLDOWN_DAMAGE
#undef COOLDOWN_MEME
#undef COOLDOWN_NONE