mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 07:38:05 +01:00
[MIRROR] Refactors quirk code. (#6303)
* Refactors quirk code. * Update neutral.dm * 0 * Update neutral.dm Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk> Co-authored-by: Gandalf <jzo123@hotmail.com>
This commit is contained in:
co-authored by
Timberpoes
Gandalf
parent
ae68870acf
commit
ab709c8dba
@@ -376,7 +376,7 @@
|
||||
SSticker.mode.make_antag_chance(humanc)
|
||||
|
||||
if(humanc && CONFIG_GET(flag/roundstart_traits))
|
||||
SSquirks.AssignQuirks(humanc, humanc.client, TRUE)
|
||||
SSquirks.AssignQuirks(humanc, humanc.client)
|
||||
|
||||
log_manifest(character.mind.key,character.mind,character,latejoin = TRUE)
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
blood_data["features"] = dna.features
|
||||
blood_data["factions"] = faction
|
||||
blood_data["quirks"] = list()
|
||||
for(var/V in roundstart_quirks)
|
||||
for(var/V in quirks)
|
||||
var/datum/quirk/T = V
|
||||
blood_data["quirks"] += T.type
|
||||
return blood_data
|
||||
|
||||
@@ -819,22 +819,26 @@
|
||||
return
|
||||
|
||||
var/list/options = list("Clear"="Clear")
|
||||
for(var/x in subtypesof(/datum/quirk))
|
||||
var/datum/quirk/T = x
|
||||
var/qname = initial(T.name)
|
||||
options[has_quirk(T) ? "[qname] (Remove)" : "[qname] (Add)"] = T
|
||||
for(var/type in subtypesof(/datum/quirk))
|
||||
var/datum/quirk/quirk_type = type
|
||||
|
||||
if(initial(quirk_type.abstract_parent_type) == type)
|
||||
continue
|
||||
|
||||
var/qname = initial(quirk_type.name)
|
||||
options[has_quirk(quirk_type) ? "[qname] (Remove)" : "[qname] (Add)"] = quirk_type
|
||||
|
||||
var/result = input(usr, "Choose quirk to add/remove","Quirk Mod") as null|anything in sortList(options)
|
||||
if(result)
|
||||
if(result == "Clear")
|
||||
for(var/datum/quirk/q in roundstart_quirks)
|
||||
for(var/datum/quirk/q in quirks)
|
||||
remove_quirk(q.type)
|
||||
else
|
||||
var/T = options[result]
|
||||
if(has_quirk(T))
|
||||
remove_quirk(T)
|
||||
else
|
||||
add_quirk(T,TRUE)
|
||||
add_quirk(T)
|
||||
if(href_list[VV_HK_MAKE_MONKEY])
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
|
||||
@@ -891,7 +891,7 @@
|
||||
damaged_message += D
|
||||
combined_msg += "<span class='info'>Your [damaged_message] [damaged_plural ? "are" : "is"] hurt.</span>"
|
||||
|
||||
if(roundstart_quirks.len)
|
||||
if(quirks.len)
|
||||
combined_msg += "<span class='notice'>You have these quirks: [get_quirk_string(FALSE, CAT_QUIRK_ALL)].</span>"
|
||||
|
||||
to_chat(src, combined_msg.Join("\n"))
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
*/
|
||||
var/incorporeal_move = FALSE
|
||||
|
||||
var/list/roundstart_quirks = list()
|
||||
var/list/quirks = list()
|
||||
|
||||
var/list/surgeries = list() ///a list of surgery datums. generally empty, they're added when the player wants them.
|
||||
///Mob specific surgery speed modifier
|
||||
|
||||
@@ -421,27 +421,29 @@
|
||||
priority_absorb_key["stuns_absorbed"] += amount
|
||||
return TRUE
|
||||
|
||||
/////////////////////////////////// DISABILITIES ////////////////////////////////////
|
||||
/mob/living/proc/add_quirk(quirktype, spawn_effects) //separate proc due to the way these ones are handled
|
||||
/mob/living/proc/add_quirk(quirktype) //separate proc due to the way these ones are handled
|
||||
if(HAS_TRAIT(src, quirktype))
|
||||
return
|
||||
var/datum/quirk/T = quirktype
|
||||
var/qname = initial(T.name)
|
||||
var/datum/quirk/quirk = quirktype
|
||||
var/qname = initial(quirk.name)
|
||||
if(!SSquirks || !SSquirks.quirks[qname])
|
||||
return
|
||||
new quirktype (src, spawn_effects)
|
||||
return TRUE
|
||||
quirk = new quirktype()
|
||||
if(quirk.add_to_holder(src))
|
||||
return TRUE
|
||||
qdel(quirk)
|
||||
return FALSE
|
||||
|
||||
/mob/living/proc/remove_quirk(quirktype)
|
||||
for(var/datum/quirk/Q in roundstart_quirks)
|
||||
if(Q.type == quirktype)
|
||||
qdel(Q)
|
||||
for(var/datum/quirk/quirk in quirks)
|
||||
if(quirk.type == quirktype)
|
||||
qdel(quirk)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/mob/living/proc/has_quirk(quirktype)
|
||||
for(var/datum/quirk/Q in roundstart_quirks)
|
||||
if(Q.type == quirktype)
|
||||
for(var/datum/quirk/quirk in quirks)
|
||||
if(quirk.type == quirktype)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user