Merge branch 'master' into random-engine
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
|
||||
/datum/element/wuv //D'awwwww
|
||||
element_flags = ELEMENT_BESPOKE
|
||||
id_arg_index = 2
|
||||
//the for the me emote proc call when petted.
|
||||
var/pet_emote
|
||||
//whether the emote is visible or audible
|
||||
var/pet_type
|
||||
//same as above, except when harmed. "You are going into orbit, you stupid mutt!"
|
||||
var/punt_emote
|
||||
//same as pet_type
|
||||
var/punt_type
|
||||
//mood typepath for the moodlet signal when petted.
|
||||
var/pet_moodlet
|
||||
//same as above but for harm
|
||||
var/punt_moodlet
|
||||
|
||||
/datum/element/wuv/Attach(datum/target, pet, pet_t, pet_mood, punt, punt_t, punt_mood)
|
||||
. = ..()
|
||||
|
||||
if(!isliving(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
pet_emote = pet
|
||||
pet_type = pet_t
|
||||
punt_emote = punt
|
||||
punt_type = punt_t
|
||||
pet_moodlet = pet_mood
|
||||
punt_moodlet = punt_mood
|
||||
|
||||
RegisterSignal(target, COMSIG_MOB_ATTACK_HAND, .proc/on_attack_hand)
|
||||
|
||||
/datum/element/wuv/proc/on_attack_hand(datum/source, mob/user)
|
||||
var/mob/living/L = source
|
||||
|
||||
if(L.stat == DEAD)
|
||||
return
|
||||
//we want to delay the effect to be displayed after the mob is petted, not before.
|
||||
switch(user.a_intent)
|
||||
if(INTENT_HARM, INTENT_DISARM)
|
||||
addtimer(CALLBACK(src, .proc/kick_the_dog, source, user), 1)
|
||||
if(INTENT_HELP)
|
||||
addtimer(CALLBACK(src, .proc/pet_the_dog, source, user), 1)
|
||||
|
||||
/datum/element/wuv/proc/pet_the_dog(mob/target, mob/user)
|
||||
if(!QDELETED(target) || !QDELETED(user) || target.stat != CONSCIOUS)
|
||||
return
|
||||
new /obj/effect/temp_visual/heart(target.loc)
|
||||
if(pet_emote)
|
||||
target.emote("me", pet_type, pet_emote)
|
||||
if(pet_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) //prevents unlimited happiness petting park exploit.
|
||||
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, pet_moodlet, target)
|
||||
|
||||
/datum/element/wuv/proc/kick_the_dog(mob/target, mob/user)
|
||||
if(!QDELETED(target) || !QDELETED(user) || target.stat != CONSCIOUS)
|
||||
return
|
||||
if(punt_emote)
|
||||
target.emote("me", punt_type, punt_emote)
|
||||
if(punt_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1))
|
||||
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, punt_moodlet, target)
|
||||
+1
-1
@@ -525,7 +525,7 @@
|
||||
if(!objective)
|
||||
to_chat(usr,"Invalid objective.")
|
||||
return
|
||||
//qdel(objective) Needs cleaning objective destroys
|
||||
qdel(objective) //TODO: Needs cleaning objective destroys (whatever that means)
|
||||
message_admins("[key_name_admin(usr)] removed an objective for [current]: [objective.explanation_text]")
|
||||
log_admin("[key_name(usr)] removed an objective for [current]: [objective.explanation_text]")
|
||||
|
||||
|
||||
@@ -23,10 +23,13 @@
|
||||
mood_change = 3
|
||||
timeout = 3000
|
||||
|
||||
/datum/mood_event/pet_corgi
|
||||
description = "<span class='nicegreen'>Corgis are adorable! I can't stop petting them!</span>\n"
|
||||
mood_change = 3
|
||||
timeout = 3000
|
||||
/datum/mood_event/pet_animal
|
||||
description = "<span class='nicegreen'>Animals are adorable! I can't stop petting them!</span>\n"
|
||||
mood_change = 2
|
||||
timeout = 5 MINUTES
|
||||
|
||||
/datum/mood_event/pet_animal/add_effects(mob/animal)
|
||||
description = "<span class='nicegreen'>\The [animal.name] is adorable! I can't stop petting [animal.p_them()]!</span>\n"
|
||||
|
||||
/datum/mood_event/honk
|
||||
description = "<span class='nicegreen'>Maybe clowns aren't so bad after all. Honk!</span>\n"
|
||||
|
||||
@@ -99,6 +99,12 @@
|
||||
id = "Mesmerize"
|
||||
alert_type = /obj/screen/alert/status_effect/mesmerized
|
||||
|
||||
/datum/status_effect/no_combat_mode/mesmerize/on_apply()
|
||||
ADD_TRAIT(owner, TRAIT_MUTE, "mesmerize")
|
||||
|
||||
/datum/status_effect/no_combat_mode/mesmerize/on_remove()
|
||||
REMOVE_TRAIT(owner, TRAIT_MUTE, "mesmerize")
|
||||
|
||||
/obj/screen/alert/status_effect/mesmerized
|
||||
name = "Mesmerized"
|
||||
desc = "You cant tear your sight from who is in front of you...Their gaze is simply too enthralling.."
|
||||
|
||||
@@ -122,6 +122,15 @@
|
||||
gain_text = "<span class='notice'>You feel like exposing yourself to the world.</span>"
|
||||
lose_text = "<span class='notice'>Indecent exposure doesn't sound as charming to you anymore.</span>"
|
||||
|
||||
/datum/quirk/coldblooded
|
||||
name = "Cold-blooded"
|
||||
desc = "Your body doesn't create its own internal heat, requiring external heat regulation."
|
||||
value = 0
|
||||
medical_record_text = "Patient is ectothermic."
|
||||
mob_trait = TRAIT_COLDBLOODED
|
||||
gain_text = "<span class='notice'>You feel cold-blooded.</span>"
|
||||
lose_text = "<span class='notice'>You feel more warm-blooded.</span>"
|
||||
|
||||
/datum/quirk/alcohol_intolerance
|
||||
name = "Alcohol Intolerance"
|
||||
desc = "You take toxin damage from alcohol rather than getting drunk."
|
||||
|
||||
+15
-15
@@ -25,16 +25,16 @@
|
||||
var/key_valid
|
||||
var/require_comms_key = FALSE
|
||||
|
||||
/datum/world_topic/proc/TryRun(list/input)
|
||||
/datum/world_topic/proc/TryRun(list/input, addr)
|
||||
key_valid = config && (CONFIG_GET(string/comms_key) == input["key"])
|
||||
if(require_comms_key && !key_valid)
|
||||
return "Bad Key"
|
||||
input -= "key"
|
||||
. = Run(input)
|
||||
. = Run(input, addr)
|
||||
if(islist(.))
|
||||
. = list2params(.)
|
||||
|
||||
/datum/world_topic/proc/Run(list/input)
|
||||
/datum/world_topic/proc/Run(list/input, addr)
|
||||
CRASH("Run() not implemented for [type]!")
|
||||
|
||||
// TOPICS
|
||||
@@ -43,7 +43,7 @@
|
||||
keyword = "ping"
|
||||
log = FALSE
|
||||
|
||||
/datum/world_topic/ping/Run(list/input)
|
||||
/datum/world_topic/ping/Run(list/input, addr)
|
||||
. = 0
|
||||
for (var/client/C in GLOB.clients)
|
||||
++.
|
||||
@@ -52,7 +52,7 @@
|
||||
keyword = "playing"
|
||||
log = FALSE
|
||||
|
||||
/datum/world_topic/playing/Run(list/input)
|
||||
/datum/world_topic/playing/Run(list/input, addr)
|
||||
return GLOB.player_list.len
|
||||
|
||||
/datum/world_topic/pr_announce
|
||||
@@ -60,7 +60,7 @@
|
||||
require_comms_key = TRUE
|
||||
var/static/list/PRcounts = list() //PR id -> number of times announced this round
|
||||
|
||||
/datum/world_topic/pr_announce/Run(list/input)
|
||||
/datum/world_topic/pr_announce/Run(list/input, addr)
|
||||
var/list/payload = json_decode(input["payload"])
|
||||
var/id = "[payload["pull_request"]["id"]]"
|
||||
if(!PRcounts[id])
|
||||
@@ -78,14 +78,14 @@
|
||||
keyword = "Ahelp"
|
||||
require_comms_key = TRUE
|
||||
|
||||
/datum/world_topic/ahelp_relay/Run(list/input)
|
||||
/datum/world_topic/ahelp_relay/Run(list/input, addr)
|
||||
relay_msg_admins("<span class='adminnotice'><b><font color=red>HELP: </font> [input["source"]] [input["message_sender"]]: [input["message"]]</b></span>")
|
||||
|
||||
/datum/world_topic/comms_console
|
||||
keyword = "Comms_Console"
|
||||
require_comms_key = TRUE
|
||||
|
||||
/datum/world_topic/comms_console/Run(list/input)
|
||||
/datum/world_topic/comms_console/Run(list/input, addr)
|
||||
minor_announce(input["message"], "Incoming message from [input["message_sender"]]")
|
||||
for(var/obj/machinery/computer/communications/CM in GLOB.machines)
|
||||
CM.overrideCooldown()
|
||||
@@ -94,17 +94,17 @@
|
||||
keyword = "News_Report"
|
||||
require_comms_key = TRUE
|
||||
|
||||
/datum/world_topic/news_report/Run(list/input)
|
||||
/datum/world_topic/news_report/Run(list/input, addr)
|
||||
minor_announce(input["message"], "Breaking Update From [input["message_sender"]]")
|
||||
|
||||
/datum/world_topic/server_hop
|
||||
keyword = "server_hop"
|
||||
|
||||
/datum/world_topic/server_hop/Run(list/input)
|
||||
/datum/world_topic/server_hop/Run(list/input, addr)
|
||||
var/expected_key = input[keyword]
|
||||
for(var/mob/dead/observer/O in GLOB.player_list)
|
||||
if(O.key == expected_key)
|
||||
if(O.client)
|
||||
if(O.client?.address == addr)
|
||||
new /obj/screen/splash(O.client, TRUE)
|
||||
break
|
||||
|
||||
@@ -112,14 +112,14 @@
|
||||
keyword = "adminmsg"
|
||||
require_comms_key = TRUE
|
||||
|
||||
/datum/world_topic/adminmsg/Run(list/input)
|
||||
/datum/world_topic/adminmsg/Run(list/input, addr)
|
||||
return IrcPm(input[keyword], input["msg"], input["sender"])
|
||||
|
||||
/datum/world_topic/namecheck
|
||||
keyword = "namecheck"
|
||||
require_comms_key = TRUE
|
||||
|
||||
/datum/world_topic/namecheck/Run(list/input)
|
||||
/datum/world_topic/namecheck/Run(list/input, addr)
|
||||
//Oh this is a hack, someone refactor the functionality out of the chat command PLS
|
||||
var/datum/tgs_chat_command/namecheck/NC = new
|
||||
var/datum/tgs_chat_user/user = new
|
||||
@@ -131,13 +131,13 @@
|
||||
keyword = "adminwho"
|
||||
require_comms_key = TRUE
|
||||
|
||||
/datum/world_topic/adminwho/Run(list/input)
|
||||
/datum/world_topic/adminwho/Run(list/input, addr)
|
||||
return ircadminwho()
|
||||
|
||||
/datum/world_topic/status
|
||||
keyword = "status"
|
||||
|
||||
/datum/world_topic/status/Run(list/input)
|
||||
/datum/world_topic/status/Run(list/input, addr)
|
||||
. = list()
|
||||
.["version"] = GLOB.game_version
|
||||
.["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode
|
||||
|
||||
Reference in New Issue
Block a user