CONflicts

This commit is contained in:
MMMiracles
2015-12-18 16:34:06 -05:00
43 changed files with 1555 additions and 1208 deletions
+14 -6
View File
@@ -132,9 +132,12 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
//okay, here's the good teleporting stuff
/obj/machinery/gateway/centerstation/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
if(!awaygate) return
if(!ready)
return
if(!active)
return
if(!awaygate || qdeleted(awaygate))
return
if(awaygate.calibrated)
M.loc = get_step(awaygate.loc, SOUTH)
@@ -154,6 +157,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
user << "\black The gate is already calibrated, there is no work for you to do here."
return
/////////////////////////////////////Away////////////////////////
@@ -232,8 +236,12 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
/obj/machinery/gateway/centeraway/Bumped(atom/movable/M as mob|obj)
if(!ready) return
if(!active) return
if(!ready)
return
if(!active)
return
if(!stationgate || qdeleted(stationgate))
return
if(istype(M, /mob/living/carbon))
for(var/obj/item/weapon/implant/exile/E in M)//Checking that there is an exile implant in the contents
if(E.imp_in == M)//Checking that it's actually implanted vs just in their pocket
@@ -251,4 +259,4 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
else
user << "<span class='boldnotice'>Recalibration successful!</span>: \black This gate's systems have been fine tuned. Travel to this gate will now be on target."
calibrated = 1
return
return
File diff suppressed because it is too large Load Diff
@@ -178,6 +178,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["chat_toggles"] >> chat_toggles
S["toggles"] >> toggles
S["ghost_form"] >> ghost_form
S["ghost_orbit"] >> ghost_orbit
S["preferred_map"] >> preferred_map
S["ignoring"] >> ignoring
@@ -194,6 +195,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot))
toggles = sanitize_integer(toggles, 0, 65535, initial(toggles))
ghost_form = sanitize_inlist(ghost_form, ghost_forms, initial(ghost_form))
ghost_orbit = sanitize_inlist(ghost_orbit, ghost_orbits, initial(ghost_orbit))
return 1
@@ -215,6 +217,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["toggles"] << toggles
S["chat_toggles"] << chat_toggles
S["ghost_form"] << ghost_form
S["ghost_orbit"] << ghost_orbit
S["preferred_map"] << preferred_map
S["ignoring"] << ignoring
+17 -1
View File
@@ -205,7 +205,7 @@
src.ambience_playing = 0
feedback_add_details("admin_verb", "SAmbi") //If you are copy-pasting this, I bet you read this comment expecting to see the same thing :^)
var/list/ghost_forms = list("ghost","ghostking","ghostian2","skeleghost","ghost_red","ghost_black", \
var/global/list/ghost_forms = list("ghost","ghostking","ghostian2","skeleghost","ghost_red","ghost_black", \
"ghost_blue","ghost_yellow","ghost_green","ghost_pink", \
"ghost_cyan","ghost_dblue","ghost_dred","ghost_dgreen", \
"ghost_dcyan","ghost_grey","ghost_dyellow","ghost_dpink", "ghost_purpleswirl","ghost_funkypurp","ghost_pinksherbert","ghost_blazeit",\
@@ -222,6 +222,22 @@ var/list/ghost_forms = list("ghost","ghostking","ghostian2","skeleghost","ghost_
if(istype(mob,/mob/dead/observer))
mob.icon_state = new_form
var/global/list/ghost_orbits = list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOST_ORBIT_SQUARE,GHOST_ORBIT_HEXAGON,GHOST_ORBIT_PENTAGON)
/client/verb/pick_ghost_orbit()
set name = "Choose Ghost Orbit"
set category = "Preferences"
set desc = "Choose your preferred ghostly orbit."
if(!is_content_unlocked())
return
var/new_orbit = input(src, "Thanks for supporting BYOND - Choose your ghostly orbit:","Thanks for supporting BYOND",null) as null|anything in ghost_orbits
if(new_orbit)
prefs.ghost_orbit = new_orbit
prefs.save_preferences()
if(istype(mob, /mob/dead/observer))
var/mob/dead/observer/O = mob
O.ghost_orbit = new_orbit
/client/verb/toggle_intent_style()
set name = "Toggle Intent Selection Style"
set category = "Preferences"
+7 -2
View File
@@ -105,7 +105,7 @@
/obj/item/clothing/head/rabbitears
name = "rabbit ears"
desc = "Wearing these makes you looks useless, and only good for your sex appeal."
desc = "Wearing these makes you look useless, and only good for your sex appeal."
icon_state = "bunny"
/obj/item/clothing/head/flatcap
@@ -240,4 +240,9 @@
/obj/item/clothing/head/rice_hat
name = "rice hat"
desc = "Welcome to the rice fields, motherfucker."
icon_state = "rice_hat"
icon_state = "rice_hat"
/obj/item/clothing/head/lizard
name = "lizardskin cloche hat"
desc = "How many lizards died to make this hat? Not enough."
icon_state = "lizard"
+14 -7
View File
@@ -200,10 +200,6 @@
return 0
/obj/item/clothing/suit/armor/reactive/stealth
name = "reactive stealth armor"
@@ -221,10 +217,21 @@
owner.alpha = initial(owner.alpha)
return 1
/obj/item/clothing/suit/armor/reactive/tesla
name = "reactive tesla armor"
/obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, attack_text)
if(!active)
return 0
if(prob(hit_reaction_chance))
owner.visible_message("<span class='danger'>The [src] blocks the [attack_text], sending out arcs of lightning!</span>")
for(var/mob/living/M in view(6, owner))
if(M == owner)
continue
owner.Beam(M,icon_state="purple_lightning",icon='icons/effects/effects.dmi',time=5)
M.adjustFireLoss(25)
playsound(M, 'sound/machines/defib_zap.ogg', 50, 1, -1)
return 1
//All of the armor below is mostly unused
+28
View File
@@ -81,6 +81,22 @@
parts = list(/obj/item/weapon/stock_parts/cell = 1)
category = CAT_WEAPON
/datum/table_recipe/tailclub
name = "Tail Club"
result = /obj/item/weapon/tailclub
reqs = list(/obj/item/organ/severedtail = 1,
/obj/item/stack/sheet/metal = 1)
time = 80
category = CAT_WEAPON
/datum/table_recipe/tailwhip
name = "Liz O' Nine Tails"
result = /obj/item/weapon/melee/chainofcommand/tailwhip
reqs = list(/obj/item/organ/severedtail = 1,
/obj/item/stack/cable_coil = 1)
time = 80
category = CAT_WEAPON
/datum/table_recipe/ed209
name = "ED209"
result = /mob/living/simple_animal/bot/ed209
@@ -261,3 +277,15 @@
/datum/reagent/water/holywater = 10)
parts = list(/obj/item/device/camera = 1)
category = CAT_MISC
/datum/table_recipe/lizardhat
name = "Lizard Cloche Hat"
result = /obj/item/clothing/head/lizard
time = 20
reqs = list(/obj/item/organ/severedtail = 1)
/datum/table_recipe/lizardhat_alternate
name = "Lizard Cloche Hat"
result = /obj/item/clothing/head/lizard
time = 20
reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1)
@@ -119,6 +119,11 @@
desc = "Vegan meat, on a stick."
bonus_reagents = list("nutriment" = 1)
/obj/item/weapon/reagent_containers/food/snacks/kebab/tail
name = "lizard-tail kebab"
desc = "Severed lizard tail on a stick."
bonus_reagents = list("nutriment" = 1, "vitamin" = 4)
/obj/item/weapon/reagent_containers/food/snacks/monkeycube
name = "monkey cube"
desc = "Just add water!"
@@ -29,6 +29,15 @@
result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tofu
category = CAT_FOOD
/datum/table_recipe/tailkebab
name = "Lizard tail kebab"
reqs = list(
/obj/item/stack/rods = 1,
/obj/item/organ/severedtail = 1
)
result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tail
category = CAT_FOOD
// see code/module/crafting/table.dm
////////////////////////////////////////////////FISH////////////////////////////////////////////////
+1
View File
@@ -8,6 +8,7 @@
icon_state = client.prefs.ghost_form
if (ghostimage)
ghostimage.icon_state = src.icon_state
ghost_orbit = client.prefs.ghost_orbit
updateghostimages()
+16 -1
View File
@@ -24,6 +24,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
var/seedarkness = 1
var/ghost_hud_enabled = 1 //did this ghost disable the on-screen HUD?
var/data_hud_seen = 0 //this should one of the defines in __DEFINES/hud.dm
var/ghost_orbit = GHOST_ORBIT_CIRCLE
/mob/dead/observer/New(mob/body)
sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
@@ -225,7 +226,21 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(orbiting != target)
src << "<span class='notice'>Now orbiting [target].</span>"
orbit(target,orbitsize,0)
var/rot_seg
switch(ghost_orbit)
if(GHOST_ORBIT_TRIANGLE)
rot_seg = 3
if(GHOST_ORBIT_SQUARE)
rot_seg = 4
if(GHOST_ORBIT_PENTAGON)
rot_seg = 5
if(GHOST_ORBIT_HEXAGON)
rot_seg = 6
else //Circular
rot_seg = 36 //360/10 bby, smooth enough aproximation of a circle
orbit(target,orbitsize, FALSE, 20, rot_seg)
/mob/dead/observer/orbit()
..()
+2
View File
@@ -9,6 +9,8 @@
density = 0
anchored = 1
invisibility = 60
burn_state = LAVA_PROOF
obj/effect/dummy/slaughter/relaymove(mob/user, direction)
if (!src.canmove || !direction) return
@@ -676,6 +676,8 @@
else
facial_hair_style = "Shaved"
hair_style = pick("Bedhead", "Bedhead 2", "Bedhead 3")
dna.species.mutant_bodyparts = dna.species.mutant_bodyparts_buffer.Copy()
dna.features = dna.features_buffer.Copy()
underwear = "Nude"
update_body()
update_hair()
@@ -42,6 +42,7 @@
var/say_mod = "says" // affects the speech message
var/list/default_features = list() // Default mutant bodyparts for this species. Don't forget to set one for every mutant bodypart you allow this species to have.
var/list/mutant_bodyparts = list() // Parts of the body that are diferent enough from the standard human model that they cause clipping with some equipment
var/list/mutant_bodyparts_buffer = list() // A copy of mutant_bodyparts() that allows cloned people to keep their snowflake bodyparts upon cloning, should they be changed
var/speedmod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster
var/armor = 0 // overall defense for the race... or less defense, if it's negative.
@@ -380,9 +381,9 @@
var/icon_string
if(S.gender_specific)
icon_string = "[id]_[g]_[bodypart]_[S.icon_state]_[layer]"
icon_string = "[g]_[bodypart]_[S.icon_state]_[layer]"
else
icon_string = "[id]_m_[bodypart]_[S.icon_state]_[layer]"
icon_string = "m_[bodypart]_[S.icon_state]_[layer]"
I = image("icon" = 'icons/mob/mutant_bodyparts.dmi', "icon_state" = icon_string, "layer" =- layer)
@@ -406,9 +407,9 @@
if(S.hasinner)
if(S.gender_specific)
icon_string = "[id]_[g]_[bodypart]inner_[S.icon_state]_[layer]"
icon_string = "[g]_[bodypart]inner_[S.icon_state]_[layer]"
else
icon_string = "[id]_m_[bodypart]inner_[S.icon_state]_[layer]"
icon_string = "m_[bodypart]inner_[S.icon_state]_[layer]"
I = image("icon" = 'icons/mob/mutant_bodyparts.dmi', "icon_state" = icon_string, "layer" =- layer)
@@ -8,12 +8,14 @@
melee_damage_lower = 5
melee_damage_upper = 5
a_intent = "harm"
attacktext = "gores"
maxHealth = 100
health = 100
speed = 0
faction = list("illusion")
var/life_span = INFINITY //how long until they despawn
var/mob/living/parent_mob
var/multiply_chance = 0 //if we multiply on hit
/mob/living/simple_animal/hostile/illusion/Life()
@@ -22,11 +24,15 @@
death()
/mob/living/simple_animal/hostile/illusion/proc/Copy_Parent(mob/living/original, life = 50)
/mob/living/simple_animal/hostile/illusion/proc/Copy_Parent(mob/living/original, life = 50, health = 100, damage = 0, replicate = 0 )
appearance = original.appearance
parent_mob = original
dir = original.dir
life_span = world.time+life //5 seconds
life_span = world.time+life
melee_damage_lower = damage
melee_damage_upper = damage
multiply_chance = replicate
faction -= "neutral"
/mob/living/simple_animal/hostile/illusion/death()
@@ -42,6 +48,17 @@
return ..()
/mob/living/simple_animal/hostile/illusion/AttackingTarget()
..()
if(istype(target, /mob/living) && prob(multiply_chance))
var/mob/living/L = target
if(L.stat == DEAD)
return
var/mob/living/simple_animal/hostile/illusion/M = new(loc)
M.faction = faction.Copy()
M.Copy_Parent(parent_mob, life_span, health/2, melee_damage_upper, multiply_chance)
M.GiveTarget(L)
///////Actual Types/////////
/mob/living/simple_animal/hostile/illusion/escape
@@ -26,6 +26,7 @@
var/last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing
var/last_warning
var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six
burn_state = LAVA_PROOF
/obj/singularity/New(loc, var/starting_energy = 50, var/temp = 0)
//CARN: admin-alert for chuckle-fuckery.
@@ -131,4 +131,26 @@
var/mob/living/carbon/human/H = target
H.drip(100)
return ..()
return ..()
//penetrator ammo
/obj/item/ammo_box/magazine/sniper_rounds/penetrator
name = "sniper rounds (penetrator)"
desc = "An extremely powerful round capable of passing straight through cover and anyone unfortunate enough to be behind it."
ammo_type = /obj/item/ammo_casing/penetrator
max_ammo = 5
/obj/item/ammo_casing/penetrator
desc = "A .50 caliber penetrator round casing."
caliber = ".50"
projectile_type = /obj/item/projectile/bullet/sniper/penetrator
icon_state = ".50"
/obj/item/projectile/bullet/sniper/penetrator
name = "penetrator round"
damage = 60
forcedodge = 1
stun = 0
weaken = 0
breakthings = FALSE
+1 -1
View File
@@ -5,7 +5,7 @@
//SURGERY STEPS
/datum/surgery_step/replace
name = "sever muscules"
name = "sever muscles"
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/wirecutters = 55)
time = 32
@@ -68,7 +68,12 @@
max_damage = 75
body_part = LEG_RIGHT
/obj/item/organ/severedtail
name = "tail"
desc = "A severed tail."
icon_state = "severedtail"
color = "#161"
var/markings = "Smooth"
//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all.
//Damage will not exceed max_damage using this proc
+73
View File
@@ -0,0 +1,73 @@
// The detachment and attachment of lizard tails
// Dismemberment lite; can/should be generalized aka augs when we get more mutant parts and/or for actual dismemberment
// TAIL REMOVAL
/datum/surgery/tail_removal
name = "tail removal"
steps = list(/datum/surgery_step/sever_tail, /datum/surgery_step/close)
species = list(/mob/living/carbon/human)
possible_locs = list("groin")
/datum/surgery/tail_removal/can_start(mob/user, mob/living/carbon/target)
var/mob/living/carbon/human/L = target
if(("tail_lizard" in L.dna.species.mutant_bodyparts) || ("waggingtail_lizard" in L.dna.species.mutant_bodyparts))
return 1
return 0
/datum/surgery_step/sever_tail
name = "sever tail"
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80, /obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 40, /obj/item/weapon/kitchen/knife/butcher = 25)
time = 64
/datum/surgery_step/sever_tail/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] begins to sever [target]'s tail!", "<span class='notice'>You begin to sever [target]'s tail...</span>")
/datum/surgery_step/sever_tail/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/mob/living/carbon/human/L = target
user.visible_message("[user] severs [L]'s tail!", "<span class='notice'>You sever [L]'s tail.</span>")
if("tail_lizard" in L.dna.species.mutant_bodyparts)
L.dna.species.mutant_bodyparts -= "tail_lizard"
else if("waggingtail_lizard" in L.dna.species.mutant_bodyparts)
L.dna.species.mutant_bodyparts -= "waggingtail_lizard"
if("spines" in L.dna.features)
L.dna.features -= "spines"
var/obj/item/organ/severedtail/S = new(get_turf(target))
S.color = "#[L.dna.features["mcolor"]]"
S.markings = "[L.dna.features["tail"]]"
L.update_body()
return 1
// TAIL ATTACHMENT
/datum/surgery/tail_attachment
name = "tail attachment"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/attach_tail, /datum/surgery_step/close)
species = list(/mob/living/carbon/human)
possible_locs = list("groin")
/datum/surgery/tail_attachment/can_start(mob/user, mob/living/carbon/target)
var/mob/living/carbon/human/L = target
if(!("tail_lizard" in L.dna.species.mutant_bodyparts) && !("waggingtail_lizard" in L.dna.species.mutant_bodyparts))
return 1
return 0
/datum/surgery_step/attach_tail
name = "attach tail"
implements = list(/obj/item/organ/severedtail = 100)
time = 64
/datum/surgery_step/attach_tail/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] begins to attach a tail to [target]!", "<span class='notice'>You begin to attach the tail to [target]...</span>")
/datum/surgery_step/attach_tail/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/mob/living/carbon/human/L = target
user.visible_message("[user] gives [L] a tail!", "<span class='notice'>You give [L] a tail. It adjusts to [L]'s melanin.</span>") // fluff for color
if(!(L.dna.features["mcolor"]))
L.dna.features["mcolor"] = tool.color
var/obj/item/organ/severedtail/T = tool
L.dna.features["tail_lizard"] = T.markings
L.dna.species.mutant_bodyparts += "tail_lizard"
qdel(tool)
L.update_body()
return 1