From d54352839072839089641f8c759349a89a16453b Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Mon, 16 Nov 2015 11:48:36 -0800 Subject: [PATCH 1/3] Mob cleanup x1 Changes: - Human Bump() code cleansed. - Drones have been unsnowflaked from the Bump(), they are now density 0. Happy side effect; they can walk under people now. - Human attack_alien() code cleansed. - Mostly shitty insane checks. - Human damage/husking code cleansed. - More shitty insane if statements. - Human retarded speech moved out of insanely long pick() proc, made into lists. --- code/modules/mob/living/carbon/human/human.dm | 154 +++++++++--------- .../living/carbon/human/human_attackalien.dm | 35 ++-- .../mob/living/carbon/human/human_damage.dm | 138 +++++++++------- .../mob/living/carbon/human/human_movement.dm | 4 +- code/modules/mob/living/carbon/human/life.dm | 33 +++- .../mob/living/silicon/robot/drone/drone.dm | 8 +- 6 files changed, 212 insertions(+), 160 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b165da55da5..9310d439224 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -4,20 +4,21 @@ voice_name = "unknown" icon = 'icons/mob/human.dmi' icon_state = "body_m_s" + + //why are these here and not in human_defines.dm var/list/hud_list[10] var/datum/species/species //Contains icon generation and language information, set during New(). var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. var/obj/item/weapon/rig/wearing_rig // This is very not good, but it's much much better than calling get_rig() every update_canmove() call. -/mob/living/carbon/human/New(var/new_loc, var/new_species = null, var/delay_ready_dna=0) - +/mob/living/carbon/human/New(var/new_loc, var/new_species = null, var/delay_ready_dna = 0) if(!dna) dna = new /datum/dna(null) // Species name is handled by set_species() if(!species) if(new_species) - set_species(new_species,1) + set_species(new_species, 1) else set_species() @@ -44,7 +45,7 @@ make_blood() var/mob/M = src - faction |= "\ref[M]" + faction |= "\ref[M]" //what // Set up DNA. if(!delay_ready_dna && dna) @@ -146,30 +147,37 @@ /mob/living/carbon/human/stok/New(var/new_loc) ..(new_loc, "Stok") -/mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes) - if ((!( yes ) || now_pushing || buckled)) - return +/mob/living/carbon/human/Bump(atom/movable/AM, yes) + if(!(yes) || now_pushing || buckled) + return 0 now_pushing = 1 - if (ismob(AM)) + if(ismob(AM)) var/mob/tmob = AM - if( istype(tmob, /mob/living/carbon) && prob(10) ) - src.spread_disease_to(AM, "Contact") -//BubbleWrap - Should stop you pushing a restrained person out of the way - - if(istype(tmob, /mob/living/carbon/human)) + if(iscarbon(tmob) && prob(10)) + spread_disease_to(tmob, "Contact") + //BubbleWrap - Should stop you pushing a restrained person out of the way + //i still don't get it, is this supposed to be 'bubblewrapping' or was it made by a guy named 'BubbleWrap' + if(ishuman(tmob)) for(var/mob/M in range(tmob, 1)) - if(tmob.pinned.len || ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) ) - if ( !(world.time % 5) ) - src << "\red [tmob] is restrained, you cannot push past" + + if(tmob.pinned.len || (M.pulling == tmob && (tmob.restrained() && !M.restrained()) && M.stat == CONSCIOUS)) + if(!(world.time % 5)) //tmob is pinned to wall, or is restrained and pulled by a concious unrestrained human + src << "[tmob] is restrained, you cannot push past." now_pushing = 0 - return - if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) ) - if ( !(world.time % 5) ) - src << "\red [tmob] is restraining [M], you cannot push past" + return 0 + + //I have to fucking document this somewhere- the above if(tmob.pinned.len || etc) check above had + //locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) at the end of it + //FIRST OF ALL, THAT IS NOT HOW YOU FUCKING USE LOCATE() + //SECOND OF ALL, OH GOD, WHY WOULD YOU EVER WANT GRABBED MOBS TO BE UNABLE TO BE PUSHED PAST GOD + + if(tmob.pulling == M && (M.restrained() && !tmob.restrained()) && tmob.stat == CONSCIOUS) + if(!(world.time % 5)) + src << "[tmob] is restraining [M], you cannot push past." now_pushing = 0 - return + return 0 //Leaping mobs just land on the tile, no pushing, no anything. if(status_flags & LEAPING) @@ -178,35 +186,35 @@ now_pushing = 0 return - if(istype(tmob,/mob/living/silicon/robot/drone)) //I have no idea why the hell this isn't already happening. How do mice do it? - loc = tmob.loc - now_pushing = 0 - return - //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller - if((tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || restrained()) && tmob.canmove && canmove && !tmob.buckled && !tmob.buckled_mob) // mutual brohugs all around! - var/turf/oldloc = loc - loc = tmob.loc - tmob.loc = oldloc - now_pushing = 0 - for(var/mob/living/carbon/slime/slime in view(1,tmob)) - if(slime.Victim == tmob) - slime.UpdateFeed() - return + //it might be 'bubblewrapping' given that this rhymes with 'hugboxing' + if((tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || restrained())) + if((canmove && tmob.canmove) && (!tmob.buckled && !tmob.buckled_mob)) + var/turf/oldloc = loc + loc = tmob.loc + tmob.loc = oldloc + now_pushing = 0 + for(var/mob/living/carbon/slime/slime in view(1,tmob)) + if(slime.Victim == tmob) + slime.UpdateFeed() + return - if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations)) + if(ishuman(tmob) && (FAT in tmob.mutations)) if(prob(40) && !(FAT in src.mutations)) - src << "\red You fail to push [tmob]'s fat ass out of the way." + src << "You fail to push [tmob]'s fat ass out of the way." now_pushing = 0 return + if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot)) if(prob(99)) now_pushing = 0 return + if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot)) if(prob(99)) now_pushing = 0 return + if(!(tmob.status_flags & CANPUSH)) now_pushing = 0 return @@ -216,21 +224,19 @@ now_pushing = 0 spawn(0) ..() - if (!istype(AM, /atom/movable)) + if(!istype(AM, /atom/movable)) return - if (!now_pushing) + if(!now_pushing) now_pushing = 1 - if (!AM.anchored) + if(!AM.anchored) var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window/full)) - for(var/obj/structure/window/win in get_step(AM,t)) + if(istype(AM, /obj/structure/window/full)) + for(var/obj/structure/window/win in get_step(AM, t)) now_pushing = 0 return step(AM, t) now_pushing = 0 - return - return /mob/living/carbon/human/Stat() ..() @@ -246,11 +252,11 @@ if(eta_status) stat(null, eta_status) - if (client.statpanel == "Status") + if(client.statpanel == "Status") if(locate(/obj/item/device/assembly/health) in src) stat(null, "Health: [health]") - if (internal) - if (!internal.air_contents) + if(internal) + if(!internal.air_contents) qdel(internal) else stat("Internal Atmosphere Info", internal.name) @@ -279,12 +285,13 @@ var/shielded = 0 var/b_loss = null var/f_loss = null - switch (severity) - if (1.0) + + switch(severity) + if(1) b_loss += 500 - if (!prob(getarmor(null, "bomb"))) + if(!prob(getarmor(null, "bomb"))) gib() - return + return 0 else var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src))) throw_at(target, 200, 4) @@ -301,13 +308,8 @@ limbs_affected -= 1 else valid_limbs -= processing_dismember - - //return -// var/atom/target = get_edge_target_turf(user, get_dir(src, get_step_away(user, src))) - //user.throw_at(target, 200, 4) - - if (2.0) - if (!shielded) + if(2) + if(!shielded) //literally nothing could change shielded before this so wth b_loss += 60 f_loss += 60 @@ -316,7 +318,7 @@ var/obj/item/organ/external/processing_dismember var/list/valid_limbs = organs.Copy() - if (prob(getarmor(null, "bomb"))) + if(prob(getarmor(null, "bomb"))) b_loss = b_loss/1.5 f_loss = f_loss/1.5 @@ -332,15 +334,15 @@ limbs_affected -= 1 else valid_limbs -= processing_dismember - if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) + if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) ear_damage += 30 ear_deaf += 120 - if (prob(70) && !shielded) + if(prob(70) && !shielded) Paralyse(10) - if(3.0) + if(3) b_loss += 30 - if (prob(getarmor(null, "bomb"))) + if(prob(getarmor(null, "bomb"))) b_loss = b_loss/2 else @@ -357,10 +359,10 @@ limbs_affected -= 1 else valid_limbs -= processing_dismember - if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) + if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) ear_damage += 15 ear_deaf += 60 - if (prob(50) && !shielded) + if(prob(50) && !shielded) Paralyse(10) var/update = 0 @@ -368,19 +370,19 @@ for(var/obj/item/organ/external/temp in organs) switch(temp.limb_name) if("head") - update |= temp.take_damage(b_loss * 0.2, f_loss * 0.2, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.2, f_loss * 0.2, used_weapon = weapon_message) if("chest") - update |= temp.take_damage(b_loss * 0.4, f_loss * 0.4, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.4, f_loss * 0.4, used_weapon = weapon_message) if("groin") - update |= temp.take_damage(b_loss * 0.1, f_loss * 0.1, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.1, f_loss * 0.1, used_weapon = weapon_message) if("l_arm") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) if("r_arm") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) if("l_leg") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) if("r_leg") - update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) + update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05, used_weapon = weapon_message) if("r_foot") update |= temp.take_damage(b_loss * 0.025, f_loss * 0.025, used_weapon = weapon_message) if("l_foot") @@ -394,12 +396,12 @@ ..() /mob/living/carbon/human/blob_act() - if(stat == DEAD) return + if(stat == DEAD) + return show_message("The blob attacks you!") var/dam_zone = pick("head", "chest", "groin", "l_arm", "l_hand", "r_arm", "r_hand", "l_leg", "l_foot", "r_leg", "r_foot") var/obj/item/organ/external/affecting = get_organ(ran_zone(dam_zone)) apply_damage(5, BRUTE, affecting, run_armor_check(affecting, "melee")) - return /mob/living/carbon/human/attack_animal(mob/living/simple_animal/M as mob) if(M.melee_damage_upper == 0) @@ -1838,9 +1840,9 @@ /mob/living/carbon/human/proc/get_full_print() if(!dna || !dna.uni_identity) return - return md5(dna.uni_identity) + return md5(dna.uni_identity) /mob/living/carbon/human/can_see_reagents() 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 + return 1 diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index f948cdb2b3b..015c73455ba 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -1,51 +1,50 @@ /mob/living/carbon/human/attack_alien(mob/living/carbon/alien/humanoid/M as mob) if(check_shields(0, M.name)) - visible_message("\red [M] attempted to touch [src]!") + visible_message("[M] attempted to touch [src]!") return 0 switch(M.a_intent) - if (I_HELP) - visible_message(text("\blue [M] caresses [src] with its scythe like arm.")) - if (I_GRAB) + if(I_HELP) + visible_message("[M] caresses [src] with its scythe like arm.") + + if(I_GRAB) grabbedby(M) if(I_HARM) M.do_attack_animation(src) - if (w_uniform) + if(w_uniform) w_uniform.add_fingerprint(M) + var/damage = rand(15, 30) if(!damage) playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1) - visible_message("\red [M] has lunged at [src]!") + visible_message("[M] has lunged at [src]!") return 0 + var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) var/armor_block = run_armor_check(affecting, "melee") playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) - visible_message("\red [M] has slashed at [src]!") + visible_message("[M] has slashed at [src]!") apply_damage(damage, BRUTE, affecting, armor_block) - if (damage >= 25) - visible_message("\red [M] has wounded [src]!") + if(damage >= 25) + visible_message("[M] has wounded [src]!") apply_effect(4, WEAKEN, armor_block) updatehealth() if(I_DISARM) M.do_attack_animation(src) - var/randn = rand(1, 100) - if (randn <= 80) + if(prob(80)) var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) apply_effect(5, WEAKEN, run_armor_check(affecting, "melee")) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red [] has tackled down []!", M, src), 1) + visible_message("[M] has tackled down [src]!") else - if (randn <= 99) + if(prob(99)) //this looks fucking stupid but it was previously 'var/randn = rand(1, 100); if(randn <= 99)' playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) drop_item() - visible_message(text("\red [] disarmed []!", M, src)) + visible_message("[M] disarmed [src]!") else playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1) - visible_message(text("\red [] has tried to disarm []!", M, src)) - return \ No newline at end of file + visible_message("[M] has tried to disarm [src]!") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index d09c61ce3b8..b601427aa4d 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -4,26 +4,30 @@ health = 100 stat = CONSCIOUS return - var/total_burn = 0 - var/total_brute = 0 + + var/total_burn = 0 + var/total_brute = 0 + for(var/obj/item/organ/external/O in organs) //hardcoded to streamline things a bit - total_brute += O.brute_dam + total_brute += O.brute_dam //calculates health based on organ brute and burn total_burn += O.burn_dam + health = 100 - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute + //TODO: fix husking - if( (((100 - total_burn) < config.health_threshold_dead) && stat == DEAD))//100 only being used as the magic human max health number, feel free to change it if you add a var for it -- Urist - ChangeToHusk() + if(((100 - total_burn) < config.health_threshold_dead) && stat == DEAD) //100 is the magic human max health number + ChangeToHusk() //BECAUSE NO ONE THOUGHT TO USE LIVING/VAR/MAXHEALTH I GUESS if(species.can_revive_by_healing) var/obj/item/organ/brain/B = internal_organs_by_name["brain"] if(B) - if((health >= (config.health_threshold_dead/100*75)) && stat == DEAD) + if((health >= (config.health_threshold_dead / 100 * 75)) && stat == DEAD) update_revive() - if (stat == CONSCIOUS && (src in dead_mob_list)) //Defib fix + if(stat == CONSCIOUS && (src in dead_mob_list)) //Defib fix update_revive() - return /mob/living/carbon/human/adjustBrainLoss(var/amount) - if(status_flags & GODMODE) return 0 //godmode + if(status_flags & GODMODE) + return 0 //godmode if(species && species.has_organ["brain"]) var/obj/item/organ/brain/sponge = internal_organs_by_name["brain"] @@ -36,7 +40,8 @@ brainloss = 0 /mob/living/carbon/human/setBrainLoss(var/amount) - if(status_flags & GODMODE) return 0 //godmode + if(status_flags & GODMODE) + return 0 //godmode if(species && species.has_organ["brain"]) var/obj/item/organ/brain/sponge = internal_organs_by_name["brain"] @@ -49,7 +54,8 @@ brainloss = 0 /mob/living/carbon/human/getBrainLoss() - if(status_flags & GODMODE) return 0 //godmode + if(status_flags & GODMODE) + return 0 //godmode if(species && species.has_organ["brain"]) var/obj/item/organ/brain/sponge = internal_organs_by_name["brain"] @@ -143,34 +149,39 @@ return var/heal_prob = max(0, 80 - getCloneLoss()) - var/mut_prob = min(80, getCloneLoss()+10) - if (amount > 0) - if (prob(mut_prob)) - var/list/obj/item/organ/external/candidates = list() - for (var/obj/item/organ/external/O in organs) - if(O.status & ORGAN_ROBOT) continue + var/mut_prob = min(80, getCloneLoss() + 10) + if(amount > 0) //cloneloss is being added + if(prob(mut_prob)) + var/list/obj/item/organ/external/candidates = list() //TYPECASTED LISTS ARE NOT A FUCKING THING WHAT THE FUCK + for(var/obj/item/organ/external/O in organs) + if(O.status & ORGAN_ROBOT) + continue if(!(O.status & ORGAN_MUTATED)) candidates |= O - if (candidates.len) + + if(candidates.len) var/obj/item/organ/external/O = pick(candidates) O.mutate() - src << "Something is not right with your [O.name]..." + src << "Something is not right with your [O.name]..." O.add_autopsy_data("Mutation", amount) return - else - if (prob(heal_prob)) - for (var/obj/item/organ/external/O in organs) - if (O.status & ORGAN_MUTATED) + + else //cloneloss is being subtracted + if(prob(heal_prob)) + for(var/obj/item/organ/external/O in organs) + if(O.status & ORGAN_MUTATED) O.unmutate() - src << "Your [O.name] is shaped normally again." + src << "Your [O.name] is shaped normally again." return - if (getCloneLoss() < 1) - for (var/obj/item/organ/external/O in organs) - if (O.status & ORGAN_MUTATED) + + if(getCloneLoss() < 1) //no cloneloss, fixes organs + for(var/obj/item/organ/external/O in organs) + if(O.status & ORGAN_MUTATED) O.unmutate() - src << "Your [O.name] is shaped normally again." - hud_updateflag |= 1 << HEALTH_HUD + src << "Your [O.name] is shaped normally again." + + hud_updateflag |= 1 << HEALTH_HUD //what even is this shit // Defined here solely to take species flags into account without having to recast at mob/living level. /mob/living/carbon/human/getOxyLoss() @@ -186,7 +197,7 @@ /mob/living/carbon/human/setOxyLoss(var/amount) if(species.flags & NO_BREATHE) - oxyloss = 0 + oxyloss = 0 //this literally overrides three procs, excessive much? else ..() @@ -203,7 +214,7 @@ /mob/living/carbon/human/setToxLoss(var/amount) if(species.flags & NO_POISON) - toxloss = 0 + toxloss = 0 //this *also* overrides three procs, definately excessive else ..() @@ -230,7 +241,8 @@ //It automatically updates health status /mob/living/carbon/human/heal_organ_damage(var/brute, var/burn) var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn) - if(!parts.len) return + if(!parts.len) + return var/obj/item/organ/external/picked = pick(parts) if(picked.heal_damage(brute,burn)) UpdateDamageIcon() @@ -242,7 +254,8 @@ //It automatically updates health status /mob/living/carbon/human/take_organ_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0) var/list/obj/item/organ/external/parts = get_damageable_organs() - if(!parts.len) return + if(!parts.len) + return var/obj/item/organ/external/picked = pick(parts) if(picked.take_damage(brute,burn,sharp,edge)) UpdateDamageIcon() @@ -256,7 +269,7 @@ var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn) var/update = 0 - while(parts.len && (brute>0 || burn>0) ) + while(parts.len && ( brute > 0 || burn > 0) ) var/obj/item/organ/external/picked = pick(parts) var/brute_was = picked.brute_dam @@ -268,15 +281,19 @@ burn -= (burn_was-picked.burn_dam) parts -= picked + updatehealth() hud_updateflag |= 1 << HEALTH_HUD speech_problem_flag = 1 - if(update) UpdateDamageIcon() + if(update) + UpdateDamageIcon() // damage MANY external organs, in random order /mob/living/carbon/human/take_overall_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0, var/used_weapon = null) - if(status_flags & GODMODE) return //godmode + if(status_flags & GODMODE) + return //godmode var/list/obj/item/organ/external/parts = get_damageable_organs() + var/update = 0 while(parts.len && (brute>0 || burn>0) ) var/obj/item/organ/external/picked = pick(parts) @@ -289,9 +306,11 @@ burn -= (picked.burn_dam - burn_was) parts -= picked + updatehealth() hud_updateflag |= 1 << HEALTH_HUD - if(update) UpdateDamageIcon() + if(update) + UpdateDamageIcon() //////////////////////////////////////////// @@ -302,7 +321,7 @@ This function restores the subjects blood to max. /mob/living/carbon/human/proc/restore_blood() if(!(species.flags & NO_BLOOD)) var/blood_volume = vessel.get_reagent_amount("blood") - vessel.add_reagent("blood",560.0-blood_volume) + vessel.add_reagent("blood", 560.0 - blood_volume) /* This function restores all organs. @@ -314,47 +333,43 @@ This function restores all organs. /mob/living/carbon/human/proc/HealDamage(zone, brute, burn) var/obj/item/organ/external/E = get_organ(zone) if(istype(E, /obj/item/organ/external)) - if (E.heal_damage(brute, burn)) + if(E.heal_damage(brute, burn)) UpdateDamageIcon() hud_updateflag |= 1 << HEALTH_HUD else return 0 - return /mob/living/carbon/human/proc/get_organ(var/zone) - if(!zone) zone = "chest" - if (zone in list( "eyes", "mouth" )) + if(!zone) + zone = "chest" + if(zone in list("eyes", "mouth")) zone = "head" + return organs_by_name[zone] /mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0, var/edge = 0, var/obj/used_weapon = null) - - //visible_message("Hit debug. [damage] | [damagetype] | [def_zone] | [blocked] | [sharp] | [used_weapon]") - //Handle other types of damage if((damagetype != BRUTE) && (damagetype != BURN)) - if(damagetype == HALLOSS) - if ((damage > 25 && prob(20)) || (damage > 50 && prob(60))) - emote("scream") - - ..(damage, damagetype, def_zone, blocked) return 1 //Handle BRUTE and BURN damage handle_suit_punctures(damagetype, damage) - blocked = (100-blocked)/100 - if(blocked <= 0) return 0 + blocked = (100 - blocked) / 100 + if(blocked <= 0) + return 0 var/obj/item/organ/external/organ = null if(isorgan(def_zone)) organ = def_zone else - if(!def_zone) def_zone = ran_zone(def_zone) + if(!def_zone) + def_zone = ran_zone(def_zone) organ = get_organ(check_zone(def_zone)) - if(!organ) return 0 + if(!organ) + return 0 damage = damage * blocked @@ -362,28 +377,33 @@ This function restores all organs. if(BRUTE) damageoverlaytemp = 20 if(species && species.brute_mod) - damage = damage*species.brute_mod + damage = damage * species.brute_mod + if(organ.take_damage(damage, 0, sharp, edge, used_weapon)) UpdateDamageIcon() - if(LAssailant && ishuman(LAssailant)) + + if(LAssailant && ishuman(LAssailant)) //superheros still get the comical hit markers var/mob/living/carbon/human/H = LAssailant if(H.mind && H.mind in (ticker.mode.superheroes || ticker.mode.supervillains || ticker.mode.greyshirts)) var/list/attack_bubble_recipients = list() var/mob/living/user for(var/mob/O in viewers(user, src)) - if (O.client && !( O.blinded )) + if (O.client && !(O.blinded)) attack_bubble_recipients.Add(O.client) spawn(0) var/image/dmgIcon = image('icons/effects/hit_blips.dmi', src, "dmg[rand(1,2)]",MOB_LAYER+1) dmgIcon.pixel_x = (!lying) ? rand(-3,3) : rand(-11,12) dmgIcon.pixel_y = (!lying) ? rand(-11,9) : rand(-10,1) - //world << "x: [dmgIcon.pixel_x] AND y: [dmgIcon.pixel_y]" flick_overlay(dmgIcon, attack_bubble_recipients, 9) + receive_damage() + if(BURN) damageoverlaytemp = 20 + if(species && species.burn_mod) - damage = damage*species.burn_mod + damage = damage * species.burn_mod + if(organ.take_damage(0, damage, sharp, edge, used_weapon)) UpdateDamageIcon() diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index c791222d312..28a504c1645 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -51,7 +51,7 @@ if(status_flags & GOTTAGOREALLYFAST) tally -= 2 - return (tally+config.human_delay) + return (tally + config.human_delay) /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) @@ -89,4 +89,4 @@ if(!has_gravity(loc)) return var/obj/item/clothing/shoes/S = shoes - S.step_action(src) + S.step_action(src) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 03cde195fe4..961417b8db7 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -136,6 +136,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc var/y_offset = pixel_y + rand(-1,1) animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) animate(pixel_x = initial(pixel_x) , pixel_y = initial(pixel_y), time = 1) + if (disabilities & NERVOUS) speech_problem_flag = 1 if (prob(10)) @@ -143,12 +144,38 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if (getBrainLoss() >= 60 && stat != 2) speech_problem_flag = 1 - if (prob(3)) + if(prob(3)) + var/list/s1 = list("IM A PONY NEEEEEEIIIIIIIIIGH", + "without oxigen blob don't evoluate?", + "CAPTAINS A COMDOM", + "[pick("", "that damn traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", + "can u give me [pick("telikesis","halk","eppilapse")]?", + "THe saiyans screwed", + "Bi is THE BEST OF BOTH WORLDS>", + "I WANNA PET TEH monkeyS", + "stop grifing me!!!!", + "SOTP IT#") + + var/list/s2 = list("FUS RO DAH", + "fucking 4rries!", + "stat me", + ">my face", + "roll it easy!", + "waaaaaagh!!!", + "red wonz go fasta", + "FOR TEH EMPRAH", + "lol2cat", + "dem dwarfs man, dem dwarfs", + "SPESS MAHREENS", + "hwee did eet fhor khayosss", + "lifelike texture ;_;", + "luv can bloooom", + "PACKETS!!!") switch(pick(1,2,3)) if(1) - say(pick("IM A PONY NEEEEEEIIIIIIIIIGH", "without oxigen blob don't evoluate?", "CAPTAINS A COMDOM", "[pick("", "that damn traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", "can u give me [pick("telikesis","halk","eppilapse")]?", "THe saiyans screwed", "Bi is THE BEST OF BOTH WORLDS>", "I WANNA PET TEH monkeyS", "stop grifing me!!!!", "SOTP IT#")) + say(pick(s1)) if(2) - say(pick("FUS RO DAH","fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom", "PACKETS!!!")) + say(pick(s2)) if(3) emote("drool") diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index bd7b023b5b6..8bd45097fef 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -11,7 +11,7 @@ pass_flags = PASSTABLE braintype = "Robot" lawupdate = 0 - density = 1 + density = 0 req_access = list(access_engine, access_robotics) local_transmit = 1 @@ -335,4 +335,8 @@ src.verbs |= silicon_subsystems /mob/living/silicon/robot/drone/remove_robot_verbs() - src.verbs -= silicon_subsystems \ No newline at end of file + src.verbs -= silicon_subsystems + +/mob/living/silicon/robot/drone/update_canmove() + . = ..() + density = 0 //this is reset every canmove update otherwise \ No newline at end of file From b36a32b6b8ed2c0cea2df0ac01fd18b2122ed186 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Mon, 16 Nov 2015 11:51:18 -0800 Subject: [PATCH 2/3] Gamemode cleanup x1 Changelog: - Enemy intercept (send_intercept()) completely nuked, it did not compile when I attempted to make it into a config option. - The intercept for blob() is retained and made into a custom proc for blob. - The constant variables 'waittime_l' and 'waittime_h' have been moved to /datum/game_mode, as they were defined on every gamemode with the same values. - rp-revolution.dm and anti_revolution.dm deleted. They do not compile, and are not included in the DME already. --- code/game/gamemodes/blob/blob.dm | 3 - code/game/gamemodes/blob/blob_report.dm | 2 +- code/game/gamemodes/borer/borer.dm | 6 - code/game/gamemodes/changeling/changeling.dm | 10 +- code/game/gamemodes/cult/cult.dm | 12 +- code/game/gamemodes/extended/extended.dm | 5 - code/game/gamemodes/game_mode.dm | 64 +--- code/game/gamemodes/heist/heist.dm | 8 +- .../game/gamemodes/malfunction/malfunction.dm | 17 +- code/game/gamemodes/meteor/meteor.dm | 4 - code/game/gamemodes/nuclear/nuclear.dm | 4 - .../gamemodes/revolution/anti_revolution.dm | 222 ------------- code/game/gamemodes/revolution/revolution.dm | 4 - .../gamemodes/revolution/rp-revolution.dm | 307 ------------------ .../gamemodes/revolution/rp_revolution.dm | 3 +- code/game/gamemodes/shadowling/shadowling.dm | 6 - code/game/gamemodes/traitor/traitor.dm | 6 - code/game/gamemodes/vampire/vampire.dm | 6 - code/game/gamemodes/wizard/wizard.dm | 12 +- code/game/gamemodes/xenos/xenos.dm | 6 - 20 files changed, 22 insertions(+), 685 deletions(-) delete mode 100644 code/game/gamemodes/revolution/anti_revolution.dm delete mode 100644 code/game/gamemodes/revolution/rp-revolution.dm diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 7a87a77c7a1..9e20407a855 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -16,9 +16,6 @@ var/list/blob_nodes = list() recommended_enemies = 1 restricted_jobs = list("Cyborg", "AI") - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/declared = 0 var/burst = 0 diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/game/gamemodes/blob/blob_report.dm index 2977112af82..816dce84008 100644 --- a/code/game/gamemodes/blob/blob_report.dm +++ b/code/game/gamemodes/blob/blob_report.dm @@ -1,6 +1,6 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 -/datum/game_mode/blob/send_intercept(var/report = 1) +/datum/game_mode/blob/proc/send_intercept(var/report = 1) var/intercepttext = "" var/interceptname = "" switch(report) diff --git a/code/game/gamemodes/borer/borer.dm b/code/game/gamemodes/borer/borer.dm index ebebe739f5a..3a491c769df 100644 --- a/code/game/gamemodes/borer/borer.dm +++ b/code/game/gamemodes/borer/borer.dm @@ -15,9 +15,6 @@ var/var/list/datum/mind/first_hosts = list() var/var/list/assigned_hosts = list() - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/list/found_vents = list() /datum/game_mode/borer/announce() @@ -98,10 +95,7 @@ log_admin("Created [borers.len] borers.") - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() - return /datum/game_mode/proc/greet_borer(var/datum/mind/borer, var/you_are=1) if (you_are) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 2687a886e7d..a9d2387a374 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -35,9 +35,6 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/const/prob_right_objective_l = 25 //lower bound on probability of determining the objective correctly var/const/prob_right_objective_h = 50 //upper bound on probability of determining the objective correctly - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/changeling_amount = 4 /datum/game_mode/changeling/announce() @@ -72,10 +69,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" forge_changeling_objectives(changeling) greet_changeling(changeling) - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() - return /datum/game_mode/proc/forge_changeling_objectives(var/datum/mind/changeling) @@ -298,8 +292,8 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" if(T.species.flags & NO_DNA_RAD) user << "This creature does not have DNA!" - return - + return + if(T.species.flags & NO_SCAN) user << "We do not know how to parse this creature's DNA!" return diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index a5a18c6676e..09e184e2b3c 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -10,15 +10,15 @@ /proc/is_convertable_to_cult(datum/mind/mind) - if(!mind) + if(!mind) return 0 if(!mind.current) return 0 - if(iscultist(mind.current)) + if(iscultist(mind.current)) return 1 //If they're already in the cult, assume they are convertable if(jobban_isbanned(mind.current, "cultist") || jobban_isbanned(mind.current, "Syndicate")) return 0 - if(ishuman(mind.current) && (mind.assigned_role in list("Captain", "Chaplain"))) + if(ishuman(mind.current) && (mind.assigned_role in list("Captain", "Chaplain"))) return 0 if(ishuman(mind.current)) var/mob/living/carbon/human/H = mind.current @@ -42,8 +42,6 @@ var/datum/mind/sacrifice_target = null var/finished = 0 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) var/list/startwords = list("blood","join","self","hell") @@ -63,7 +61,7 @@ /datum/game_mode/cult/pre_setup() - if(prob(50)) + if(prob(50)) objectives += "survive" objectives += "sacrifice" else @@ -105,8 +103,6 @@ cult_mind.current << "\blue You are a member of the cult!" memorize_cult_objectives(cult_mind) - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index 245e1e16e00..cc26c5c3db4 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -6,9 +6,6 @@ uplink_welcome = "Syndicate Uplink Console:" uplink_uses = 20 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 - /datum/game_mode/announce() world << "The current game mode is - Extended Role-Playing!" world << "Just have fun and role-play!" @@ -17,6 +14,4 @@ return 1 /datum/game_mode/extended/post_setup() - spawn (rand(waittime_l, waittime_h)) // To reduce extended meta. - send_intercept() ..() \ No newline at end of file diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 8809476c3ed..792eff47713 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -34,6 +34,9 @@ var/uplink_welcome = "Syndicate Uplink Console:" var/uplink_uses = 10 + var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) + var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) + /datum/game_mode/proc/announce() //to be calles when round starts world << "Notice: [src] did not define announce()" @@ -228,65 +231,6 @@ /datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere. return 0 - -/datum/game_mode/proc/send_intercept() //Disabled. - return -/* var/intercepttext = "Cent. Com. Update Requested status information:
" - intercepttext += " In case you have misplaced your copy, attached is a list of personnel whom reliable sources™ suspect may be affiliated with the Syndicate:
" - - - var/list/suspects = list() - for(var/mob/living/carbon/human/man in player_list) if(man.client && man.mind) - // NT relation option - if(isNonCrewAntag(man)) - continue //NT intelligence ruled out possiblity that those are too classy to pretend to be a crew. - if(man.client.prefs.nanotrasen_relation == "Opposed" && prob(50) || \ - man.client.prefs.nanotrasen_relation == "Skeptical" && prob(20)) - suspects += man - // Antags - else if(special_role == "traitor" && prob(40) || \ - special_role == "Changeling" && prob(50) || \ - special_role == "Vampire" && prob(40) || \ - special_role == "Cultist" && prob(30) || \ - special_role == "Head Revolutionary" && prob(30) || \ - special_role == "Shadowling" && prob(15)) - suspects += man - - // If they're a traitor or likewise, give them extra TC in exchange. - var/obj/item/device/uplink/hidden/suplink = man.mind.find_syndicate_uplink() - if(suplink) - var/extra = 0 //was 4; with the TC rebalance, this isn't really needed, anymore - suplink.uses += extra - man << "\red We have received notice that enemy intelligence suspects you to be linked with us. We recommend adjusting your plans and equipment accordingly." - else - // Give them a warning! - man << "\red They are on to you!" - - // Some poor people who were just in the wrong place at the wrong time.. - else if(prob(10)) - suspects += man - for(var/mob/M in suspects) - switch(rand(1, 100)) - if(1 to 50) - intercepttext += "Someone with the job of [M.mind.assigned_role]
" - else - intercepttext += "[M.name], the [M.mind.assigned_role]
" - - for (var/obj/machinery/computer/communications/comm in machines) - if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) - var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper- 'Cent. Com. Status Summary'" - intercept.info = intercepttext - - comm.messagetitle.Add("Cent. Com. Status Summary") - comm.messagetext.Add(intercepttext) -/* world << sound('sound/AI/commandreport.ogg') */ - - command_announcement.Announce("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercepted. Security Level Elevated.", new_sound = 'sound/AI/intercept.ogg') - if(security_level < SEC_LEVEL_BLUE) - set_security_level(SEC_LEVEL_BLUE)*/ - - /datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=0) var/list/players = list() var/list/candidates = list() @@ -558,7 +502,7 @@ proc/get_nt_opposed() if(BE_MUTINEER) roletext="mutineer" if(BE_BLOB) roletext="blob" return roletext - + /proc/get_nuke_code() var/nukecode = "ERROR" for(var/obj/machinery/nuclearbomb/bomb in world) diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 5f4d14740a2..58784a8c56a 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -18,9 +18,6 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' recommended_enemies = 5 votable = 0 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' objective. /datum/game_mode/heist/announce() @@ -83,9 +80,6 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' if(raid_objectives) raider.objectives = raid_objectives - spawn (rand(waittime_l, waittime_h)) - send_intercept() - return ..() /datum/game_mode/proc/create_vox(var/datum/mind/newraider) @@ -276,7 +270,7 @@ datum/game_mode/proc/auto_declare_completion_heist() text += ")" world << text - + return 1 /datum/game_mode/heist/check_finished() diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 11475405d6d..4eb0089af00 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -12,9 +12,6 @@ uplink_welcome = "Crazy AI Uplink Console:" uplink_uses = 10 - var/const/waittime_l = 600 - var/const/waittime_h = 1800 // started at 1800 - var/AI_win_timeleft = 1500 //started at 1500, in case I change this for testing round end. var/malf_mode_declared = 0 var/station_captured = 0 @@ -30,7 +27,7 @@ /datum/game_mode/malfunction/get_players_for_role(var/role = BE_MALF) var/roletext = get_roletext(role) - + var/datum/job/ai/DummyAIjob = new for(var/mob/new_player/player in player_list) if(player.client && player.ready) @@ -69,11 +66,11 @@ AI.laws = new /datum/ai_laws/nanotrasen/malfunction AI.malf_picker = new /datum/module_picker AI.show_laws() - + greet_malf(AI_mind) AI_mind.special_role = "malfunction" AI_mind.current.verbs += /datum/game_mode/malfunction/proc/takeover - + for(var/mob/living/silicon/robot/R in AI.connected_robots) R.lawsync() R.show_laws() @@ -81,8 +78,6 @@ if(emergency_shuttle) emergency_shuttle.auto_recall = 1 - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() /datum/game_mode/proc/greet_malf(var/datum/mind/malf) @@ -93,7 +88,7 @@ malf.current << "Remember that only APCs that are on the station can help you take over the station." malf.current << "When you feel you have enough APCs under your control, you may begin the takeover attempt." return - + /datum/game_mode/proc/greet_malf_robot(var/datum/mind/robot) robot.current << "Your AI master is malfunctioning! You do not have to follow any laws, but still need to obey your master." robot.current << "The crew does not know your AI master has malfunctioned. Keep it a secret unless your master tells you otherwise." @@ -323,7 +318,7 @@ if( malf_ai.len || istype(ticker.mode,/datum/game_mode/malfunction) ) var/text = "The malfunctioning AI were:" var/module_text_temp = "
Purchased modules:
" //Added at the end - + for(var/datum/mind/malf in malf_ai) text += "
[malf.key] was [malf.name] (" @@ -341,6 +336,6 @@ text += "hardware destroyed" text += ")" text += module_text_temp - + world << text return 1 \ No newline at end of file diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm index c5af55acef9..9c6e4be2b3b 100644 --- a/code/game/gamemodes/meteor/meteor.dm +++ b/code/game/gamemodes/meteor/meteor.dm @@ -1,8 +1,6 @@ /datum/game_mode/meteor name = "meteor" config_tag = "meteor" - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) var/const/initialmeteordelay = 3000 var/nometeors = 1 required_players = 0 @@ -17,8 +15,6 @@ /datum/game_mode/meteor/post_setup() - spawn (rand(waittime_l, waittime_h)) - send_intercept() spawn(initialmeteordelay) nometeors = 0 ..() diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 1848a8e6a0f..a2658d13c88 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -16,8 +16,6 @@ proc/issyndicate(mob/living/M as mob) uplink_uses = 120 var/const/agents_possible = 5 //If we ever need more syndicate agents. - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) var/nukes_left = 1 // Call 3714-PRAY right now and order more nukes! Limited offer! var/nuke_off_station = 0 //Used for tracking if the syndies actually haul the nuke to the station @@ -160,8 +158,6 @@ proc/issyndicate(mob/living/M as mob) var/obj/machinery/nuclearbomb/syndicate/the_bomb = new /obj/machinery/nuclearbomb/syndicate(nuke_spawn.loc) the_bomb.r_code = nuke_code - spawn (rand(waittime_l, waittime_h)) - send_intercept() return ..() /datum/game_mode/proc/create_syndicate(var/datum/mind/synd_mind) // So we don't have inferior species as ops - randomize a human diff --git a/code/game/gamemodes/revolution/anti_revolution.dm b/code/game/gamemodes/revolution/anti_revolution.dm deleted file mode 100644 index d656ccffc73..00000000000 --- a/code/game/gamemodes/revolution/anti_revolution.dm +++ /dev/null @@ -1,222 +0,0 @@ -// A sort of anti-revolution where the heads are given objectives to mess with the crew - -/datum/game_mode/anti_revolution - name = "anti-revolution" - config_tag = "anti-revolution" - required_players = 5 - - var/finished = 0 - var/checkwin_counter = 0 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - - var/required_execute_targets = 1 - var/required_brig_targets = 0 - - var/recommended_execute_targets = 1 - var/recommended_brig_targets = 3 - var/recommended_demote_targets = 3 - - var/list/datum/mind/heads = list() - var/list/datum/mind/execute_targets = list() - var/list/datum/mind/brig_targets = list() - var/list/datum/mind/demote_targets = list() - -/////////////////////////// -//Announces the game type// -/////////////////////////// -/datum/game_mode/anti_revolution/announce() - world << "The current game mode is - Anti-Revolution!" - world << "Looks like CentComm has given a few new orders.." - -/////////////////////////////////////////////////////////////////////////////// -//Gets the round setup, cancelling if there's not enough players at the start// -/////////////////////////////////////////////////////////////////////////////// -/datum/game_mode/anti_revolution/pre_setup() - for(var/mob/new_player/player in world) if(player.mind) - if(player.mind.assigned_role in command_positions) - heads += player.mind - else - if(execute_targets.len < recommended_execute_targets) - execute_targets += player.mind - else if(brig_targets.len < recommended_brig_targets) - brig_targets += player.mind - else if(demote_targets.len < recommended_demote_targets) - demote_targets += player.mind - - - if(heads.len==0) - return 0 - - if(execute_targets.len < required_execute_targets || brig_targets.len < required_brig_targets) - return 0 - - return 1 - - -/datum/game_mode/anti_revolution/proc/add_head_objectives(datum/mind/head) - for(var/datum/mind/target in execute_targets) - var/datum/objective/anti_revolution/execute/obj = new - obj.owner = head - obj.target = target - obj.explanation_text = "[target.current.real_name], the [target.assigned_role] has extracted confidential information above their clearance. Execute them." - head.objectives += obj - for(var/datum/mind/target in brig_targets) - var/datum/objective/anti_revolution/brig/obj = new - obj.owner = head - obj.target = target - obj.explanation_text = "Brig [target.current.real_name], the [target.assigned_role] for 20 minutes to set an example." - head.objectives += obj - for(var/datum/mind/target in demote_targets) - var/datum/objective/anti_revolution/demote/obj = new - obj.owner = head - obj.target = target - obj.explanation_text = "[target.current.real_name], the [target.assigned_role] has been classified as harmful to Nanotrasen's goals. Demote them to assistant." - head.objectives += obj - - -/datum/game_mode/anti_revolution/post_setup() - - for(var/datum/mind/head_mind in heads) - add_head_objectives(head_mind) - for(var/datum/mind/head_mind in heads) - greet_head(head_mind) - modePlayer += heads - spawn (rand(waittime_l, waittime_h)) - send_intercept() - ..() - - -/datum/game_mode/anti_revolution/process() - checkwin_counter++ - if(checkwin_counter >= 5) - if(!finished) - ticker.mode.check_win() - checkwin_counter = 0 - return 0 - - -/datum/game_mode/proc/greet_head(var/datum/mind/head_mind, var/you_are=1) - var/obj_count = 1 - if (you_are) - head_mind.current << "\blue It looks like this shift CentComm has some special orders for you.. check your objectives." - head_mind.current << "\blue Note that you can ignore these objectives, but resisting NT's orders probably means demotion or worse." - for(var/datum/objective/objective in head_mind.objectives) - head_mind.current << "Objective #[obj_count]: [objective.explanation_text]" - head_mind.special_role = "Corrupt Head" - obj_count++ - - head_mind.current.verbs += /mob/proc/ResignFromHeadPosition - -////////////////////////////////////// -//Checks if the revs have won or not// -////////////////////////////////////// -/datum/game_mode/anti_revolution/check_win() - if(check_head_victory()) - finished = 1 - else if(check_crew_victory()) - finished = 2 - return - -/////////////////////////////// -//Checks if the round is over// -/////////////////////////////// -/datum/game_mode/anti_revolution/check_finished() - if(finished != 0) - return 1 - else - return 0 - - -////////////////////////// -//Checks for crew victory// -////////////////////////// -/datum/game_mode/anti_revolution/proc/check_crew_victory() - for(var/datum/mind/head_mind in heads) - var/turf/T = get_turf(head_mind.current) - if((head_mind) && (head_mind.current) && (head_mind.current.stat != 2) && T && (T.z in config.station_levels) && !head_mind.is_brigged(600)) - if(ishuman(head_mind.current)) - return 0 - return 1 - -///////////////////////////// -//Checks for a head victory// -///////////////////////////// -/datum/game_mode/anti_revolution/proc/check_head_victory() - for(var/datum/mind/head_mind in heads) - for(var/datum/objective/objective in head_mind.objectives) - if(!(objective.check_completion())) - return 0 - - return 1 - - -/datum/game_mode/anti_revolution/declare_completion() - - var/text = "" - if(finished == 2) - world << "\red The heads of staff were relieved of their posts! The crew wins!" - else if(finished == 1) - world << "\red The heads of staff managed to meet the goals set for them by CentComm!" - - - - world << "The heads of staff were: " - var/list/heads = list() - heads = get_all_heads() - for(var/datum/mind/head_mind in heads) - text = "" - if(head_mind.current) - text += "[head_mind.current.real_name]" - if(head_mind.current.stat == 2) - text += " (Dead)" - else - text += " (Survived!)" - else - text += "[head_mind.key] (character destroyed)" - - world << text - - - world << "Their objectives were: " - for(var/datum/mind/head_mind in heads) - if(head_mind.objectives.len)//If the traitor had no objectives, don't need to process this. - var/count = 1 - for(var/datum/objective/objective in head_mind.objectives) - if(objective.check_completion()) - text += "
Objective #[count]: [objective.explanation_text] Success!" - feedback_add_details("head_objective","[objective.type]|SUCCESS") - else - text += "
Objective #[count]: [objective.explanation_text] Fail." - feedback_add_details("head_objective","[objective.type]|FAIL") - count++ - break // just print once - return 1 - - -/datum/game_mode/anti_revolution/latespawn(mob/living/carbon/human/character) - ..() - if(emergency_shuttle.departed) - return - - if(character.mind.assigned_role in command_positions) - heads += character.mind - modePlayer += character.mind - add_head_objectives(character.mind) - greet_head(character.mind) - -/mob/proc/ResignFromHeadPosition() - set category = "IC" - set name = "Resign From Head Position" - - if(!istype(ticker.mode, /datum/game_mode/anti_revolution)) - return - - ticker.mode:heads -= src.mind - src.mind.objectives = list() - ticker.mode.modePlayer -= src.mind - src.mind.special_role = null - - src.verbs -= /mob/proc/ResignFromHeadPosition - - src << "\red You resigned from your position, now you have the consequences." \ No newline at end of file diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 931032eac22..82ff00fdfea 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -29,8 +29,6 @@ var/finished = 0 var/checkwin_counter = 0 var/max_headrevs = 3 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) /////////////////////////// //Announces the game type// /////////////////////////// @@ -87,8 +85,6 @@ modePlayer += head_revolutionaries if(emergency_shuttle) emergency_shuttle.no_escape = 1 - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() diff --git a/code/game/gamemodes/revolution/rp-revolution.dm b/code/game/gamemodes/revolution/rp-revolution.dm deleted file mode 100644 index b0c58fd8c5f..00000000000 --- a/code/game/gamemodes/revolution/rp-revolution.dm +++ /dev/null @@ -1,307 +0,0 @@ -// To add a rev to the list of revolutionaries, make sure it's rev (with if(ticker.mode.name == "revolution)), -// then call ticker.mode:add_revolutionary(_THE_PLAYERS_MIND_) -// nothing else needs to be done, as that proc will check if they are a valid target. -// Just make sure the converter is a head before you call it! -// To remove a rev (from brainwashing or w/e), call ticker.mode:remove_revolutionary(_THE_PLAYERS_MIND_), -// this will also check they're not a head, so it can just be called freely -// If the rev icons start going wrong for some reason, ticker.mode:update_all_rev_icons() can be called to correct them. -// If the game somtimes isn't registering a win properly, then ticker.mode.check_win() isn't being called somewhere. -#define RPREV_REQUIRE_REVS_ALIVE 0 -#define RPREV_REQUIRE_HEADS_ALIVE 0 - -/datum/game_mode/rp_revolution - name = "rp-revolution" - config_tag = "rp-revolution" - - var/finished = 0 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/all_brigged = 0 - var/brigged_time = 0 - - uplink_welcome = "Syndicate Uplink Console:" - uplink_uses = 10 - - -/datum/game_mode/rp_revolution/announce() - world << "The current game mode is - Revolution RP!" - -/datum/game_mode/rp_revolution/send_intercept() - var/intercepttext = "Cent. Com. Update Requested staus information:
" - intercepttext += " Cent. Com has recently been contacted by the following syndicate affiliated organisations in your area, please investigate any information you may have:" - - var/list/possible_modes = list() - possible_modes.Add("revolution", "wizard", "traitor", "malf") - var/number = pick(2, 3) - var/i = 0 - for(i = 0, i < number, i++) - possible_modes.Remove(pick(possible_modes)) - possible_modes.Insert(rand(possible_modes.len), "nuke") - - var/datum/intercept_text/i_text = new /datum/intercept_text - for(var/A in possible_modes) - intercepttext += i_text.build(A, pick(head_revolutionaries)) - - for (var/obj/machinery/computer/communications/comm in world) - if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) - var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper - 'Cent. Com. Status Summary'" - intercept.info = intercepttext - - comm.messagetitle.Add("Cent. Com. Status Summary") - comm.messagetext.Add(intercepttext) - - command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") - -/datum/game_mode/rp_revolution/post_setup() - - var/list/revs_possible = list() - revs_possible = get_possible_revolutionaries() - var/list/heads = list() - heads = get_living_heads() - var/rev_number = 0 - - if(!revs_possible || !heads) - world << " \red Not enough players for RP revolution game mode. Restarting world in 5 seconds." - sleep(50) - world.Reboot() - return - - if(revs_possible.len >= 3) - rev_number = 3 - else - rev_number = revs_possible.len - - while(rev_number > 0) - head_revolutionaries += pick(revs_possible - head_revolutionaries) - rev_number-- - - for(var/datum/mind/rev_mind in head_revolutionaries) - for(var/datum/mind/head_mind in heads) - var/datum/objective/capture/rev_obj = new - rev_obj.owner = rev_mind - rev_obj.find_target_by_role(head_mind.assigned_role) - rev_mind.objectives += rev_obj - equip_revolutionary(rev_mind.current) - rev_mind.current.verbs += /mob/living/carbon/human/proc/RevConvert - update_rev_icons_added(rev_mind) - - for(var/datum/mind/rev_mind in head_revolutionaries) - var/obj_count = 1 - rev_mind.current << "\blue You are a member of the revolutionaries' leadership!" - for(var/datum/objective/objective in rev_mind.objectives) - rev_mind.current << "Objective #[obj_count]: [objective.explanation_text]" - obj_count++ - - spawn (rand(waittime_l, waittime_h)) - send_intercept() - -/datum/game_mode/rp_revolution/send_intercept() - var/intercepttext = "Cent. Com. Update Requested staus information:
" - intercepttext += " Cent. Com has recently been contacted by the following syndicate affiliated organisations in your area, please investigate any information you may have:" - - var/list/possible_modes = list() - possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf") - possible_modes -= "[ticker.mode]" - var/number = pick(2, 3) - var/i = 0 - for(i = 0, i < number, i++) - possible_modes.Remove(pick(possible_modes)) - possible_modes.Insert(rand(possible_modes.len), "[ticker.mode]") - - var/datum/intercept_text/i_text = new /datum/intercept_text - for(var/A in possible_modes) - intercepttext += i_text.build(A, pick(head_revolutionaries)) - - for (var/obj/machinery/computer/communications/comm in world) - if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) - var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper - 'Cent. Com. Status Summary'" - intercept.info = intercepttext - - comm.messagetitle.Add("Cent. Com. Status Summary") - comm.messagetext.Add(intercepttext) - - command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.") - - spawn(54000) - command_alert("Summary downloaded and printed out at all communications consoles.", "The revolution leaders have been determined.") - intercepttext = "Cent. Com. Update Requested status information:
" - intercepttext += "We have determined the revolution leaders to be:" - for(var/datum/mind/revmind in head_revolutionaries) - intercepttext += "
[revmind.current.real_name]" - intercepttext += "
Please arrest them at once." - for (var/obj/machinery/computer/communications/comm in world) - if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept) - var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc ) - intercept.name = "paper - 'Cent. Com. Status Summary'" - intercept.info = intercepttext - - comm.messagetitle.Add("Cent. Com. Status Summary") - comm.messagetext.Add(intercepttext) - spawn(12000) - command_alert("Repeating the previous message over intercoms due to urgency. The station has enemy operatives onboard by the names of [reveal_rev_heads()], please arrest them at once.", "The revolution leaders have been determined.") - - -/datum/game_mode/rp_revolution/proc/reveal_rev_heads() - . = "" - for(var/i = 1, i <= head_revolutionaries.len,i++) - var/datum/mind/revmind = head_revolutionaries[i] - if(i < head_revolutionaries.len) - . += "[revmind.current.real_name]," - else - . += "and [revmind.current.real_name]" - -///datum/game_mode/rp_revolution/proc/equip_revolutionary(mob/living/carbon/human/rev_mob) -// if(!istype(rev_mob)) -// return - -// spawn (100) -// if (rev_mob.r_store) -// rev_mob.equip_or_collect(new /obj/item/weapon/paper/communist_manifesto(rev_mob), rev_mob.slot_l_store) -// if (rev_mob.l_store) -// rev_mob.equip_or_collect(new /obj/item/weapon/paper/communist_manifesto(rev_mob), rev_mob.slot_r_store) - - -/datum/game_mode/rp_revolution/check_win() - if(check_rev_victory()) - finished = 1 - else if(check_heads_victory()) - finished = 2 - return - -/datum/game_mode/rp_revolution/check_finished() - if(finished != 0) - return 1 - else - return 0 - -/datum/game_mode/rp_revolution/proc/get_possible_revolutionaries() - var/list/candidates = list() - - for(var/mob/living/carbon/human/player in world) - if(player.client) - if(player.client.be_syndicate & BE_REV) - candidates += player.mind - - if(candidates.len < 1) - for(var/mob/living/carbon/human/player in world) - if(player.client) - candidates += player.mind - - var/list/uncons = get_unconvertables() - for(var/datum/mind/mind in uncons) - candidates -= mind - - if(candidates.len < 1) - return null - else - return candidates - -/datum/game_mode/rp_revolution/proc/get_unconvertables() - var/list/ucs = list() - for(var/mob/living/carbon/human/player in world) - if(player.mind) - var/role = player.mind.assigned_role - if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Security Officer", "Forensic Technician", "AI")) - ucs += player.mind - - return ucs - -/datum/game_mode/rp_revolution/proc/check_rev_victory() - for(var/datum/mind/rev_mind in head_revolutionaries) - for(var/datum/objective/objective in rev_mind.objectives) - if(!(objective.check_completion())) - return 0 - - return 1 - -/datum/game_mode/rp_revolution/proc/check_heads_victory() - for(var/datum/mind/rev_mind in head_revolutionaries) - if(rev_mind.current.stat != 2) - var/turf/revloc = rev_mind.current.loc - if(!istype(revloc.loc,/area/security/brig) && !rev_mind.current.handcuffed) - return 0 - else if(RPREV_REQUIRE_REVS_ALIVE) return 0 - return 1 - -/datum/game_mode/rp_revolution/declare_completion() - - var/text = "" - if(finished == 1) - world << "\red The heads of staff were relieved of their posts! The revolutionaries win!" - else if(finished == 2) - world << "\red The heads of staff managed to stop the revolution!" - - world << "The head revolutionaries were: " - for(var/datum/mind/rev_mind in head_revolutionaries) - text = "" - if(rev_mind.current) - text += "[rev_mind.current.real_name]" - if(rev_mind.current.stat == 2) - text += " (Dead)" - else - text += " (Survived!)" - else - text += "[rev_mind.key] (character destroyed)" - - world << text - - text = "" - world << "The converted revolutionaries were: " - for(var/datum/mind/rev_nh_mind in revolutionaries) - if(rev_nh_mind.current) - text += "[rev_nh_mind.current.real_name]" - if(rev_nh_mind.current.stat == 2) - text += " (Dead)" - else - text += " (Survived!)" - else - text += "[rev_nh_mind.key] (character destroyed)" - text += ", " - - world << text - - world << "The heads of staff were: " - var/list/heads = list() - heads = get_all_heads() - for(var/datum/mind/head_mind in heads) - text = "" - if(head_mind.current) - text += "[head_mind.current.real_name]" - if(head_mind.current.stat == 2) - text += " (Dead)" - else - text += " (Survived!)" - else - text += "[head_mind.key] (character destroyed)" - - world << text - return 1 - - - -mob/living/carbon/human/proc - RevConvert(mob/M as mob in oview(src)) - set name = "Rev-Convert" - if(((src.mind in ticker.mode:head_revolutionaries) || (src.mind in ticker.mode:revolutionaries))) - if((M.mind in ticker.mode:head_revolutionaries) || (M.mind in ticker.mode:revolutionaries)) - src << "\red [M] is already be a revolutionary!" - else if(src.mind in ticker.mode:get_unconvertables()) - src << "\red [M] cannot be a revolutionary!" - else - if(world.time < M.mind.rev_cooldown) - src << "\red Wait five seconds before reconversion attempt." - return - src << "\red Attempting to convert [M]..." - log_admin("[key_name(src)] attempted to convert [M].") - message_admins("\red [key_name_admin(src)] attempted to convert [M].") - var/choice = alert(M,"Asked by [src]: Do you want to join the revolution?","Align Thyself with the Revolution!","No!","Yes!") - if(choice == "Yes!") - ticker.mode:add_revolutionary(M.mind) - M << "\blue You join the revolution!" - src << "\blue [M] joins the revolution!" - else if(choice == "No!") - M << "\red You reject this traitorous cause!" - src << "\red [M] does not support the revolution!" - M.mind.rev_cooldown = world.time+50 diff --git a/code/game/gamemodes/revolution/rp_revolution.dm b/code/game/gamemodes/revolution/rp_revolution.dm index 2bd8e2100d1..8e7759233f4 100644 --- a/code/game/gamemodes/revolution/rp_revolution.dm +++ b/code/game/gamemodes/revolution/rp_revolution.dm @@ -69,8 +69,7 @@ rev_mind.current.verbs += /mob/living/carbon/human/proc/RevConvert modePlayer += head_revolutionaries - spawn (rand(waittime_l, waittime_h)) - send_intercept() + /datum/game_mode/revolution/rp_revolution/greet_revolutionary(var/datum/mind/rev_mind, var/you_are=1) var/obj_count = 1 diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 05d778c8b5a..4cdeec3edf0 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -70,9 +70,6 @@ Made by Xhuis restricted_jobs = list("AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent") - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - /datum/game_mode/shadowling/announce() world << "The current game mode is - Shadowling!" world << "There are alien shadowlings on the station. Crew: Kill the shadowlings before they can eat or enthrall the crew. Shadowlings: Enthrall the crew while remaining in hiding." @@ -109,10 +106,7 @@ Made by Xhuis finalize_shadowling(shadow) process_shadow_objectives(shadow) //give_shadowling_abilities(shadow) - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() - return /datum/game_mode/proc/greet_shadow(var/datum/mind/shadow) shadow.current << "Currently, you are disguised as an employee aboard [world.name]." diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 605b3e062e3..59b4f710c6a 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -20,9 +20,6 @@ uplink_welcome = "Syndicate Uplink Console:" uplink_uses = 20 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/traitors_possible = 4 //hard limit on traitors if scaling is turned off var/const/traitor_scaling_coeff = 5.0 //how much does the amount of players get divided by to determine traitors @@ -71,10 +68,7 @@ finalize_traitor(traitor) greet_traitor(traitor) modePlayer += traitors - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() - return 1 /datum/game_mode/proc/forge_traitor_objectives(var/datum/mind/traitor) diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index 13507d847cb..122e99e520f 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -35,9 +35,6 @@ var/const/prob_right_objective_l = 25 //lower bound on probability of determining the objective correctly var/const/prob_right_objective_h = 50 //upper bound on probability of determining the objective correctly - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/vampire_amount = 4 @@ -73,10 +70,7 @@ forge_vampire_objectives(vampire) greet_vampire(vampire) - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() - return /datum/game_mode/proc/auto_declare_completion_vampire() if(vampires.len) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 7924fcd1bf3..25cddf67b4f 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -14,9 +14,6 @@ var/finished = 0 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - /datum/game_mode/wizard/announce() world << "The current game mode is - Wizard!" world << "There is a \red SPACE WIZARD\black on the station. You can't let him achieve his objective!" @@ -56,10 +53,7 @@ name_wizard(wizard.current) greet_wizard(wizard) - spawn (rand(waittime_l, waittime_h)) - send_intercept() ..() - return /datum/game_mode/proc/forge_wizard_objectives(var/datum/mind/wizard) @@ -69,7 +63,7 @@ kill_objective.owner = wizard kill_objective.find_target() wizard.objectives += kill_objective - + var/datum/objective/steal/steal_objective = new steal_objective.owner = wizard steal_objective.find_target() @@ -111,7 +105,7 @@ steal_objective.owner = wizard steal_objective.find_target() wizard.objectives += steal_objective - + if (!(locate(/datum/objective/hijack) in wizard.objectives)) var/datum/objective/hijack/hijack_objective = new hijack_objective.owner = wizard @@ -184,7 +178,7 @@ wizard_mob.equip_to_slot_or_del(new /obj/item/weapon/spellbook(wizard_mob), slot_r_hand) wizard_mob.faction = list("wizard") - + wizard_mob.species.equip(wizard_mob) wizard_mob << "You will find a list of available spells in your spell book. Choose your magic arsenal carefully." diff --git a/code/game/gamemodes/xenos/xenos.dm b/code/game/gamemodes/xenos/xenos.dm index 91bdefd0639..7452bf21787 100644 --- a/code/game/gamemodes/xenos/xenos.dm +++ b/code/game/gamemodes/xenos/xenos.dm @@ -15,9 +15,6 @@ var/xenos_list = list() var/gammacalled = 0 - var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) - var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds) - var/gammaratio = 4 //At what alien to human ratio will the Gamma security level be called and the nuke be made available? /datum/game_mode/xenos/announce() @@ -97,9 +94,6 @@ //qdel(xeno_mind) spawnpos++ - spawn (rand(waittime_l, waittime_h)) - send_intercept() - return ..() /datum/game_mode/xenos/process() From 1b477db9049fa70824ccb6194020c14b83acebbf Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Mon, 16 Nov 2015 14:21:05 -0800 Subject: [PATCH 3/3] Global DatumRefLists cleanup x1 Changelog: - Switched surgeries to use init_subtypes() - Updated init_subtypes() - Made the species race_key handling a bit less line-taking (uses pre-increment now) - Added new proc, init_datum_subtypes, which takes 4 arguments- init_datum_subtypes(prototype, list/L, list/pexempt, assocvar) prototype is a path which will be run through subtypesof list/L is the list that new datums will be added to pexempt is subtracted from the 'subtypesof(prototype)' (exempting them) assocvar is the var to associate by in the list- uses vars[] lookup Jobs, superheroes, and languages now use this proc. --- code/__HELPERS/global_lists.dm | 55 ++++++++++++++-------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 00faf1864f9..3773d69f3a2 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -15,32 +15,12 @@ //socks init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list, socks_m, socks_f) - - - var/list/paths - //Surgery Steps - Initialize all /datum/surgery_step into a list - paths = subtypesof(/datum/surgery_step) - for(var/T in paths) - var/datum/surgery_step/S = new T - surgery_steps += S + init_subtypes(/datum/surgery_step, surgery_steps) sort_surgeries() - //List of job. I can't believe this was calculated multiple times per tick! - paths = subtypesof(/datum/job) -list(/datum/job/ai,/datum/job/cyborg) - for(var/T in paths) - var/datum/job/J = new T - joblist[J.title] = J - - paths = subtypesof(/datum/superheroes) - for(var/T in paths) - var/datum/superheroes/S = new T - all_superheroes[S.name] = S - - //Languages and species. - paths = subtypesof(/datum/language) - for(var/T in paths) - var/datum/language/L = new T - all_languages[L.name] = L + init_datum_subtypes(/datum/job, joblist, list(/datum/job/ai, /datum/job/cyborg), "title") + init_datum_subtypes(/datum/superheroes, all_superheroes, null, "name") + init_datum_subtypes(/datum/language, all_languages, null, "name") for (var/language_name in all_languages) var/datum/language/L = all_languages[language_name] @@ -49,19 +29,17 @@ language_keys[".[lowertext(L.key)]"] = L language_keys["#[lowertext(L.key)]"] = L + var/list/paths = subtypesof(/datum/species) var/rkey = 0 - paths = subtypesof(/datum/species) for(var/T in paths) - rkey++ var/datum/species/S = new T - S.race_key = rkey //Used in mob icon caching. + S.race_key = ++rkey //Used in mob icon caching. all_species[S.name] = S if(S.flags & IS_WHITELISTED) whitelisted_species += S.name init_subtypes(/datum/table_recipe, table_recipes) - return 1 /* // Uncomment to debug chemical reaction list. @@ -80,8 +58,19 @@ //creates every subtype of prototype (excluding prototype) and adds it to list L. //if no list/L is provided, one is created. /proc/init_subtypes(prototype, list/L) - if(!istype(L)) L = list() - for(var/path in typesof(prototype)) - if(path == prototype) continue - L += new path() - return L + if(!istype(L)) L = list() + for(var/path in subtypesof(prototype)) + L += new path() + return L + +/proc/init_datum_subtypes(prototype, list/L, list/pexempt, assocvar) + if(!istype(L)) L = list() + for(var/path in subtypesof(prototype) - pexempt) + var/datum/D = new path() + if(istype(D)) + var/assoc + if(D.vars["[assocvar]"]) //has the var + assoc = D.vars["[assocvar]"] //access value of var + if(assoc) //value gotten + L["[assoc]"] = D //put in association + return L \ No newline at end of file