From de13a4e4d34e2cf74bef9fcd1558bf021e7dd772 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Wed, 13 Jan 2016 21:18:34 -0800 Subject: [PATCH] Various Ragin' Mages fixes * Additionally, increases the number of memes in the codebase --- code/__HELPERS/game.dm | 16 ++++ code/datums/spells/area_teleport.dm | 4 + code/game/gamemodes/wizard/raginmages.dm | 39 ++++++-- code/game/objects/items/weapons/scrolls.dm | 4 + code/modules/client/preferences.dm | 3 +- code/modules/mob/living/carbon/human/human.dm | 84 ------------------ html/changelogs/crazylemon-ragemagefix.yml | 32 +++++++ icons/mob/human_face.dmi | Bin 79068 -> 79037 bytes 8 files changed, 88 insertions(+), 94 deletions(-) create mode 100644 html/changelogs/crazylemon-ragemagefix.yml diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index f821b19e665..03a684fc743 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -306,6 +306,22 @@ proc/isInSight(var/atom/A, var/atom/B) return candidates +/proc/get_candidate_ghosts(be_special_type, afk_bracket=3000, override_age=0, override_jobban=0) + var/roletext = get_roletext(be_special_type) + var/list/candidates = list() + // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) + while(!candidates.len && afk_bracket < 6000) + for(var/mob/dead/observer/G in player_list) + if(G.client != null) + if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) + if(!G.client.is_afk(afk_bracket) && (be_special_type in G.client.prefs.be_special)) + if(!override_jobban || (!jobban_isbanned(G, roletext) && !jobban_isbanned(G,"Syndicate"))) + if(override_age || player_old_enough_antag(G.client,be_special_type)) + candidates += G + afk_bracket += 600 // Add a minute to the bracket, for every attempt + + return candidates + /proc/ScreenText(obj/O, maptext="", screen_loc="CENTER-7,CENTER-7", maptext_height=480, maptext_width=480) if(!isobj(O)) O = new /obj/screen/text() O.maptext = maptext diff --git a/code/datums/spells/area_teleport.dm b/code/datums/spells/area_teleport.dm index 6a087a2a643..6041122fd98 100644 --- a/code/datums/spells/area_teleport.dm +++ b/code/datums/spells/area_teleport.dm @@ -26,6 +26,10 @@ var/area/thearea = teleportlocs[A] + if(thearea.tele_proof && !istype(thearea, /area/wizard_station)) + usr << "A mysterious force disrupts your arcane spell matrix, and you remain where you are." + return + return thearea /obj/effect/proc_holder/spell/targeted/area_teleport/cast(list/targets,area/thearea) diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm index d2818448736..cb9283979d7 100644 --- a/code/game/gamemodes/wizard/raginmages.dm +++ b/code/game/gamemodes/wizard/raginmages.dm @@ -10,6 +10,8 @@ var/time_checked = 0 var/players_per_mage = 4 // If the admin wants to tweak things or something but_wait_theres_more = 1 + var/delay_per_mage = 4200 // Every 7 minutes by default + var/time_till_chaos = 18000 // Half-hour in /datum/game_mode/wizard/raginmages/announce() world << "The current game mode is - Ragin' Mages!" @@ -76,7 +78,7 @@ if (wizards_alive) if(!time_checked) time_checked = world.time - if(world.time > time_checked + 3000 && (mages_made < max_mages)) + if(world.time > time_till_chaos && world.time > time_checked + delay_per_mage && (mages_made < max_mages)) time_checked = world.time make_more_mages() else @@ -100,7 +102,8 @@ wizards -= M // No, you don't get to occupy a slot marked_for_death |= M.current for(var/mob/living/L in marked_for_death) - L << "STOP FIGHTING." + if(L.stat == CONSCIOUS) // Probably a troublemaker - I'd like to see YOU fight when unconscious + L << "STOP FIGHTING." L.ghostize() if(istype(L, /mob/living/carbon/brain)) // diediedie @@ -123,11 +126,11 @@ return 0 making_mage = 1 var/list/candidates = list() - var/client/theclient = null + var/mob/dead/observer/harry = null spawn(rand(200, 600)) message_admins("SWF is still pissed, sending another wizard - [max_mages - mages_made] left.") //Protip: This returns clients, not ghosts - candidates = get_candidates(ROLE_WIZARD) + candidates = get_candidate_ghosts(ROLE_WIZARD) if(!candidates.len) message_admins("No applicable clients for the next ragin' mage, asking ghosts instead.") var/time_passed = world.time @@ -138,7 +141,7 @@ if("Yes") if((world.time-time_passed)>300)//If more than 30 game seconds passed. continue - candidates += G.client + candidates += G if("No") continue sleep(300) @@ -148,20 +151,38 @@ return else candidates = shuffle(candidates) - for(var/client/i in candidates) + for(var/mob/dead/observer/i in candidates) if(!i) continue //Dont bother removing them from the list since we only grab one wizard - theclient = i + // YER A WIZZERD HARRY + harry = i break making_mage = 0 - if(theclient) - var/mob/living/carbon/human/new_character= create_human_for_client_from_prefs(theclient) + if(harry) + var/mob/living/carbon/human/new_character= makeBody(harry) new_character.mind.make_Wizard() // This puts them at the wizard spawn, worry not mages_made++ return 1 + else + log_to_dd("The candidates list for ragin' mages contained non-observer entries!") + return 0 + +// ripped from -tg-'s wizcode, because whee lets make a very general proc for a very specific gamemode +// This probably wouldn't do half bad as a proc in __HELPERS +// Lemme know if this causes species to mess up spectacularly or anything +/datum/game_mode/wizard/raginmages/proc/makeBody(var/mob/dead/observer/G) + if(!G || !G.key) return // Let's not steal someone's soul here + + var/mob/living/carbon/human/new_character = new(pick(latejoin)) + + G.client.prefs.copy_to(new_character) + + new_character.key = G.key + + return new_character /datum/game_mode/wizard/raginmages/declare_completion() if(finished) diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index ba66e57f19e..8458058c131 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -54,6 +54,10 @@ if(!((user == loc || (in_range(src, user) && istype(src.loc, /turf))))) return + if(thearea.tele_proof && !istype(thearea, /area/wizard_station)) + user << "A mysterious force disrupts your arcane spell matrix, and you remain where you are." + return + var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread() smoke.set_up(5, 0, user.loc) smoke.attach(user) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e8d01ac9f8e..b8f4ce565af 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1566,6 +1566,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts return 1 /datum/preferences/proc/copy_to(mob/living/carbon/human/character) + character.change_species(species) // Yell at me if this causes everything to melt if(be_random_name) real_name = random_name(gender,species) @@ -1641,7 +1642,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts else if(status == "mechanical") I.robotize() - if(disabilities & DISABILITY_FLAG_FAT && character.species.flags & CAN_BE_FAT)//character.species.flags & CAN_BE_FAT) + if(disabilities & DISABILITY_FLAG_FAT && character.species.flags & CAN_BE_FAT) character.mutations += FAT character.mutations += OBESITY if(disabilities & DISABILITY_FLAG_NEARSIGHTED) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ead31b1427f..12bf73b43d4 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1870,87 +1870,3 @@ for(var/obj/item/clothing/C in src) //If they have some clothing equipped that lets them see reagents, they can see reagents if(C.scan_reagents) return 1 - -// ugh this is so hackish -// but why don't we have a proc for this already -/proc/create_human_for_client_from_prefs(var/client/C) - - var/turf/start = pick(latejoin) - - var/mob/living/carbon/human/new_character - - var/datum/species/chosen_species - if(C.prefs.species) - chosen_species = all_species[C.prefs.species] - if(chosen_species) - // Have to recheck admin due to no usr at roundstart. Latejoins are fine though. - if(is_alien_whitelisted(C, chosen_species) || check_rights_for(C, R_ADMIN)) - - new_character = new(start, C.prefs.species) - - if(!new_character) - new_character = new(start) - - new_character.lastarea = get_area(start) - - var/datum/language/chosen_language - if(C.prefs.language) - chosen_language = all_languages[C.prefs.language] - if(chosen_language) - if(is_alien_whitelisted(C, C.prefs.language) || !config.usealienwhitelist || !(chosen_language.flags & WHITELISTED)) - new_character.add_language(C.prefs.language) - if(ticker.random_players || appearance_isbanned(new_character)) - C.prefs.random_character() - C.prefs.real_name = random_name(new_character.gender) - C.prefs.copy_to(new_character) - - src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo - - var/datum/mind/M = new/datum/mind(C.key) - M.active = 0 - M.original = new_character - M.current = new_character - M.transfer_to(new_character) //won't transfer key since the mind is not active - - new_character.name = C.prefs.real_name - new_character.dna.ready_dna(new_character) - new_character.dna.b_type = C.prefs.b_type - - if(C.prefs.disabilities & DISABILITY_FLAG_NEARSIGHTED) - new_character.dna.SetSEState(GLASSESBLOCK,1,1) - new_character.disabilities |= NEARSIGHTED - - if(C.prefs.disabilities & DISABILITY_FLAG_FAT) - new_character.mutations += FAT - new_character.overeatduration = 600 // Max overeat - - if(C.prefs.disabilities & DISABILITY_FLAG_EPILEPTIC) - new_character.dna.SetSEState(EPILEPSYBLOCK,1,1) - new_character.disabilities |= EPILEPSY - - if(C.prefs.disabilities & DISABILITY_FLAG_DEAF) - new_character.dna.SetSEState(DEAFBLOCK,1,1) - new_character.sdisabilities |= DEAF - - if(C.prefs.disabilities & DISABILITY_FLAG_BLIND) - new_character.dna.SetSEState(BLINDBLOCK,1,1) - new_character.sdisabilities |= BLIND - - if(C.prefs.disabilities & DISABILITY_FLAG_MUTE) - new_character.dna.SetSEState(MUTEBLOCK,1,1) - new_character.sdisabilities |= MUTE - - chosen_species.handle_dna(new_character) - - domutcheck(new_character) - new_character.dna.UpdateSE() - new_character.sync_organ_dna() //just fucking incase I guess - - // Do the initial caching of the player's body icons. - new_character.force_update_limbs() - new_character.update_eyes() - new_character.regenerate_icons() - - new_character.key = C.key //Manually transfer the key to log them in - - return new_character \ No newline at end of file diff --git a/html/changelogs/crazylemon-ragemagefix.yml b/html/changelogs/crazylemon-ragemagefix.yml new file mode 100644 index 00000000000..45ad5ac9e6e --- /dev/null +++ b/html/changelogs/crazylemon-ragemagefix.yml @@ -0,0 +1,32 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. Remove the quotation mark and put in your name when copy+pasting the example changelog. +author: Crazylemon +delete-after: True +changes: + - rscadd: "Added a changelog editing system that should cause fewer conflicts and more accurate timestamps." + - bugfix: "Wizards now can't teleport to other antag spawn points." + - bugfix: "Removes an extruding pixel from the left-facing IPC glider monitor sprite." + - tweak: "Ragin' Mages now spawn every 7 minutes, instead of 5. Admins can further adjust this by modifying the 'delay_per_mage' variable." + - bugfix: "Ragin' Mages are now made with 100% less in-use souls (Apprentices won't have their consciousness yoinked)." + - tweak: "It takes half an hour for the REAL chaos of ragin' mages to start, for at least a semblance of normality." diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index ffecceda82e351b6fc7e920597c14640c1e9d9b3..4350582bae2fa157594fd4388227ddcc8c105ee1 100644 GIT binary patch delta 12400 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¿--S#EOKxvfXCD-=7iC$!nWyV47=?HmMx*2RlQ?wtRY+mE+( zC(lgB=DP~4@dA4dgg;E&mwP zg$zPZ{j4nWgLZUu^e#<{qcwk}=79Pn_YnC$+ zegf0YV6Zn9L=2C)l+@pph=y8$xSG^47l#v+k&$s8cz?sf3G|4FxDI-KcjG~-sX4<; z^P`BJwZ@^<3%H((bNQ%H6g(@ebyv7hYzPSmiMlNjhwTphwhS|u?}nV4xdUtjsg6!- z;)>E-B4h7ZP+}RYlar1H0OGgw2kD?PHi0>hh3a43fKGPx1SgT4TBZf!0_k|^#yAr< zQ*6@(COaXY#qPrO?zpP>xUCXF* z+q<`Sxo|-dc?&u9uX+~Pv!f*i@#>)6v7AkuB-qZ%I8BTF1nZ*LXig&90HCpZlEb*HYp|vL@>hrqicIEt;0Zcca;FAjkT`zd;~+YU!LA? zM!_1C$o{iuBkxq0lbn)Luu)0HsGA!k3!5;6@7bwbdDrf@|J2vj#kF~W{edU5o$1Ph zqqmKLFjn{yU0PatS+qY57-xVQDIzAuL?9%z1{t}1N5i};z z5Cqpe=5Ole0(t^Ke7eZ0pK){;5s{it9(>5IwCS6nESSrFEW5KQadiZqx&!osI0O`} z`ZoPm4GIVl<{WOlV{^j#CY=bgf(ePU!mseoR=K1~923>e5J*>iCPq!28%aAs zn9^k2Cd@o8Mh&KO`f|jYNSI3Ft~yhz(+?8}wLwdEegemOE2sd>1!kG?L|hi&vScY8rk7Tw;^V4YM_XoIh;| zD*3b#AvukX9?KM;$)&I|&w)WfigD&Ej86jrrmVax7>YcTmQK`V)SMWHH#Rm-)st{w z{RbG<@^sc1x3N-!_Rip5ncUkEvn3t@LNpX^lriv&k7zU*-o7h>JXx7Hn164df38lx zK8VB@kW|LL`BKKz{C%#XoiaQke0Mx(j@&K@PoCvIe6&42SzpX05?r{NyJoDsw8Z>Z z{GjVG{j!Mr#k!tlvB6FK(#wvI{~t*78J_?E delta 12422 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