From 95cc6a27b59031c60ee2616fee25fa26ff1bb3f4 Mon Sep 17 00:00:00 2001 From: Rob Nelson Date: Tue, 21 Jan 2014 13:03:53 -0800 Subject: [PATCH] Standardize mutation constants, remove ambiguity, remove non-implemented muts. Conflicts: code/_onclick/click.dm code/game/dna/genes/powers.dm code/game/machinery/wishgranter.dm code/modules/mob/living/carbon/alien/alien.dm code/modules/mob/living/carbon/alien/humanoid/life.dm code/modules/mob/living/carbon/alien/larva/life.dm code/modules/mob/living/carbon/human/examine.dm code/modules/mob/living/carbon/human/human.dm code/modules/mob/living/carbon/human/human_movement.dm code/modules/mob/living/carbon/human/life.dm code/modules/mob/living/carbon/human/update_icons.dm code/modules/mob/living/carbon/monkey/life.dm code/modules/mob/living/carbon/species.dm code/modules/mob/living/damage_procs.dm code/modules/mob/living/living.dm code/modules/power/lighting.dm code/modules/reagents/Chemistry-Recipes.dm code/setup.dm maps/RandomZLevels/wildwest.dm --- code/_onclick/click.dm | 2 +- code/_onclick/item_attack.dm | 2 +- code/_onclick/other_mobs.dm | 2 +- code/_onclick/telekinesis.dm | 8 +- code/game/atoms.dm | 2 +- code/game/dna/dna2_domutcheck.dm | 64 +++---- code/game/dna/dna2_helpers.dm | 2 +- code/game/dna/genes/disabilities.dm | 2 +- code/game/dna/genes/powers.dm | 44 +++-- code/game/gamemodes/setupgame.dm | 1 + code/game/machinery/wishgranter.dm | 13 +- code/global.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 4 +- .../mob/living/carbon/alien/humanoid/life.dm | 4 +- .../mob/living/carbon/alien/larva/life.dm | 2 +- .../mob/living/carbon/human/examine.dm | 6 +- code/modules/mob/living/carbon/human/human.dm | 16 +- .../mob/living/carbon/human/human_movement.dm | 6 +- code/modules/mob/living/carbon/human/life.dm | 16 +- .../mob/living/carbon/human/update_icons.dm | 9 +- .../mob/living/carbon/metroid/metroid.dm | 2 +- code/modules/mob/living/carbon/monkey/life.dm | 6 +- code/modules/mob/living/carbon/species.dm | 4 +- code/modules/mob/living/damage_procs.dm | 2 +- code/modules/mob/living/living.dm | 6 +- code/modules/power/lighting.dm | 8 +- code/modules/reagents/Chemistry-Recipes.dm | 5 +- code/setup.dm | 68 +++---- maps/RandomZLevels/wildwest.dm | 177 ++++++++++++++++++ 29 files changed, 353 insertions(+), 132 deletions(-) create mode 100644 maps/RandomZLevels/wildwest.dm diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index da55252869d..4b7ec0ab0ac 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -171,7 +171,7 @@ if((LASER in mutations) && a_intent == "harm") LaserEyes(A) // moved into a proc below return - else if(TK in mutations) + else if(M_TK in mutations) switch(get_dist(src,A)) if(0) ; diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index bca477fdb53..46b73d0cf4a 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -160,7 +160,7 @@ if (istype(location, /turf/simulated)) location:add_blood_floor(M) if("fire") - if (!(COLD_RESISTANCE in M.mutations)) + if (!(M_RESIST_COLD in M.mutations)) M.take_organ_damage(0, power) M << "Aargh it burns!" M.updatehealth() diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index e8ea82d8d2a..08f33f62670 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -29,7 +29,7 @@ else if(istype(G) && G.Touch(A,0)) // for magic gloves return - else if(TK in mutations) + else if(M_TK in mutations) switch(get_dist(src,A)) if(1 to 5) // not adjacent may mean blocked by window next_move += 2 diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 0abb637cce9..78f99228a9f 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -39,13 +39,13 @@ var/const/tk_maxrange = 15 /obj/item/attack_tk(mob/user) if(user.stat || !isturf(loc)) return - if((TK in user.mutations) && !user.get_active_hand()) // both should already be true to get here + if((M_TK in user.mutations) && !user.get_active_hand()) // both should already be true to get here var/obj/item/tk_grab/O = new(src) user.put_in_active_hand(O) O.host = user O.focus_object(src) else - warning("Strange attack_tk(): TK([TK in user.mutations]) empty hand([!user.get_active_hand()])") + warning("Strange attack_tk(): TK([M_TK in user.mutations]) empty hand([!user.get_active_hand()])") return @@ -101,7 +101,7 @@ var/const/tk_maxrange = 15 if(!host || host != user) del(src) return - if(!(TK in host.mutations)) + if(!(M_TK in host.mutations)) del(src) return if(isobj(target) && !isturf(target.loc)) @@ -198,7 +198,7 @@ var/const/tk_maxrange = 15 //equip_to_slot_or_del(obj/item/W, slot, del_on_fail = 1) /* if(istype(user, /mob/living/carbon)) - if(user:mutations & TK && get_dist(source, user) <= 7) + if(user:mutations & M_TK && get_dist(source, user) <= 7) if(user:get_active_hand()) return 0 var/X = source:x var/Y = source:y diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a4b610951d9..dbcd8aa4739 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -292,7 +292,7 @@ its easier to just keep the beam vertical. add_fibers(M) //He has no prints! - if (mFingerprints in M.mutations) + if (M_FINGERPRINTS in M.mutations) if(fingerprintslast != M.key) fingerprintshidden += "(Has no fingerprints) Real name: [M.real_name], Key: [M.key]" fingerprintslast = M.key diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm index 8428723cebc..71f7e0aca5f 100644 --- a/code/game/dna/dna2_domutcheck.dm +++ b/code/game/dna/dna2_domutcheck.dm @@ -69,57 +69,57 @@ var/forced = (flags & MUTCHK_FORCED) == MUTCHK_FORCED if(M.dna.GetSEState(NOBREATHBLOCK)) - if(forced || probinj(45,inj) || (mNobreath in old_mutations)) + if(forced || probinj(45,inj) || (M_NO_BREATH in old_mutations)) M << "\blue You feel no need to breathe." - M.mutations.Add(mNobreath) + M.mutations.Add(M_NO_BREATH) if(M.dna.GetSEState(REMOTEVIEWBLOCK)) - if(forced || probinj(45,inj) || (mRemote in old_mutations)) + if(forced || probinj(45,inj) || (M_REMOTE_VIEW in old_mutations)) M << "\blue Your mind expands" - M.mutations.Add(mRemote) + M.mutations.Add(M_REMOTE_VIEW) M.verbs += /mob/living/carbon/human/proc/remoteobserve if(M.dna.GetSEState(REGENERATEBLOCK)) - if(forced || probinj(45,inj) || (mRegen in old_mutations)) + if(forced || probinj(45,inj) || (M_REGEN in old_mutations)) M << "\blue You feel better" - M.mutations.Add(mRegen) + M.mutations.Add(M_REGEN) if(M.dna.GetSEState(INCREASERUNBLOCK)) - if(forced || probinj(45,inj) || (mRun in old_mutations)) + if(forced || probinj(45,inj) || (M_RUN in old_mutations)) M << "\blue Your leg muscles pulsate." - M.mutations.Add(mRun) + M.mutations.Add(M_RUN) if(M.dna.GetSEState(REMOTETALKBLOCK)) - if(forced || probinj(45,inj) || (mRemotetalk in old_mutations)) + if(forced || probinj(45,inj) || (M_REMOTE_TALK in old_mutations)) M << "\blue You expand your mind outwards" - M.mutations.Add(mRemotetalk) + M.mutations.Add(M_REMOTE_TALK) M.verbs += /mob/living/carbon/human/proc/remotesay if(M.dna.GetSEState(MORPHBLOCK)) - if(forced || probinj(45,inj) || (mMorph in old_mutations)) - M.mutations.Add(mMorph) + if(forced || probinj(45,inj) || (M_MORPH in old_mutations)) + M.mutations.Add(M_MORPH) M << "\blue Your skin feels strange" M.verbs += /mob/living/carbon/human/proc/morph if(M.dna.GetSEState(COLDBLOCK)) - if(!(COLD_RESISTANCE in old_mutations)) - if(forced || probinj(15,inj) || (mHeatres in old_mutations)) - M.mutations.Add(mHeatres) + if(!(M_RESIST_COLD in old_mutations)) + if(forced || probinj(15,inj) || (M_RESIST_HEAT in old_mutations)) + M.mutations.Add(M_RESIST_HEAT) M << "\blue Your skin is icy to the touch" else - if(forced || probinj(5,inj) || (mHeatres in old_mutations)) - M.mutations.Add(mHeatres) + if(forced || probinj(5,inj) || (M_RESIST_HEAT in old_mutations)) + M.mutations.Add(M_RESIST_HEAT) M << "\blue Your skin is icy to the touch" if(M.dna.GetSEState(HALLUCINATIONBLOCK)) - if(forced || probinj(45,inj) || (mHallucination in old_mutations)) - M.mutations.Add(mHallucination) + if(forced || probinj(45,inj) || (M_HALLUCINATE in old_mutations)) + M.mutations.Add(M_HALLUCINATE) M << "\red Your mind says 'Hello'" if(M.dna.GetSEState(NOPRINTSBLOCK)) - if(forced || probinj(45,inj) || (mFingerprints in old_mutations)) - M.mutations.Add(mFingerprints) + if(forced || probinj(45,inj) || (M_FINGERPRINTS in old_mutations)) + M.mutations.Add(M_FINGERPRINTS) M << "\blue Your fingers feel numb" if(M.dna.GetSEState(SHOCKIMMUNITYBLOCK)) - if(forced || probinj(45,inj) || (mShock in old_mutations)) - M.mutations.Add(mShock) + if(forced || probinj(45,inj) || (M_NO_SHOCK in old_mutations)) + M.mutations.Add(M_NO_SHOCK) M << "\blue Your skin feels strange" if(M.dna.GetSEState(SMALLSIZEBLOCK)) - if(forced || probinj(45,inj) || (mSmallsize in old_mutations)) + if(forced || probinj(45,inj) || (M_DWARF in old_mutations)) M << "\blue Your skin feels rubbery" - M.mutations.Add(mSmallsize) + M.mutations.Add(M_DWARF) M.pass_flags |= 1 @@ -160,21 +160,21 @@ M.disabilities |= NERVOUS M << "\red You feel nervous." if (M.dna.GetSEState(FIREBLOCK)) - if(!(mHeatres in old_mutations)) - if(forced || probinj(30,inj) || (COLD_RESISTANCE in old_mutations)) + if(!(M_RESIST_HEAT in old_mutations)) + if(forced || probinj(30,inj) || (M_RESIST_COLD in old_mutations)) M << "\blue Your body feels warm." - M.mutations.Add(COLD_RESISTANCE) + M.mutations.Add(M_RESIST_COLD) else - if(forced || probinj(5,inj) || (COLD_RESISTANCE in old_mutations)) + if(forced || probinj(5,inj) || (M_RESIST_COLD in old_mutations)) M << "\blue Your body feels warm." - M.mutations.Add(COLD_RESISTANCE) + M.mutations.Add(M_RESIST_COLD) if (M.dna.GetSEState(BLINDBLOCK)) M.sdisabilities |= BLIND M << "\red You can't seem to see anything." if (M.dna.GetSEState(TELEBLOCK)) - if(forced || probinj(15,inj) || (TK in old_mutations)) + if(forced || probinj(15,inj) || (M_TK in old_mutations)) M << "\blue You feel smarter." - M.mutations.Add(TK) + M.mutations.Add(M_TK) if (M.dna.GetSEState(DEAFBLOCK)) M.sdisabilities |= DEAF M.ear_deaf = 1 diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 4fcc43fbf91..722439fef01 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -31,7 +31,7 @@ /proc/randmutg(var/mob/living/M) if(!M) return M.dna.check_integrity() - var/block = pick(HULKBLOCK,XRAYBLOCK,FIREBLOCK,TELEBLOCK,NOBREATHBLOCK,REMOTEVIEWBLOCK,REGENERATEBLOCK,INCREASERUNBLOCK,REMOTETALKBLOCK,MORPHBLOCK,NOPRINTSBLOCK,SHOCKIMMUNITYBLOCK,SMALLSIZEBLOCK) + var/block = pick(HULKBLOCK,XRAYBLOCK,FIREBLOCK,COLDBLOCK,TELEBLOCK,NOBREATHBLOCK,REMOTEVIEWBLOCK,REGENERATEBLOCK,INCREASERUNBLOCK,REMOTETALKBLOCK,MORPHBLOCK,NOPRINTSBLOCK,SHOCKIMMUNITYBLOCK,SMALLSIZEBLOCK) M.dna.SetSEState(block, 1) // Random Appearance Mutation diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm index 52f7fde243d..ff44a716147 100644 --- a/code/game/dna/genes/disabilities.dm +++ b/code/game/dna/genes/disabilities.dm @@ -54,7 +54,7 @@ /datum/dna/gene/disability/hallucinate name="Hallucinate" activation_message="Your mind says 'Hello'." - mutation=mHallucination + mutation=M_HALLUCINATE New() block=HALLUCINATIONBLOCK diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm index 7ddfd82cb79..dc38f464af4 100644 --- a/code/game/dna/genes/powers.dm +++ b/code/game/dna/genes/powers.dm @@ -5,7 +5,7 @@ /datum/dna/gene/basic/nobreath name="No Breathing" activation_messages=list("You feel no need to breathe.") - mutation=mNobreath + mutation=M_NO_BREATH New() block=NOBREATHBLOCK @@ -13,7 +13,7 @@ /datum/dna/gene/basic/remoteview name="Remote Viewing" activation_messages=list("Your mind expands.") - mutation=mRemote + mutation=M_REMOTE_VIEW New() block=REMOTEVIEWBLOCK @@ -25,7 +25,7 @@ /datum/dna/gene/basic/regenerate name="Regenerate" activation_messages=list("You feel better.") - mutation=mRegen + mutation=M_REGEN New() block=REGENERATEBLOCK @@ -33,7 +33,7 @@ /datum/dna/gene/basic/increaserun name="Super Speed" activation_messages=list("Your leg muscles pulsate.") - mutation=mRun + mutation=M_RUN New() block=INCREASERUNBLOCK @@ -41,7 +41,7 @@ /datum/dna/gene/basic/remotetalk name="Telepathy" activation_messages=list("You expand your mind outwards.") - mutation=mRemotetalk + mutation=M_REMOTE_TALK New() block=REMOTETALKBLOCK @@ -53,7 +53,7 @@ /datum/dna/gene/basic/morph name="Morph" activation_messages=list("Your skin feels strange.") - mutation=mMorph + mutation=M_MORPH New() block=MORPHBLOCK @@ -62,11 +62,29 @@ ..(M) M.verbs += /mob/living/carbon/human/proc/morph +/datum/dna/gene/basic/heat_resist + name="Heat Resistance" + activation_messages=list("Your skin is icy to the touch.") + mutation=M_RESIST_HEAT + + New() + block=COLDBLOCK + + can_activate(var/mob/M,var/flags) + // Probability check + var/_prob = 15 + if(M_RESIST_COLD in M.mutations) + _prob=5 + if(probinj(_prob,(flags&MUTCHK_FORCED))) + return 1 + + OnDrawUnderlays(var/mob/M,var/g,var/fat) + return "cold[fat]_s" /datum/dna/gene/basic/cold_resist name="Cold Resistance" activation_messages=list("Your body is filled with warmth.") - mutation=COLD_RESISTANCE + mutation=M_RESIST_COLD New() block=FIREBLOCK @@ -74,6 +92,8 @@ can_activate(var/mob/M,var/flags) // Probability check var/_prob=30 + if(M_RESIST_HEAT in M.mutations) + _prob=5 if(probinj(_prob,(flags&MUTCHK_FORCED))) return 1 @@ -83,7 +103,7 @@ /datum/dna/gene/basic/noprints name="No Prints" activation_messages=list("Your fingers feel numb.") - mutation=mFingerprints + mutation=M_FINGERPRINTS New() block=NOPRINTSBLOCK @@ -91,7 +111,7 @@ /datum/dna/gene/basic/noshock name="Shock Immunity" activation_messages=list("Your skin feels strange.") - mutation=mShock + mutation=M_NO_SHOCK New() block=SHOCKIMMUNITYBLOCK @@ -99,7 +119,7 @@ /datum/dna/gene/basic/midget name="Midget" activation_messages=list("Your skin feels rubbery.") - mutation=mSmallsize + mutation=M_DWARF New() block=SMALLSIZEBLOCK @@ -124,7 +144,7 @@ can_activate(var/mob/M,var/flags) // Can't be big and small. - if(mSmallsize in M.mutations) + if(M_DWARF in M.mutations) return 0 return ..(M,flags) @@ -155,7 +175,7 @@ /datum/dna/gene/basic/tk name="Telekenesis" activation_messages=list("You feel smarter.") - mutation=TK + mutation=M_TK activation_prob=15 New() diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index 67ca3d17f4f..9f5741e25d4 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -49,6 +49,7 @@ INCREASERUNBLOCK = getAssignedBlock("INCREASERUN", numsToAssign, DNA_HARDER_BOUNDS) REMOTETALKBLOCK = getAssignedBlock("REMOTETALK", numsToAssign, DNA_HARDER_BOUNDS) MORPHBLOCK = getAssignedBlock("MORPH", numsToAssign, DNA_HARDER_BOUNDS) + COLDBLOCK = getAssignedBlock("COLD", numsToAssign) HALLUCINATIONBLOCK = getAssignedBlock("HALLUCINATION", numsToAssign) NOPRINTSBLOCK = getAssignedBlock("NOPRINTS", numsToAssign, DNA_HARD_BOUNDS) SHOCKIMMUNITYBLOCK = getAssignedBlock("SHOCKIMMUNITY", numsToAssign) diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 786468c0c47..15256590eff 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -48,14 +48,19 @@ user.see_in_dark = 8 user.see_invisible = SEE_INVISIBLE_LEVEL_TWO - if (!(COLD_RESISTANCE in user.mutations)) - user.mutations.Add(COLD_RESISTANCE) + if (!(M_RESIST_COLD in user.mutations)) + user.mutations.Add(M_RESIST_COLD) - if (!(TK in user.mutations)) - user.mutations.Add(TK) + if (!(M_RESIST_HEAT in user.mutations)) + user.mutations.Add(M_RESIST_HEAT) + if (!(M_TK in user.mutations)) + user.mutations.Add(M_TK) + + /* Not used if(!(HEAL in user.mutations)) user.mutations.Add(HEAL) + */ user.update_mutations() diff --git a/code/global.dm b/code/global.dm index fd81f85d977..21d2c9a7586 100644 --- a/code/global.dm +++ b/code/global.dm @@ -59,7 +59,7 @@ var/REGENERATEBLOCK = 0 var/INCREASERUNBLOCK = 0 var/REMOTETALKBLOCK = 0 var/MORPHBLOCK = 0 -var/BLENDBLOCK = 0 +var/COLDBLOCK = 0 var/HALLUCINATIONBLOCK = 0 var/NOPRINTSBLOCK = 0 var/SHOCKIMMUNITYBLOCK = 0 diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 25b1ca2b7da..55226404cb3 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -116,7 +116,7 @@ /mob/living/carbon/alien/proc/handle_mutations_and_radiation() if(getFireLoss()) - if((COLD_RESISTANCE in mutations) || prob(5)) + if((M_RESIST_HEAT in mutations) || prob(5)) adjustFireLoss(-1) // Aliens love radiation nom nom nom @@ -221,4 +221,4 @@ Des: Removes all infected images from the alien. hud_used.alien_plasma_display.maptext = "
[storedPlasma]
" /mob/living/carbon/alien/larva/updatePlasmaDisplay() - return \ No newline at end of file + return diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index d5747f5dbae..25c823fa199 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -193,7 +193,7 @@ breath.toxins -= toxins_used breath.oxygen += toxins_used - if(breath.temperature > (T0C+66) && !(COLD_RESISTANCE in mutations)) // Hot air hurts :( + if(breath.temperature > (T0C+66) && !(M_RESIST_HEAT in mutations)) // Hot air hurts :( if(prob(20)) src << "\red You feel a searing heat in your lungs!" fire_alert = max(fire_alert, 1) @@ -239,7 +239,7 @@ thermal_protection += 0.2 if(wear_suit && (wear_suit.flags & SUITSPACE)) thermal_protection += 3 - if(COLD_RESISTANCE in mutations) + if(M_RESIST_COLD in mutations) thermal_protection += 5 return thermal_protection diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index b0240ef267d..cdae216d5c5 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -166,7 +166,7 @@ breath.toxins -= toxins_used breath.oxygen += toxins_used - if(breath.temperature > (T0C+66) && !(COLD_RESISTANCE in mutations)) // Hot air hurts :( + if(breath.temperature > (T0C+66) && !(M_RESIST_HEAT in mutations)) // Hot air hurts :( if(prob(20)) src << "\red You feel a searing heat in your lungs!" fire_alert = max(fire_alert, 1) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index d11401b98c2..dcfde83128f 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -203,8 +203,8 @@ if(suiciding) msg += "[t_He] appears to have commited suicide... there is no hope of recovery.\n" - if(mSmallsize in mutations) - msg += "[t_He] [t_is] small halfling!\n" + if(M_DWARF in mutations) + msg += "[t_He] [t_is] a halfling!\n" var/distance = get_dist(usr,src) if(istype(usr, /mob/dead/observer) || usr.stat == 2) // ghosts can see anything @@ -483,4 +483,4 @@ else return 0 else - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4503a684244..18a8716f2bb 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -48,7 +48,7 @@ /mob/living/carbon/human/grey/New() set_species("Grey") - mutations.Add(mRemotetalk) + mutations.Add(M_REMOTE_TALK) verbs += /mob/living/carbon/human/proc/remotesay ..() @@ -525,9 +525,9 @@ if(gloves) var/obj/item/clothing/gloves/G = gloves siemens_coeff = G.siemens_coefficient - //If they have shock immunity mutation - if(mShock in src.mutations) - siemens_coeff = 0 + //If they have shock immunity mutation + if(M_NO_SHOCK in src.mutations) + siemens_coeff = 0 return ..(shock_damage,source,siemens_coeff) @@ -953,7 +953,7 @@ remoteview_target = null return - if(!(mMorph in mutations)) + if(!(M_MORPH in mutations)) src.verbs -= /mob/living/carbon/human/proc/morph return @@ -1032,7 +1032,7 @@ remoteview_target = null return - if(!(mRemotetalk in src.mutations)) + if(!(M_REMOTE_TALK in src.mutations)) src.verbs -= /mob/living/carbon/human/proc/remotesay return var/list/creatures = list() @@ -1043,7 +1043,7 @@ return var/say = input ("What do you wish to say") - if(mRemotetalk in target.mutations) + if(M_REMOTE_TALK in target.mutations) target.show_message("\blue You hear [src.real_name]'s voice: [say]") else target.show_message("\blue You hear a voice that seems to echo around the room: [say]") @@ -1060,7 +1060,7 @@ reset_view(0) return - if(!(mRemote in src.mutations)) + if(!(M_REMOTE_VIEW in src.mutations)) remoteview_target = null reset_view(0) src.verbs -= /mob/living/carbon/human/proc/remoteobserve diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index e112683f348..78a472b2c02 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -12,6 +12,10 @@ if(reagents.has_reagent("nuka_cola")) return -1 + if((M_RUN in mutations)) return -1 + + if (istype(loc, /turf/space)) return -1 // It's hard to be slowed down in space by... anything + var/health_deficiency = (100 - health - halloss) if(health_deficiency >= 40) tally += (health_deficiency / 25) @@ -44,7 +48,7 @@ if (bodytemperature < 283.222) tally += (283.222 - bodytemperature) / 10 * 1.75 - if(mRun in mutations) + if(M_RUN in mutations) tally = 0 return (tally+config.human_delay) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 46672b6dcb6..5c90dbf9c26 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -256,7 +256,7 @@ proc/handle_mutations_and_radiation() if(getFireLoss()) - if((COLD_RESISTANCE in mutations) || (prob(1))) + if((M_RESIST_HEAT in mutations) || (prob(1))) heal_organ_damage(0,1) @@ -334,7 +334,7 @@ proc/breathe() if(reagents.has_reagent("lexorin")) return - if(mNobreath in mutations) return // No breath mutation means no breathing. + if(M_NO_BREATH in mutations) return // No breath mutation means no breathing. if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return if(species && species.flags & NO_BREATHE) return @@ -563,7 +563,7 @@ spawn(0) emote(pick("giggle", "laugh")) SA.moles = 0 - if( (abs(310.15 - breath.temperature) > 50) && !(COLD_RESISTANCE in mutations)) // Hot air hurts :( + if( (abs(310.15 - breath.temperature) > 50) && !(M_RESIST_HEAT in mutations)) // Hot air hurts :( if(status_flags & GODMODE) return 1 //godmode if(breath.temperature < species.cold_level_1) if(prob(20)) @@ -681,7 +681,7 @@ else if(adjusted_pressure >= species.hazard_low_pressure) pressure_alert = -1 else - if( !(COLD_RESISTANCE in mutations)) + if( !(M_RESIST_COLD in mutations)) adjustBruteLoss( LOW_PRESSURE_DAMAGE ) pressure_alert = -2 else @@ -770,6 +770,8 @@ var/thermal_protection_flags = get_heat_protection_flags(temperature) var/thermal_protection = 0.0 + if(M_RESIST_HEAT in mutations) + return 1 if(thermal_protection_flags) if(thermal_protection_flags & HEAD) thermal_protection += THERMAL_PROTECTION_HEAD @@ -825,7 +827,7 @@ proc/get_cold_protection(temperature) - if(COLD_RESISTANCE in mutations) + if(M_RESIST_COLD in mutations) return 1 //Fully protected from the cold. temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. @@ -1036,7 +1038,7 @@ silent = 0 else //ALIVE. LIGHTS ARE ON - if(mRegen in mutations) + if(M_REGEN in mutations) if(nutrition) if(prob(10)) var/randumb = rand(1,5) @@ -1444,7 +1446,7 @@ if(!machine.check_eye(src)) reset_view(null) else var/isRemoteObserve = 0 - if((mRemote in mutations) && remoteview_target) + if((M_REMOTE_VIEW in mutations) && remoteview_target) isRemoteObserve = 1 // Is he unconscious or dead? if(remoteview_target.stat!=CONSCIOUS) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index b4555ac4c5e..8134ccd67fd 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -400,9 +400,12 @@ proc/get_damage_icon_part(damage_state, body_part) else standing.underlays += "hulk_[g]_s" add_image = 1 - if(COLD_RESISTANCE) + if(M_RESIST_COLD) standing.underlays += "fire[fat]_s" add_image = 1 + if(M_RESIST_HEAT) + standing.underlays += "cold[fat]_s" + add_image = 1 if(TK) standing.underlays += "telekinesishead[fat]_s" add_image = 1 @@ -410,6 +413,10 @@ proc/get_damage_icon_part(damage_state, body_part) if(LASER) standing.overlays += "lasereyes_s" add_image = 1 + if((M_RESIST_COLD in mutations) && (M_RESIST_HEAT in mutations)) + standing.underlays -= "cold[fat]_s" + standing.underlays -= "fire[fat]_s" + standing.underlays += "coldfire[fat]_s" if(add_image) overlays_standing[MUTATIONS_LAYER] = standing else diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 12b17d58103..5676d4c72d4 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -903,7 +903,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECITON_TEMPERATURE armor = list(melee = 80, bullet = 20, laser = 20, energy = 10, bomb = 0, bio = 0, rad = 0) -/obj/effect/golemrune +/obj/effect/goleM_RUNe anchored = 1 desc = "a strange rune used to create golems. It glows when spirits are nearby." name = "rune" diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index f979071af2c..1c350dbbdb4 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -109,7 +109,7 @@ proc/handle_mutations_and_radiation() if(getFireLoss()) - if((COLD_RESISTANCE in mutations) || prob(50)) + if((M_RESIST_HEAT in mutations) || prob(50)) switch(getFireLoss()) if(1 to 50) adjustFireLoss(-1) @@ -421,7 +421,7 @@ if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) pressure_alert = -1 else - if( !(COLD_RESISTANCE in mutations) ) + if( !(M_RESIST_COLD in mutations) ) adjustBruteLoss( LOW_PRESSURE_DAMAGE ) pressure_alert = -2 else @@ -682,4 +682,4 @@ return adjustFireLoss(6) return - //END FIRE CODE + //END FIRE CODE diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 7d614817c85..273b9e3cd27 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -197,5 +197,5 @@ flags = WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT // Both must be set or it's only a 45% chance of manifesting. - default_mutations=list(mRemotetalk) - default_block_names=list("REMOTETALK") \ No newline at end of file + default_mutations=list(M_REMOTE_TALK) + default_block_names=list("REMOTETALK") diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 333cc07380b..ed2722d4832 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -14,7 +14,7 @@ if(BRUTE) adjustBruteLoss(damage/(blocked+1)) if(BURN) - if(COLD_RESISTANCE in mutations) damage = 0 + if(M_RESIST_HEAT in mutations) damage = 0 adjustFireLoss(damage/(blocked+1)) if(TOX) adjustToxLoss(damage/(blocked+1)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 67eb9e6c3df..7fbaf581775 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -47,9 +47,9 @@ /mob/living/proc/burn_skin(burn_amount) if(istype(src, /mob/living/carbon/human)) //world << "DEBUG: burn_skin(), mutations=[mutations]" - if(mShock in src.mutations) //shockproof + if(M_NO_SHOCK in src.mutations) //shockproof return 0 - if (COLD_RESISTANCE in src.mutations) //fireproof + if (M_RESIST_HEAT in src.mutations) //fireproof return 0 var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part var/divided_damage = (burn_amount)/(H.organs.len) @@ -61,7 +61,7 @@ H.updatehealth() return 1 else if(istype(src, /mob/living/carbon/monkey)) - if (COLD_RESISTANCE in src.mutations) //fireproof + if (M_RESIST_HEAT in src.mutations) //fireproof return 0 var/mob/living/carbon/monkey/M = src M.adjustFireLoss(burn_amount) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 9d4d9fefb3c..478240c0847 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -386,7 +386,7 @@ continue M.show_message("[user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) if(on && (W.flags & CONDUCT)) - //if(!user.mutations & COLD_RESISTANCE) + //if(!user.mutations & M_RESIST_COLD) if (prob(12)) electrocute_mob(user, get_area(src), src, 0.3) broken() @@ -422,7 +422,7 @@ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) s.start() - //if(!user.mutations & COLD_RESISTANCE) + //if(!user.mutations & M_RESIST_COLD) if (prob(75)) electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) @@ -498,9 +498,9 @@ else prot = 1 - if(prot > 0 || (COLD_RESISTANCE in user.mutations)) + if(prot > 0 || (M_RESIST_HEAT in user.mutations)) user << "You remove the light [fitting]" - else if(TK in user.mutations) + else if(M_TK in user.mutations) user << "You telekinetically remove the light [fitting]." else user << "You try to remove the light [fitting], but it's too hot and you don't want to burn your hand." diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index be44f5484ea..0db596c6ba4 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1372,8 +1372,9 @@ datum required_container = /obj/item/slime_extract/adamantine required_other = 1 on_reaction(var/datum/reagents/holder) - var/obj/effect/golemrune/Z = new /obj/effect/golemrune - Z.loc = get_turf_loc(holder.my_atom) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + var/obj/effect/goleM_RUNe/Z = new /obj/effect/goleM_RUNe + Z.loc = get_turf(holder.my_atom) Z.announce_to_ghosts() //////////////////////////////////////////FOOD MIXTURES//////////////////////////////////// diff --git a/code/setup.dm b/code/setup.dm index 2179feb3571..77a251ed7d0 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -129,7 +129,7 @@ #define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 20 #define PLASMA_OXYGEN_FULLBURN 10 -#define T0C 273.15 // 0degC +#define T0C 273.15 // 0degC #define T20C 293.15 // 20degC #define TCMB 2.7 // -270.3degC @@ -316,9 +316,13 @@ var/MAX_EXPLOSION_RANGE = 14 #define DISABILITY_FLAG_EPILEPTIC 4 #define DISABILITY_FLAG_DEAF 8 - // Generic mutations: -#define TK 1 -#define COLD_RESISTANCE 2 +/////////////////////////////////////// +// MUTATIONS +/////////////////////////////////////// + +// Generic mutations: +#define M_TK 1 +#define M_RESIST_COLD 2 #define XRAY 3 #define HULK 4 #define CLUMSY 5 @@ -327,43 +331,43 @@ var/MAX_EXPLOSION_RANGE = 14 #define NOCLONE 8 - // Extra powers: +// Extra powers: #define LASER 9 // harm intent - click anywhere to shoot lasers from eyes -#define HEAL 10 // healing people with hands -#define SHADOW 11 // shadow teleportation (create in/out portals anywhere) (25%) -#define SCREAM 12 // supersonic screaming (25%) -#define EXPLOSIVE 13 // exploding on-demand (15%) -#define REGENERATION 14 // superhuman regeneration (30%) -#define REPROCESSOR 15 // eat anything (50%) -#define SHAPESHIFTING 16 // take on the appearance of anything (40%) -#define PHASING 17 // ability to phase through walls (40%) -#define SHIELD 18 // shielding from all projectile attacks (30%) -#define SHOCKWAVE 19 // attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) -#define ELECTRICITY 20 // ability to shoot electric attacks (15%) +//#define HEAL 10 // (Not implemented) healing people with hands +//#define SHADOW 11 // (Not implemented) shadow teleportation (create in/out portals anywhere) (25%) +//#define SCREAM 12 // (Not implemented) supersonic screaming (25%) +//#define EXPLOSIVE 13 // (Not implemented) exploding on-demand (15%) +//#define REGENERATION 14 // (Not implemented) superhuman regeneration (30%) +//#define REPROCESSOR 15 // (Not implemented) eat anything (50%) +//#define SHAPESHIFTING 16 // (Not implemented) take on the appearance of anything (40%) +//#define PHASING 17 // (Not implemented) ability to phase through walls (40%) +//#define SHIELD 18 // (Not implemented) shielding from all projectile attacks (30%) +//#define SHOCKWAVE 19 // (Not implemented) attack a nearby tile and cause a massive shockwave, knocking most people on their asses (25%) +//#define ELECTRICITY 20 // (Not implemented) ability to shoot electric attacks (15%) //2spooky #define SKELETON 29 #define PLANT 30 // Other Mutations: -#define mNobreath 100 // no need to breathe -#define mRemote 101 // remote viewing -#define mRegen 102 // health regen -#define mRun 103 // no slowdown -#define mRemotetalk 104 // remote talking -#define mMorph 105 // changing appearance -#define mBlend 106 // nothing (seriously nothing) -#define mHallucination 107 // hallucinations -#define mFingerprints 108 // no fingerprints -#define mShock 109 // insulated hands -#define mSmallsize 110 // table climbing +#define M_NO_BREATH 100 // no need to breathe +#define M_REMOTE_VIEW 101 // remote viewing +#define M_REGEN 102 // health regen +#define M_RUN 103 // no slowdown +#define M_REMOTE_TALK 104 // remote talking +#define M_MORPH 105 // changing appearance +#define M_RESIST_HEAT 106 // heat resistance +#define M_HALLUCINATE 107 // hallucinations +#define M_FINGERPRINTS 108 // no fingerprints +#define M_NO_SHOCK 109 // insulated hands +#define M_DWARF 110 // table climbing // Goon muts -#define M_OBESITY 200 -#define M_TOXIC_FARTS 201 -#define M_STRONG 202 -#define M_SOBER 203 -#define M_PSY_RESIST 204 +#define M_OBESITY 200 // Decreased metabolism +#define M_TOXIC_FARTS 201 // Duh +#define M_STRONG 202 // (Nothing) +#define M_SOBER 203 // Increased alcohol metabolism +#define M_PSY_RESIST 204 // Block remoteview //disabilities #define NEARSIGHTED 1 diff --git a/maps/RandomZLevels/wildwest.dm b/maps/RandomZLevels/wildwest.dm new file mode 100644 index 00000000000..ec690435dbd --- /dev/null +++ b/maps/RandomZLevels/wildwest.dm @@ -0,0 +1,177 @@ +/* Code for the Wild West map by Brotemis + * Contains: + * Wish Granter + * Meat Grinder + */ + +/* + * Wish Granter + */ +/obj/machinery/wish_granter_dark + name = "Wish Granter" + desc = "You're not so sure about this, anymore..." + icon = 'icons/obj/device.dmi' + icon_state = "syndbeacon" + + anchored = 1 + density = 1 + use_power = 0 + + var/chargesa = 1 + var/insistinga = 0 + +/obj/machinery/wish_granter_dark/attack_hand(var/mob/living/carbon/human/user as mob) + usr.set_machine(src) + + if(chargesa <= 0) + user << "The Wish Granter lies silent." + return + + else if(!istype(user, /mob/living/carbon/human)) + user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's." + return + + else if(is_special_character(user)) + user << "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away." + + else if (!insistinga) + user << "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?" + insistinga++ + + else + chargesa-- + insistinga = 0 + var/wish = input("You want...","Wish") as null|anything in list("Power","Wealth","Immortality","To Kill","Peace") + switch(wish) + if("Power") + user << "Your wish is granted, but at a terrible cost..." + user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart." + if (!(LASER in user.mutations)) + user.mutations.Add(LASER) + user << "\blue You feel pressure building behind your eyes." + if (!(M_RESIST_COLD in user.mutations)) + user.mutations.Add(M_RESIST_COLD) + user << "\blue Your body feels warm." + if (!(M_RESIST_HEAT in user.mutations)) + user.mutations.Add(M_RESIST_HEAT) + user << "\blue Your skin feels icy to the touch." + if (!(XRAY in user.mutations)) + user.mutations.Add(XRAY) + user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) + user.see_in_dark = 8 + user.see_invisible = SEE_INVISIBLE_LEVEL_TWO + user << "\blue The walls suddenly disappear." + user.dna.mutantrace = "shadow" + user.update_mutantrace() + if("Wealth") + user << "Your wish is granted, but at a terrible cost..." + user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart." + new /obj/structure/closet/syndicate/resources/everything(loc) + user.dna.mutantrace = "shadow" + user.update_mutantrace() + if("Immortality") + user << "Your wish is granted, but at a terrible cost..." + user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart." + user.verbs += /mob/living/carbon/proc/immortality + user.dna.mutantrace = "shadow" + user.update_mutantrace() + if("To Kill") + user << "Your wish is granted, but at a terrible cost..." + user << "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart." + ticker.mode.traitors += user.mind + user.mind.special_role = "traitor" + var/datum/objective/hijack/hijack = new + hijack.owner = user.mind + user.mind.objectives += hijack + user << "Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!" + var/obj_count = 1 + for(var/datum/objective/OBJ in user.mind.objectives) + user << "Objective #[obj_count]: [OBJ.explanation_text]" + obj_count++ + user.dna.mutantrace = "shadow" + user.update_mutantrace() + if("Peace") + user << "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence." + user << "You feel as if you just narrowly avoided a terrible fate..." + for(var/mob/living/simple_animal/hostile/faithless/F in world) + F.health = -10 + F.stat = 2 + F.icon_state = "faithless_dead" + + +///////////////Meatgrinder////////////// + + +/obj/effect/meatgrinder + name = "Meat Grinder" + desc = "What is that thing?" + density = 1 + anchored = 1 + layer = 3 + icon = 'icons/mob/critter.dmi' + icon_state = "blob" + var/triggerproc = "explode" //name of the proc thats called when the mine is triggered + var/triggered = 0 + +/obj/effect/meatgrinder/New() + icon_state = "blob" + +/obj/effect/meatgrinder/HasEntered(AM as mob|obj) + Bumped(AM) + +/obj/effect/meatgrinder/Bumped(mob/M as mob|obj) + + if(triggered) return + + if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey)) + for(var/mob/O in viewers(world.view, src.loc)) + O << "[M] triggered the \icon[src] [src]" + triggered = 1 + call(src,triggerproc)(M) + +/obj/effect/meatgrinder/proc/triggerrad1(mob) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + for(var/mob/O in viewers(world.view, src.loc)) + s.set_up(3, 1, src) + s.start() + explosion(mob, 1, 0, 0, 0) + spawn(0) + del(src) + +/obj/effect/meatgrinder + name = "Meat Grinder" + icon_state = "blob" + triggerproc = "triggerrad1" + + +/////For the Wishgranter/////////// + +/mob/living/carbon/proc/immortality() + set category = "Immortality" + set name = "Resurrection" + + var/mob/living/carbon/C = usr + if(!C.stat) + C << "You're not dead yet!" + return + C << "Death is not your end!" + + spawn(rand(800,1200)) + if(C.stat == DEAD) + dead_mob_list -= C + living_mob_list += C + C.stat = CONSCIOUS + C.tod = null + C.setToxLoss(0) + C.setOxyLoss(0) + C.setCloneLoss(0) + C.SetParalysis(0) + C.SetStunned(0) + C.SetWeakened(0) + C.radiation = 0 + C.heal_overall_damage(C.getBruteLoss(), C.getFireLoss()) + C.reagents.clear_reagents() + C << "You have regenerated." + C.visible_message("[usr] appears to wake from the dead, having healed all wounds.") + C.update_canmove() + return 1 \ No newline at end of file