From 1a2adaaadbeffafe88799e1443db5d9fc856f473 Mon Sep 17 00:00:00 2001 From: Rob Nelson Date: Thu, 27 Feb 2014 15:52:54 -0800 Subject: [PATCH] Make good/bad mutations dynamically assigned. Conflicts: code/game/dna/dna2_helpers.dm --- code/game/dna/dna2.dm | 3 ++ code/game/dna/dna2_helpers.dm | 4 +-- code/game/gamemodes/setupgame.dm | 62 +++++++++++++++++--------------- 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index 72badcfc103..531fac59e94 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -45,6 +45,9 @@ var/global/list/assigned_blocks[DNA_SE_LENGTH] var/global/list/datum/dna/gene/dna_genes[0] +var/global/list/good_blocks[0] +var/global/list/bad_blocks[0] + ///////////////// // GENE DEFINES ///////////////// diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 722439fef01..a179c3dab68 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -24,14 +24,14 @@ /proc/randmutb(var/mob/living/M) if(!M) return M.dna.check_integrity() - var/block = pick(GLASSESBLOCK,COUGHBLOCK,FAKEBLOCK,NERVOUSBLOCK,CLUMSYBLOCK,TWITCHBLOCK,HEADACHEBLOCK,BLINDBLOCK,DEAFBLOCK,HALLUCINATIONBLOCK) + var/block = pick(bad_blocks) M.dna.SetSEState(block, 1) // Give Random Good Mutation to M /proc/randmutg(var/mob/living/M) if(!M) return M.dna.check_integrity() - var/block = pick(HULKBLOCK,XRAYBLOCK,FIREBLOCK,COLDBLOCK,TELEBLOCK,NOBREATHBLOCK,REMOTEVIEWBLOCK,REGENERATEBLOCK,INCREASERUNBLOCK,REMOTETALKBLOCK,MORPHBLOCK,NOPRINTSBLOCK,SHOCKIMMUNITYBLOCK,SMALLSIZEBLOCK) + var/block = pick(good_blocks) M.dna.SetSEState(block, 1) // Random Appearance Mutation diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index 11880ec7845..a9dd31c71b7 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -1,9 +1,13 @@ -/proc/getAssignedBlock(var/name,var/list/blocksLeft, var/activity_bounds=DNA_DEFAULT_BOUNDS) +/proc/getAssignedBlock(var/name,var/list/blocksLeft, var/activity_bounds=DNA_DEFAULT_BOUNDS, var/good=0) if(blocksLeft.len==0) warning("[name]: No more blocks left to assign!") return 0 var/assigned = pick(blocksLeft) blocksLeft.Remove(assigned) + if(good) + good_blocks += assigned + else + bad_blocks += assigned assigned_blocks[assigned]=name dna_activity_bounds[assigned]=activity_bounds //Debug message_admins("[name] assigned to block #[assigned].") @@ -32,10 +36,10 @@ // Standard muts BLINDBLOCK = getAssignedBlock("BLIND", numsToAssign) DEAFBLOCK = getAssignedBlock("DEAF", numsToAssign) - HULKBLOCK = getAssignedBlock("HULK", numsToAssign, DNA_HARD_BOUNDS) - TELEBLOCK = getAssignedBlock("TELE", numsToAssign, DNA_HARD_BOUNDS) - FIREBLOCK = getAssignedBlock("FIRE", numsToAssign, DNA_HARDER_BOUNDS) - XRAYBLOCK = getAssignedBlock("XRAY", numsToAssign, DNA_HARDER_BOUNDS) + HULKBLOCK = getAssignedBlock("HULK", numsToAssign, DNA_HARD_BOUNDS, good=1) + TELEBLOCK = getAssignedBlock("TELE", numsToAssign, DNA_HARD_BOUNDS, good=1) + FIREBLOCK = getAssignedBlock("FIRE", numsToAssign, DNA_HARDER_BOUNDS, good=1) + XRAYBLOCK = getAssignedBlock("XRAY", numsToAssign, DNA_HARDER_BOUNDS, good=1) CLUMSYBLOCK = getAssignedBlock("CLUMSY", numsToAssign) FAKEBLOCK = getAssignedBlock("FAKE", numsToAssign) COUGHBLOCK = getAssignedBlock("COUGH", numsToAssign) @@ -46,17 +50,17 @@ // Bay muts HEADACHEBLOCK = getAssignedBlock("HEADACHE", numsToAssign) - NOBREATHBLOCK = getAssignedBlock("NOBREATH", numsToAssign, DNA_HARD_BOUNDS) - REMOTEVIEWBLOCK = getAssignedBlock("REMOTEVIEW", numsToAssign, DNA_HARDER_BOUNDS) - REGENERATEBLOCK = getAssignedBlock("REGENERATE", numsToAssign, DNA_HARDER_BOUNDS) - 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) + NOBREATHBLOCK = getAssignedBlock("NOBREATH", numsToAssign, DNA_HARD_BOUNDS, good=1) + REMOTEVIEWBLOCK = getAssignedBlock("REMOTEVIEW", numsToAssign, DNA_HARDER_BOUNDS, good=1) + REGENERATEBLOCK = getAssignedBlock("REGENERATE", numsToAssign, DNA_HARDER_BOUNDS, good=1) + INCREASERUNBLOCK = getAssignedBlock("INCREASERUN", numsToAssign, DNA_HARDER_BOUNDS, good=1) + REMOTETALKBLOCK = getAssignedBlock("REMOTETALK", numsToAssign, DNA_HARDER_BOUNDS, good=1) + MORPHBLOCK = getAssignedBlock("MORPH", numsToAssign, DNA_HARDER_BOUNDS, good=1) + COLDBLOCK = getAssignedBlock("COLD", numsToAssign, good=1) HALLUCINATIONBLOCK = getAssignedBlock("HALLUCINATION", numsToAssign) - NOPRINTSBLOCK = getAssignedBlock("NOPRINTS", numsToAssign, DNA_HARD_BOUNDS) - SHOCKIMMUNITYBLOCK = getAssignedBlock("SHOCKIMMUNITY", numsToAssign) - SMALLSIZEBLOCK = getAssignedBlock("SMALLSIZE", numsToAssign, DNA_HARD_BOUNDS) + NOPRINTSBLOCK = getAssignedBlock("NOPRINTS", numsToAssign, DNA_HARD_BOUNDS, good=1) + SHOCKIMMUNITYBLOCK = getAssignedBlock("SHOCKIMMUNITY", numsToAssign, good=1) + SMALLSIZEBLOCK = getAssignedBlock("SMALLSIZE", numsToAssign, DNA_HARD_BOUNDS, good=1) // // Goon muts @@ -70,23 +74,23 @@ CHAVBLOCK = getAssignedBlock("CHAV", numsToAssign) SWEDEBLOCK = getAssignedBlock("SWEDE", numsToAssign) SCRAMBLEBLOCK = getAssignedBlock("SCRAMBLE", numsToAssign) - TOXICFARTBLOCK = getAssignedBlock("TOXICFART", numsToAssign) - STRONGBLOCK = getAssignedBlock("STRONG", numsToAssign) + TOXICFARTBLOCK = getAssignedBlock("TOXICFART", numsToAssign, good=1) + STRONGBLOCK = getAssignedBlock("STRONG", numsToAssign, good=1) HORNSBLOCK = getAssignedBlock("HORNS", numsToAssign) // Powers - SOBERBLOCK = getAssignedBlock("SOBER", numsToAssign) - PSYRESISTBLOCK = getAssignedBlock("PSYRESIST", numsToAssign, DNA_HARD_BOUNDS) - SHADOWBLOCK = getAssignedBlock("SHADOW", numsToAssign, DNA_HARDER_BOUNDS) - CHAMELEONBLOCK = getAssignedBlock("CHAMELEON", numsToAssign, DNA_HARDER_BOUNDS) - CRYOBLOCK = getAssignedBlock("CRYO", numsToAssign, DNA_HARD_BOUNDS) - EATBLOCK = getAssignedBlock("EAT", numsToAssign, DNA_HARD_BOUNDS) - JUMPBLOCK = getAssignedBlock("JUMP", numsToAssign, DNA_HARD_BOUNDS) - MELTBLOCK = getAssignedBlock("MELT", numsToAssign) - IMMOLATEBLOCK = getAssignedBlock("IMMOLATE", numsToAssign) - EMPATHBLOCK = getAssignedBlock("EMPATH", numsToAssign, DNA_HARD_BOUNDS) - SUPERFARTBLOCK = getAssignedBlock("SUPERFART", numsToAssign, DNA_HARDER_BOUNDS) - POLYMORPHBLOCK = getAssignedBlock("POLYMORPH", numsToAssign, DNA_HARDER_BOUNDS) + SOBERBLOCK = getAssignedBlock("SOBER", numsToAssign, good=1) + PSYRESISTBLOCK = getAssignedBlock("PSYRESIST", numsToAssign, DNA_HARD_BOUNDS, good=1) + SHADOWBLOCK = getAssignedBlock("SHADOW", numsToAssign, DNA_HARDER_BOUNDS, good=1) + CHAMELEONBLOCK = getAssignedBlock("CHAMELEON", numsToAssign, DNA_HARDER_BOUNDS, good=1) + CRYOBLOCK = getAssignedBlock("CRYO", numsToAssign, DNA_HARD_BOUNDS, good=1) + EATBLOCK = getAssignedBlock("EAT", numsToAssign, DNA_HARD_BOUNDS, good=1) + JUMPBLOCK = getAssignedBlock("JUMP", numsToAssign, DNA_HARD_BOUNDS, good=1) + MELTBLOCK = getAssignedBlock("MELT", numsToAssign, good=1) + IMMOLATEBLOCK = getAssignedBlock("IMMOLATE", numsToAssign, good=1) + EMPATHBLOCK = getAssignedBlock("EMPATH", numsToAssign, DNA_HARD_BOUNDS, good=1) + SUPERFARTBLOCK = getAssignedBlock("SUPERFART", numsToAssign, DNA_HARDER_BOUNDS, good=1) + POLYMORPHBLOCK = getAssignedBlock("POLYMORPH", numsToAssign, DNA_HARDER_BOUNDS, good=1) // // Static Blocks