From b37ad5df02636c195dd6606c132da64160c86bf4 Mon Sep 17 00:00:00 2001 From: "giacomand@gmail.com" Date: Sun, 23 Sep 2012 15:35:07 +0000 Subject: [PATCH] -Changelings will start with the free powers. Meaning they don't have to buy it everytime. -Buffed paralyse sting to 20 weaken. I made this change due to the new choking, as it was nearly impossible for the changeling to have enough time to sting their victim and get them into the killing grab, while before it would be extremely easy. -When editing someone's memory and making them antags, it will display a warning message to admins to notify them of your action. -Fixed EMP'ed lockers not updating their icons when they're unlocked. -Lowered the cost of the agent card to 2 Telecrystals. -When vent crawling, welded vents won't show up in the list. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4740 316c924e-a436-60f5-8080-3fe189b3f50e --- code/datums/mind.dm | 17 +++++++++++ .../gamemodes/changeling/changeling_powers.dm | 28 +++++++++++++------ .../gamemodes/changeling/modularchangling.dm | 7 +++-- code/game/gamemodes/factions.dm | 2 +- code/game/gamemodes/game_mode.dm | 2 +- code/game/objects/items/devices/uplinks.dm | 4 +-- .../closets/secure/secure_closets.dm | 1 + code/modules/admin/admin.dm | 15 +++++----- code/modules/mob/living/carbon/carbon.dm | 2 ++ 9 files changed, 56 insertions(+), 22 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 704d40bcd18..f004e281cd4 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -485,6 +485,7 @@ datum/mind current << "\red You have been brainwashed! You are no longer a head revolutionary!" ticker.mode.update_rev_icons_removed(src) special_role = null + message_admins("[key_name_admin(usr)] has de-rev'ed [current].", 1) if("rev") if(src in ticker.mode.head_revolutionaries) @@ -498,6 +499,7 @@ datum/mind ticker.mode.revolutionaries += src ticker.mode.update_rev_icons_added(src) special_role = "Revolutionary" + message_admins("[key_name(usr)] has rev'ed [current].") if("headrev") if(src in ticker.mode.revolutionaries) @@ -522,6 +524,7 @@ datum/mind ticker.mode.head_revolutionaries += src ticker.mode.update_rev_icons_added(src) special_role = "Head Revolutionary" + message_admins("[key_name_admin(usr)] has head-rev'ed [current].", 1) if("autoobjectives") ticker.mode.forge_revolutionary_objectives(src) @@ -570,6 +573,7 @@ datum/mind cult.memoize_cult_objectives(src) current << "\red You have been brainwashed! You are no longer a cultist!" memory = "" + message_admins("[key_name_admin(usr)] has de-cult'ed [current].", 1) if("cultist") if(!(src in ticker.mode.cult)) ticker.mode.cult += src @@ -580,6 +584,7 @@ datum/mind var/datum/game_mode/cult/cult = ticker.mode if (istype(cult)) cult.memoize_cult_objectives(src) + message_admins("[key_name_admin(usr)] has cult'ed [current].", 1) if("tome") var/mob/living/carbon/human/H = current if (istype(H)) @@ -610,12 +615,14 @@ datum/mind special_role = null current.spellremove(current, config.feature_object_spell_system? "object":"verb") current << "\red You have been brainwashed! You are no longer a wizard!" + message_admins("[key_name_admin(usr)] has de-wizard'ed [current].", 1) if("wizard") if(!(src in ticker.mode.wizards)) ticker.mode.wizards += src special_role = "Wizard" //ticker.mode.learn_basic_spells(current) current << "\red You are the Space Wizard!" + message_admins("[key_name_admin(usr)] has wizard'ed [current].", 1) if("lair") current.loc = pick(wizardstart) if("dressup") @@ -635,12 +642,14 @@ datum/mind current.remove_changeling_powers() if(changeling) del(changeling) current << "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!" + message_admins("[key_name_admin(usr)] has de-changeling'ed [current].", 1) if("changeling") if(!(src in ticker.mode.changelings)) ticker.mode.changelings += src ticker.mode.grant_changeling_powers(current) special_role = "Changeling" current << "Your powers are awoken. A flash of memory returns to us...we are a changeling!" + message_admins("[key_name_admin(usr)] has changeling'ed [current].", 1) if("autoobjectives") ticker.mode.forge_changeling_objectives(src) usr << "\blue The objectives for changeling [key] have been generated. You can edit them and anounce manually." @@ -664,6 +673,7 @@ datum/mind for (var/datum/objective/nuclear/O in objectives) objectives-=O current << "\red You have been brainwashed! You are no longer a syndicate operative!" + message_admins("[key_name_admin(usr)] has de-nuke op'ed [current].", 1) if("nuclear") if(!(src in ticker.mode.syndicates)) ticker.mode.syndicates += src @@ -676,6 +686,7 @@ datum/mind current << "\blue You are a [syndicate_name()] agent!" ticker.mode.forge_syndicate_objectives(src) ticker.mode.greet_syndicate(src) + message_admins("[key_name_admin(usr)] has nuke op'ed [current].", 1) if("lair") current.loc = get_turf(locate("landmark*Syndicate-Spawn")) if("dressup") @@ -711,12 +722,14 @@ datum/mind ticker.mode.traitors -= src special_role = null current << "\red You have been brainwashed! You are no longer a traitor!" + message_admins("[key_name_admin(usr)] has de-traitor'ed [current].", 1) if("traitor") if(!(src in ticker.mode.traitors)) ticker.mode.traitors += src special_role = "traitor" current << "\red You are a traitor!" + message_admins("[key_name_admin(usr)] has traitor'ed [current].", 1) if("autoobjectives") ticker.mode.forge_traitor_objectives(src) @@ -796,9 +809,11 @@ datum/mind current.icon_state = "ai" current << "\red You have been patched! You are no longer malfunctioning!" + message_admins("[key_name_admin(usr)] has de-malf'ed [current].", 1) if("malf") make_AI_Malf() + message_admins("[key_name_admin(usr)] has malf'ed [current].", 1) if("unemag") var/mob/living/silicon/robot/R = current @@ -815,6 +830,7 @@ datum/mind else if(R.module_state_3 == R.module.emag) R.module_state_3 = null R.contents -= R.module.emag + message_admins("[key_name_admin(usr)] has unemag'ed [R].", 1) if("unemagcyborgs") if (istype(current, /mob/living/silicon/ai)) @@ -833,6 +849,7 @@ datum/mind else if(R.module_state_3 == R.module.emag) R.module_state_3 = null R.contents -= R.module.emag + message_admins("[key_name_admin(usr)] has unemag'ed [ai]'s Cyborgs.", 1) else if (href_list["common"]) switch(href_list["common"]) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 54824cbaf1b..cf045d0464a 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -12,6 +12,16 @@ if(!(P in src.verbs)) src.verbs += P.verbpath + if(!powerinstances.len) + for(var/P in powers) + powerinstances += new P() + + // Code to auto-purchase free powers. + for(var/datum/power/changeling/P in powerinstances) + if(!P.genomecost) // Is it free? + if(!(P in mind.changeling.purchasedpowers)) // Do we not have it already? + mind.changeling.purchasePower(P.name)// Purchase it. + mind.changeling.absorbed_dna |= dna return 1 @@ -25,29 +35,29 @@ //Helper proc. Does all the checks and stuff for us to avoid copypasta /mob/proc/changeling_power(var/required_chems=0, var/required_dna=0, var/max_genetic_damage=100, var/max_stat=0) - if(!usr) return - if(!usr.mind) return - if(!iscarbon(usr)) return + if(!src) return + if(!src.mind) return + if(!iscarbon(src)) return - var/datum/changeling/changeling = usr.mind.changeling + var/datum/changeling/changeling = src.mind.changeling if(!changeling) world.log << "[src] has the changeling_transform() verb but is not a changeling." return if(usr.stat > max_stat) - usr << "We are incapacitated." + src << "We are incapacitated." return if(changeling.absorbed_dna.len < required_dna) - usr << "We require at least [required_dna] samples of compatible DNA." + src << "We require at least [required_dna] samples of compatible DNA." return if(changeling.chem_charges < required_chems) - usr << "We require at least [required_chems] units of chemicals to do that!" + src << "We require at least [required_chems] units of chemicals to do that!" return if(changeling.geneticdamage > max_genetic_damage) - usr << usr << "Our geneomes are still reassembling. We need time to recover first." + src << "Our geneomes are still reassembling. We need time to recover first." return return changeling @@ -586,7 +596,7 @@ var/mob/living/carbon/T = changeling_sting(30,/mob/proc/changeling_paralysis_sting) if(!T) return 0 T << "Your muscles begin to painfully tighten." - T.Weaken(10) + T.Weaken(20) feedback_add_details("changeling_powers","PS") return 1 diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index f62a485e9b0..240a89fb199 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -424,18 +424,21 @@ var/list/datum/power/changeling/powerinstances = list() -/datum/changeling/proc/purchasePower(var/datum/power/changeling/Pname) +/datum/changeling/proc/purchasePower(var/Pname) if(!usr.mind || !usr.mind.changeling) return // src = usr.mind.changeling - var/datum/power/changeling/Thepower = null + var/datum/power/changeling/Thepower = Pname + for (var/datum/power/changeling/P in powerinstances) + //world << "[P] - [Pname] = [P.name == Pname ? "True" : "False"]" if(P.name == Pname) Thepower = P break + if(Thepower == null) usr << "This is awkward. Changeling power purchase failed, please report this bug to a coder!" return diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm index 5045cd8ed3a..fe03788dd0d 100644 --- a/code/game/gamemodes/factions.dm +++ b/code/game/gamemodes/factions.dm @@ -134,7 +134,7 @@ Whitespace:Seperator; Stealth and Camouflage Items; /obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit; /obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes; -/obj/item/weapon/card/id/syndicate:3:Agent ID card; +/obj/item/weapon/card/id/syndicate:2:Agent ID card; /obj/item/clothing/mask/gas/voice:4:Voice Changer; /obj/item/device/chameleon:4:Chameleon-Projector; Whitespace:Seperator; diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index e194e341365..e9c95cceb91 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -44,7 +44,7 @@ Whitespace:Seperator; Stealth and Camouflage Items; /obj/item/clothing/under/chameleon:3:Chameleon Jumpsuit; /obj/item/clothing/shoes/syndigaloshes:2:No-Slip Syndicate Shoes; -/obj/item/weapon/card/id/syndicate:3:Agent ID card; +/obj/item/weapon/card/id/syndicate:2:Agent ID card; /obj/item/clothing/mask/gas/voice:4:Voice Changer; /obj/item/device/chameleon:4:Chameleon-Projector; Whitespace:Seperator; diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index f4c290a6032..482b1d2df72 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -153,10 +153,10 @@ A list of items and costs is stored under the datum of every game mode, alongsid if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon") uses -= 4 if("/obj/item/weapon/storage/emp_kit" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \ - "/obj/item/weapon/card/id/syndicate" , "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \ + "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \ "/obj/item/weapon/storage/syndie_kit/imp_freedom" , "/obj/item/clothing/glasses/thermal/syndi") uses -= 3 - if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique") + if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique", "/obj/item/weapon/card/id/syndicate") uses -= 2 if("/obj/item/weapon/soap/syndie" , "/obj/item/weapon/storage/toolbox/syndicate") uses -= 1 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 5701501eedd..87d964ada16 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -34,6 +34,7 @@ if(!broken) if(prob(50/severity)) src.locked = !src.locked + src.update_icon() if(prob(20/severity) && !opened) if(!locked) open() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 2c2f7fa40a0..b26fef731e9 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -2133,13 +2133,14 @@ var/global/floorIsLava = 0 for(var/mob/living/carbon/L in living_mob_list) if(istype(L.loc, /turf/simulated/floor)) // Are they on LAVA?! var/turf/simulated/floor/F = L.loc - var/safe = 0 - for(var/obj/structure/O in F.contents) - if(O.level > F.level && !istype(O, /obj/structure/window)) // Something to stand on and it isn't under the floor! - safe = 1 - break - if(!safe) - L.adjustFireLoss(damage) + if(F.lava) + var/safe = 0 + for(var/obj/structure/O in F.contents) + if(O.level > F.level && !istype(O, /obj/structure/window)) // Something to stand on and it isn't under the floor! + safe = 1 + break + if(!safe) + L.adjustFireLoss(damage) sleep(10) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index f8ef9f4ee3e..95ca8e250a9 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -267,6 +267,8 @@ for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members) if(temp_vent.loc == loc) continue + if(temp_vent.welded) + continue var/turf/T = get_turf(temp_vent) if(!T || T.z != loc.z)