mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge branch 'master' into surgery
Conflicts: code/datums/organs/organ_external.dm
This commit is contained in:
+1
-1
@@ -237,6 +237,7 @@
|
||||
#define FILE_DIR "icons/mecha"
|
||||
#define FILE_DIR "icons/misc"
|
||||
#define FILE_DIR "icons/mob"
|
||||
#define FILE_DIR "icons/mob/human_races"
|
||||
#define FILE_DIR "icons/obj"
|
||||
#define FILE_DIR "icons/obj/assemblies"
|
||||
#define FILE_DIR "icons/obj/atmospherics"
|
||||
@@ -252,7 +253,6 @@
|
||||
#define FILE_DIR "icons/vending_icons"
|
||||
#define FILE_DIR "interface"
|
||||
#define FILE_DIR "maps"
|
||||
#define FILE_DIR "maps/backup"
|
||||
#define FILE_DIR "maps/RandomZLevels"
|
||||
#define FILE_DIR "sound"
|
||||
#define FILE_DIR "sound/AI"
|
||||
|
||||
@@ -326,6 +326,9 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
/datum/surgery_step/fix_vein
|
||||
required_tool = /obj/item/weapon/FixOVein
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
|
||||
can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
|
||||
@@ -888,7 +891,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
target.cores--
|
||||
user.visible_message("\blue [user] cuts out one of [target]'s cores with \the [tool].",, \
|
||||
"\blue You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.")
|
||||
new/obj/item/metroid_core(target.loc)
|
||||
if(target.cores >= 0)
|
||||
new/obj/item/metroid_core(target.loc)
|
||||
if(target.cores <= 0)
|
||||
target.icon_state = "baby roro dead-nocore"
|
||||
|
||||
@@ -992,6 +996,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
"\blue You have finished adjusting the area around [target]'s [affected.display_name] with \the [tool].")
|
||||
affected.status |= ORGAN_ATTACHABLE
|
||||
affected.amputated = 1
|
||||
affected.setAmputatedTree()
|
||||
affected.open = 0
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
@@ -1124,8 +1129,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
target.custom_pain("Something hurts horribly in your chest!",1)
|
||||
|
||||
end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/msg = "[user] bends [target]'s ribcage back into place with \the [tool]."
|
||||
var/self_msg = "You bends [target]'s ribcage back into place with \the [tool]."
|
||||
var/msg = "\blue [user] bends [target]'s ribcage back into place with \the [tool]."
|
||||
var/self_msg = "\blue You bend [target]'s ribcage back into place with \the [tool]."
|
||||
user.visible_message(msg, self_msg)
|
||||
|
||||
target.ribcage_op_stage = 1
|
||||
@@ -1147,8 +1152,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
|
||||
end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/msg = "[user] applied \the [tool] to [target]'s ribcage."
|
||||
var/self_msg = "You applied \the [tool] to [target]'s ribcage."
|
||||
var/msg = "\blue [user] applied \the [tool] to [target]'s ribcage."
|
||||
var/self_msg = "\blue You applied \the [tool] to [target]'s ribcage."
|
||||
user.visible_message(msg, self_msg)
|
||||
|
||||
target.ribcage_op_stage = 0
|
||||
@@ -1202,8 +1207,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/chest/affected = target.get_organ("chest")
|
||||
user.visible_message("[user] mends the rupture in [target]'s lungs with \the [tool].", \
|
||||
"You mend the rupture in [target]'s lungs with \the [tool]." )
|
||||
user.visible_message("\blue [user] mends the rupture in [target]'s lungs with \the [tool].", \
|
||||
"\blue You mend the rupture in [target]'s lungs with \the [tool]." )
|
||||
affected.ruptured_lungs = 0
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
|
||||
@@ -165,5 +165,5 @@
|
||||
if(beaker)
|
||||
if(!beaker.reagents.remove_reagent("virusfood",5))
|
||||
foodsupply += 10
|
||||
if(!beaker.reagents.remove_reagent("toxins",1))
|
||||
if(!beaker.reagents.remove_reagent("toxin",1))
|
||||
toxins += 1
|
||||
@@ -277,6 +277,11 @@ datum
|
||||
|
||||
proc/ConsiderRebuild(var/turf/simulated/T, var/turf/NT)
|
||||
|
||||
if(!istype(T)) return
|
||||
//zones should naturally spread to these tiles eventually
|
||||
if(!T.zone || !NT.zone)
|
||||
return
|
||||
|
||||
if(istype(NT, /turf/simulated) && NT.zone != T.zone)
|
||||
T.zone.RemoveTurf(NT)
|
||||
if(NT.zone)
|
||||
|
||||
+18
-16
@@ -111,29 +111,31 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
var/g = "m"
|
||||
if (H.gender == FEMALE)
|
||||
g = "f"
|
||||
|
||||
var/icon/icobase
|
||||
switch(H.get_species())
|
||||
if("Tajaran")
|
||||
preview_icon = new /icon('icons/effects/species.dmi', "tajaran_[g]_s")
|
||||
preview_icon.Blend(new /icon('icons/effects/species.dmi', "tajtail_s"), ICON_OVERLAY)
|
||||
icobase = 'icons/mob/human_races/r_tajaran.dmi'
|
||||
if( "Soghun")
|
||||
preview_icon = new /icon('icons/effects/species.dmi', "lizard_[g]_s")
|
||||
preview_icon.Blend(new /icon('icons/effects/species.dmi', "sogtail_s"), ICON_OVERLAY)
|
||||
icobase = 'icons/mob/human_races/r_lizard.dmi'
|
||||
if("Skrell")
|
||||
preview_icon = new /icon('icons/effects/species.dmi', "skrell_[g]_s")
|
||||
icobase = 'icons/mob/human_races/r_skrell.dmi'
|
||||
else
|
||||
preview_icon = new /icon('human.dmi', "torso_[g]_s")
|
||||
preview_icon.Blend(new /icon('human.dmi', "chest_[g]_s"), ICON_OVERLAY)
|
||||
preview_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY)
|
||||
preview_icon.Blend(new /icon('human.dmi', "head_[g]_s"), ICON_OVERLAY)
|
||||
icobase = 'icons/mob/human_races/r_human.dmi'
|
||||
|
||||
for(var/datum/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_CUT_AWAY) continue
|
||||
preview_icon = new /icon(icobase, "torso_[g]")
|
||||
var/icon/temp
|
||||
temp = new /icon(icobase, "groin_[g]")
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
temp = new /icon(icobase, "head_[g]")
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
|
||||
var/icon/temp = new /icon('human.dmi', "[E.name]_s")
|
||||
if(E.status & ORGAN_ROBOT)
|
||||
temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
|
||||
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
for(var/datum/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_CUT_AWAY || E.status & ORGAN_DESTROYED) continue
|
||||
temp = new /icon(icobase, "[E.name]")
|
||||
if(E.status & ORGAN_ROBOT)
|
||||
temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
|
||||
// Skin tone
|
||||
if(H.get_species() == "Human")
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
name = "external"
|
||||
var/icon_name = null
|
||||
var/body_part = null
|
||||
var/icon_position = 0
|
||||
|
||||
var/damage_state = "00"
|
||||
var/brute_dam = 0
|
||||
@@ -63,8 +64,7 @@
|
||||
var/nux = brute * rand(10,15)
|
||||
if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier)
|
||||
if(prob(5 * brute))
|
||||
status |= ORGAN_DESTROYED
|
||||
droplimb()
|
||||
droplimb(1)
|
||||
return
|
||||
|
||||
else if(prob(nux))
|
||||
@@ -75,8 +75,7 @@
|
||||
else if(brute > 20)
|
||||
if(config.limbs_can_break && brute_dam >= max_damage * config.organ_health_multiplier)
|
||||
if(prob(5 * brute))
|
||||
status |= ORGAN_DESTROYED
|
||||
droplimb()
|
||||
droplimb(1)
|
||||
return
|
||||
|
||||
// If the limbs can break, make sure we don't exceed the maximum damage a limb can take before breaking
|
||||
@@ -189,7 +188,7 @@
|
||||
if(W.internal && !W.is_treated())
|
||||
// internal wounds get worse over time
|
||||
W.open_wound(0.1 * wound_update_accuracy)
|
||||
owner.vessel.remove_reagent("blood",0.2 * W.damage * wound_update_accuracy)
|
||||
owner.vessel.remove_reagent("blood",0.07 * W.damage * wound_update_accuracy)
|
||||
|
||||
if(W.bandaged || W.salved)
|
||||
// slow healing
|
||||
@@ -319,10 +318,19 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
proc/setAmputatedTree()
|
||||
for(var/datum/organ/external/O in children)
|
||||
O.amputated=amputated
|
||||
O.setAmputatedTree()
|
||||
|
||||
proc/droplimb(var/override = 0,var/no_explode = 0)
|
||||
if(destspawn) return
|
||||
if(override)
|
||||
status |= ORGAN_DESTROYED
|
||||
if(status & ORGAN_DESTROYED)
|
||||
if(body_part == UPPER_TORSO)
|
||||
return
|
||||
|
||||
if(status & ORGAN_SPLINTED)
|
||||
status &= ~ORGAN_SPLINTED
|
||||
if(implant)
|
||||
@@ -337,8 +345,8 @@
|
||||
|
||||
var/obj/item/weapon/organ/H
|
||||
switch(body_part)
|
||||
// if(UPPER_TORSO) just no.
|
||||
// owner.gib()
|
||||
// if(UPPER_TORSO)
|
||||
// owner.gib()
|
||||
if(LOWER_TORSO)
|
||||
owner << "\red You are now sterile."
|
||||
if(HEAD)
|
||||
@@ -396,8 +404,25 @@
|
||||
if(ismonkey(owner))
|
||||
H.icon_state = "l_foot_l"
|
||||
owner.u_equip(owner.shoes)
|
||||
if(ismonkey(owner))
|
||||
H.icon = 'monkey.dmi'
|
||||
if(H)
|
||||
if(ismonkey(owner))
|
||||
H.icon = 'monkey.dmi'
|
||||
else if(ishuman(owner) && owner.dna)
|
||||
var/icon/I
|
||||
switch(owner.dna.mutantrace)
|
||||
if("tajaran")
|
||||
I = new('icons/mob/human_races/r_tajaran.dmi')
|
||||
if("lizard")
|
||||
I = new('icons/mob/human_races/r_lizard.dmi')
|
||||
if("skrell")
|
||||
I = new('icons/mob/human_races/r_skrell.dmi')
|
||||
else
|
||||
I = new('icons/mob/human_races/r_human.dmi')
|
||||
if(I)
|
||||
H.icon = I.MakeLying()
|
||||
else
|
||||
H.icon_state = initial(H.icon_state)+"_l"
|
||||
|
||||
var/lol = pick(cardinal)
|
||||
step(H,lol)
|
||||
destspawn = 1
|
||||
@@ -573,6 +598,7 @@
|
||||
max_damage = 75
|
||||
min_broken_damage = 30
|
||||
body_part = LEG_LEFT
|
||||
icon_position = LEFT
|
||||
|
||||
/datum/organ/external/r_arm
|
||||
name = "r_arm"
|
||||
@@ -589,6 +615,7 @@
|
||||
max_damage = 75
|
||||
min_broken_damage = 30
|
||||
body_part = LEG_RIGHT
|
||||
icon_position = RIGHT
|
||||
|
||||
/datum/organ/external/l_foot
|
||||
name = "l_foot"
|
||||
@@ -597,6 +624,7 @@
|
||||
max_damage = 40
|
||||
min_broken_damage = 15
|
||||
body_part = FOOT_LEFT
|
||||
icon_position = LEFT
|
||||
|
||||
/datum/organ/external/r_foot
|
||||
name = "r_foot"
|
||||
@@ -605,6 +633,7 @@
|
||||
max_damage = 40
|
||||
min_broken_damage = 15
|
||||
body_part = FOOT_RIGHT
|
||||
icon_position = RIGHT
|
||||
|
||||
/datum/organ/external/r_hand
|
||||
name = "r_hand"
|
||||
@@ -627,7 +656,7 @@
|
||||
****************************************************/
|
||||
|
||||
obj/item/weapon/organ
|
||||
icon = 'human.dmi'
|
||||
icon = 'icons/mob/human_races/r_human.dmi'
|
||||
|
||||
obj/item/weapon/organ/New(loc, mob/living/carbon/human/H)
|
||||
..(loc)
|
||||
@@ -718,25 +747,25 @@ obj/item/weapon/organ/head/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
obj/item/weapon/organ/l_arm
|
||||
name = "left arm"
|
||||
icon_state = "l_arm_l"
|
||||
icon_state = "l_arm"
|
||||
obj/item/weapon/organ/l_foot
|
||||
name = "left foot"
|
||||
icon_state = "l_foot_l"
|
||||
icon_state = "l_foot"
|
||||
obj/item/weapon/organ/l_hand
|
||||
name = "left hand"
|
||||
icon_state = "l_hand_l"
|
||||
icon_state = "l_hand"
|
||||
obj/item/weapon/organ/l_leg
|
||||
name = "left leg"
|
||||
icon_state = "l_leg_l"
|
||||
icon_state = "l_leg"
|
||||
obj/item/weapon/organ/r_arm
|
||||
name = "right arm"
|
||||
icon_state = "r_arm_l"
|
||||
icon_state = "r_arm"
|
||||
obj/item/weapon/organ/r_foot
|
||||
name = "right foot"
|
||||
icon_state = "r_foot_l"
|
||||
icon_state = "r_foot"
|
||||
obj/item/weapon/organ/r_hand
|
||||
name = "right hand"
|
||||
icon_state = "r_hand_l"
|
||||
icon_state = "r_hand"
|
||||
obj/item/weapon/organ/r_leg
|
||||
name = "right leg"
|
||||
icon_state = "r_leg_l"
|
||||
icon_state = "r_leg"
|
||||
|
||||
@@ -7,6 +7,16 @@
|
||||
#define TO_HEX_DIGIT(n) ascii2text((n&15) + ((n&15)<10 ? 48 : 87))
|
||||
|
||||
icon
|
||||
proc/MakeLying()
|
||||
var/icon/I = new(src,dir=SOUTH)
|
||||
I.BecomeLying()
|
||||
return I
|
||||
|
||||
proc/BecomeLying()
|
||||
Turn(90)
|
||||
Shift(SOUTH,6)
|
||||
Shift(EAST,1)
|
||||
|
||||
// Multiply all alpha values by this float
|
||||
proc/ChangeOpacity(opacity = 1.0)
|
||||
MapColors(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,opacity, 0,0,0,0)
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
D.open()
|
||||
for (var/mob/living/silicon/ai/aiPlayer in player_list)
|
||||
aiPlayer.cancelAlarm("Fire", src, src)
|
||||
for (var/obj/machinery/computer/station_alert/a in player_list)
|
||||
for (var/obj/machinery/computer/station_alert/a in world)
|
||||
a.cancelAlarm("Fire", src, src)
|
||||
return
|
||||
|
||||
|
||||
+16
-7
@@ -116,9 +116,10 @@
|
||||
uni_identity = temp
|
||||
|
||||
var/mutstring = ""
|
||||
for(var/i = 1, i <= 13, i++)
|
||||
for(var/i = 1, i <= STRUCDNASIZE, i++)
|
||||
mutstring += add_zero2(num2hex(rand(1,1024)),3)
|
||||
|
||||
|
||||
struc_enzymes = mutstring
|
||||
|
||||
unique_enzymes = md5(character.real_name)
|
||||
@@ -399,9 +400,17 @@
|
||||
var/old_mutations = M.mutations
|
||||
M.mutations = list()
|
||||
|
||||
M.see_in_dark = 2
|
||||
M.see_invisible = 0
|
||||
// M.see_in_dark = 2
|
||||
// M.see_invisible = 0
|
||||
|
||||
if(PLANT in old_mutations)
|
||||
M.mutations.Add(PLANT)
|
||||
if(SKELETON in old_mutations)
|
||||
M.mutations.Add(SKELETON)
|
||||
if(FAT in old_mutations)
|
||||
M.mutations.Add(FAT)
|
||||
if(HUSK in old_mutations)
|
||||
M.mutations.Add(HUSK)
|
||||
|
||||
if(ismuton(NOBREATHBLOCK,M))
|
||||
if(probinj(45,inj) || (mNobreath in old_mutations))
|
||||
@@ -478,9 +487,9 @@
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, XRAYBLOCK,3),XRAYBLOCK))
|
||||
if(probinj(30,inj) || (XRAY in old_mutations))
|
||||
M << "\blue The walls suddenly disappear."
|
||||
M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||
M.see_in_dark = 8
|
||||
M.see_invisible = 2
|
||||
// M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
|
||||
// M.see_in_dark = 8
|
||||
// M.see_invisible = 2
|
||||
M.mutations.Add(XRAY)
|
||||
if (isblockon(getblock(M.dna.struc_enzymes, NERVOUSBLOCK,3),NERVOUSBLOCK))
|
||||
M.disabilities |= NERVOUS
|
||||
@@ -1648,4 +1657,4 @@
|
||||
src.add_fingerprint(usr)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
/////////////////////////// DNA MACHINES
|
||||
/////////////////////////// DNA MACHINES
|
||||
|
||||
@@ -300,7 +300,8 @@ var/global/datum/controller/gameticker/ticker
|
||||
|
||||
emergency_shuttle.process()
|
||||
|
||||
if(!mode.explosion_in_progress && mode.check_finished())
|
||||
var/mode_finished = mode.check_finished() || (emergency_shuttle.location == 2 && emergency_shuttle.alert == 1)
|
||||
if(!mode.explosion_in_progress && mode_finished)
|
||||
current_state = GAME_STATE_FINISHED
|
||||
|
||||
spawn
|
||||
|
||||
@@ -499,7 +499,7 @@
|
||||
// hack for alt titles
|
||||
if(istype(loc, /mob))
|
||||
var/mob/M = loc
|
||||
if(M.mind.role_alt_title == jobName && M.mind.assigned_role in get_all_jobs())
|
||||
if(M.mind && M.mind.role_alt_title == jobName && M.mind.assigned_role in get_all_jobs())
|
||||
return M.mind.assigned_role
|
||||
|
||||
if(istype(src, /obj/item/device/pda))
|
||||
|
||||
@@ -235,6 +235,9 @@
|
||||
else
|
||||
dat += text("[]\tHealth %: [] ([])</FONT><BR>", (occupant.health > 50 ? "<font color='blue'>" : "<font color='red'>"), occupant.health, t1)
|
||||
|
||||
if(occupant.virus2)
|
||||
dat += text("<font color='red'>Viral pathogen detected in blood stream.</font><BR>")
|
||||
|
||||
dat += text("[]\t-Brute Damage %: []</FONT><BR>", (occupant.getBruteLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getBruteLoss())
|
||||
dat += text("[]\t-Respiratory Damage %: []</FONT><BR>", (occupant.getOxyLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getOxyLoss())
|
||||
dat += text("[]\t-Toxin Content %: []</FONT><BR>", (occupant.getToxLoss() < 60 ? "<font color='blue'>" : "<font color='red'>"), occupant.getToxLoss())
|
||||
|
||||
@@ -820,14 +820,14 @@ Auto Patrol: []"},
|
||||
projectile = /obj/item/projectile/energy/electrode
|
||||
else if(lasercolor == "b")
|
||||
if (src.emagged == 2)
|
||||
projectile = /obj/item/projectile/beam/omnitag
|
||||
projectile = /obj/item/projectile/beam/lastertag/omni
|
||||
else
|
||||
projectile = /obj/item/projectile/beam/bluetag
|
||||
projectile = /obj/item/projectile/beam/lastertag/blue
|
||||
else if(lasercolor == "r")
|
||||
if (src.emagged == 2)
|
||||
projectile = /obj/item/projectile/beam/omnitag
|
||||
projectile = /obj/item/projectile/beam/lastertag/omni
|
||||
else
|
||||
projectile = /obj/item/projectile/beam/redtag
|
||||
projectile = /obj/item/projectile/beam/lastertag/red
|
||||
|
||||
if (!( istype(U, /turf) ))
|
||||
return
|
||||
@@ -1011,7 +1011,7 @@ Auto Patrol: []"},
|
||||
|
||||
/obj/machinery/bot/ed209/bullet_act(var/obj/item/projectile/Proj)
|
||||
if((src.lasercolor == "b") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/beam/redtag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/lastertag/red))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
@@ -1019,7 +1019,7 @@ Auto Patrol: []"},
|
||||
else
|
||||
..()
|
||||
else if((src.lasercolor == "r") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/beam/bluetag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/lastertag/blue))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
return 0
|
||||
|
||||
|
||||
src.heal_level = rand(75,100) //Randomizes what health the clone is when ejected
|
||||
src.heal_level = rand(0,40) //Randomizes what health the clone is when ejected
|
||||
|
||||
src.attempting = 1 //One at a time!!
|
||||
src.locked = 1
|
||||
|
||||
@@ -941,8 +941,9 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(se)
|
||||
podman.dna.struc_enzymes = se
|
||||
if(!prob(potency)) //if it fails, plantman!
|
||||
if(podman.dna)
|
||||
podman.dna.mutantrace = "plant"
|
||||
if(podman)
|
||||
// podman.dna.mutantrace = "plant"
|
||||
podman.mutations.Add(PLANT)
|
||||
podman.update_mutantrace()
|
||||
|
||||
else //else, one packet of seeds. maybe two
|
||||
|
||||
@@ -76,8 +76,8 @@
|
||||
// All energy-based weapons are applicable
|
||||
switch(E.type)
|
||||
if(/obj/item/weapon/gun/energy/laser/bluetag)
|
||||
projectile = /obj/item/projectile/beam/bluetag
|
||||
eprojectile = /obj/item/projectile/beam/omnitag//This bolt will stun ERRYONE with a vest
|
||||
projectile = /obj/item/projectile/beam/lastertag/blue
|
||||
eprojectile = /obj/item/projectile/beam/lastertag/omni//This bolt will stun ERRYONE with a vest
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "b"
|
||||
@@ -90,8 +90,8 @@
|
||||
shot_delay = 30
|
||||
|
||||
if(/obj/item/weapon/gun/energy/laser/redtag)
|
||||
projectile = /obj/item/projectile/beam/redtag
|
||||
eprojectile = /obj/item/projectile/beam/omnitag
|
||||
projectile = /obj/item/projectile/beam/lastertag/red
|
||||
eprojectile = /obj/item/projectile/beam/lastertag/omni
|
||||
iconholder = null
|
||||
reqpower = 100
|
||||
lasercolor = "r"
|
||||
@@ -375,13 +375,13 @@ Status: []<BR>"},
|
||||
if (src.health <= 0)
|
||||
src.die() // the death process :(
|
||||
if((src.lasercolor == "b") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/beam/redtag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/lastertag/red))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
src.disabled = 0
|
||||
if((src.lasercolor == "r") && (src.disabled == 0))
|
||||
if(istype(Proj, /obj/item/projectile/beam/bluetag))
|
||||
if(istype(Proj, /obj/item/projectile/beam/lastertag/blue))
|
||||
src.disabled = 1
|
||||
del (Proj)
|
||||
sleep(100)
|
||||
|
||||
@@ -221,9 +221,9 @@
|
||||
if(4)
|
||||
A = new /obj/item/projectile/change( loc )
|
||||
if(5)
|
||||
A = new /obj/item/projectile/beam/bluetag( loc )
|
||||
A = new /obj/item/projectile/beam/lastertag/blue( loc )
|
||||
if(6)
|
||||
A = new /obj/item/projectile/beam/redtag( loc )
|
||||
A = new /obj/item/projectile/beam/lastertag/red( loc )
|
||||
A.original = target.loc
|
||||
use_power(500)
|
||||
else
|
||||
|
||||
@@ -158,6 +158,10 @@ MASS SPECTROMETER
|
||||
if(e.status & ORGAN_BROKEN)
|
||||
user.show_message(text("\red Bone fractures detected. Advanced scanner required for location."), 1)
|
||||
break
|
||||
for(var/datum/organ/external/e in H.organs)
|
||||
for(var/datum/wound/W in e.wounds) if(W.internal)
|
||||
user.show_message(text("\red Internal bleeding detected. Advanced scanner required for location."), 1)
|
||||
break
|
||||
if(M:vessel)
|
||||
var/blood_volume = round(M:vessel.get_reagent_amount("blood"))
|
||||
var/blood_percent = blood_volume / 560
|
||||
|
||||
@@ -124,8 +124,8 @@
|
||||
usr << "<span class='notice'>You can't clear the memory while playing or recording!</span>"
|
||||
return
|
||||
else
|
||||
storedinfo -= storedinfo
|
||||
timestamp -= timestamp
|
||||
if(storedinfo) storedinfo.Cut()
|
||||
if(timestamp) timestamp.Cut()
|
||||
timerecorded = 0
|
||||
usr << "<span class='notice'>Memory cleared.</span>"
|
||||
return
|
||||
|
||||
@@ -86,13 +86,12 @@
|
||||
else
|
||||
H.Stun(time)
|
||||
if(H.stat != 2) H.stat = 1
|
||||
for(var/mob/O in viewers(H, null))
|
||||
O.show_message(text("\red <B>[] has been knocked unconscious!</B>", H), 1, "\red You hear someone fall.", 2)
|
||||
user.visible_message("\red <B>[H] has been knocked unconscious!</B>", "\red <B>You knock [H] unconscious!</B>")
|
||||
return
|
||||
else
|
||||
H << text("\red [] tried to knock you unconscious!",user)
|
||||
H.visible_message("\red [user] tried to knock [H] unconscious!", "\red [user] tried to knock you unconscious!")
|
||||
H.eye_blurry += 3
|
||||
|
||||
return
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Trays - Agouri
|
||||
|
||||
@@ -589,7 +589,7 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe width='100%' height='97%' src="http://nanotrasen.com/wiki/index.php?title=Space_Law&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
|
||||
<iframe width='100%' height='97%' src="http://baystation12.net/wiki/index.php?title=Space_law&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -607,7 +607,7 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<iframe width='100%' height='97%' src="http://nanotrasen.com/wiki/index.php?title=Guide_to_engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
|
||||
<iframe width='100%' height='97%' src="http://baystation12.net/wiki/index.php?title=Guide_to_engineering&printable=yes&remove_links=1" frameborder="0" id="main_frame"></iframe>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
+11
-1
@@ -19,7 +19,7 @@
|
||||
|
||||
if (vary)
|
||||
S.frequency = rand(32000, 55000)
|
||||
for (var/mob/M in range(world.view+extrarange, source)) // Plays for people in range.
|
||||
for (var/mob/M in range(world.view+extrarange, source)) // Plays for people in range.
|
||||
if(locate(/mob/, M))
|
||||
var/mob/M2 = locate(/mob/, M)
|
||||
if (M2.client)
|
||||
@@ -48,6 +48,16 @@
|
||||
S.pan = max(-100, min(100, dx/8.0 * 100))
|
||||
|
||||
M << S
|
||||
|
||||
for(var/obj/mecha/mech in range(world.view+extrarange, source))
|
||||
var/mob/M = mech.occupant
|
||||
if (M && M.client)
|
||||
if(M.ear_deaf <= 0 || !M.ear_deaf)
|
||||
if(isturf(source))
|
||||
var/dx = source.x - M.x
|
||||
S.pan = max(-100, min(100, dx/8.0 * 100))
|
||||
|
||||
M << S
|
||||
// Now plays for people in lockers! -- Polymorph
|
||||
|
||||
/mob/proc/playsound_local(var/atom/source, soundin, vol as num, vary, extrarange as num)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
for (var/client/C in admin_list)
|
||||
if (src.holder.rank == "Admin Observer")
|
||||
C << "<span class='adminobserver'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]:</EM> <span class='message'>[msg]</span></span>"
|
||||
else if(C.holder.level != 0)
|
||||
else if(C.holder && C.holder.level != 0)
|
||||
C << "<span class='admin'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, C)]</EM> (<A HREF='?src=\ref[C.holder];adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>"
|
||||
|
||||
/client/proc/cmd_mod_say(msg as text)
|
||||
|
||||
@@ -249,16 +249,16 @@ BLIND // can't see anything
|
||||
H.holstered = usr.get_active_hand()
|
||||
usr.drop_item()
|
||||
H.holstered.loc = src
|
||||
usr.visible_message("\blue [usr] holsters \the [H.holstered].", "You holster \the [H.holstered].")
|
||||
usr.visible_message("\blue \The [usr] holsters \the [H.holstered].", "You holster \the [H.holstered].")
|
||||
else
|
||||
if(istype(usr.get_active_hand(),/obj) && istype(usr.get_inactive_hand(),/obj))
|
||||
usr << "\red You need an empty hand to draw the gun!"
|
||||
else
|
||||
if(usr.a_intent == "hurt")
|
||||
usr.visible_message("\red [usr] draws \the [H.holstered], ready to shoot!", \
|
||||
usr.visible_message("\red \The [usr] draws \the [H.holstered], ready to shoot!", \
|
||||
"\red You draw \the [H.holstered], ready to shoot!")
|
||||
else
|
||||
usr.visible_message("\blue [usr] draws \the [H.holstered], pointing it at the ground.", \
|
||||
"\blue You draw \the [H.holstered], pointing it at tthe ground.")
|
||||
usr.visible_message("\blue \The [usr] draws \the [H.holstered], pointing it at the ground.", \
|
||||
"\blue You draw \the [H.holstered], pointing it at the ground.")
|
||||
usr.put_in_hands(H.holstered)
|
||||
H.holstered = null
|
||||
|
||||
@@ -31,7 +31,7 @@ mob/proc/custom_emote(var/m_type=1,var/message = null)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
if(findtext(message," snores.")) //Because we have so many sleeping people.
|
||||
continue
|
||||
break
|
||||
if(M.stat == 2 && M.client.ghost_sight && !(M in viewers(src,null)))
|
||||
M.show_message(message)
|
||||
|
||||
|
||||
@@ -418,8 +418,8 @@
|
||||
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
|
||||
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
|
||||
//blame the person who coded them. Temporary fix added.
|
||||
|
||||
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
|
||||
if (client)
|
||||
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
|
||||
|
||||
if ((blind && stat != 2))
|
||||
if ((blinded))
|
||||
@@ -441,7 +441,7 @@
|
||||
if (!( machine.check_eye(src) ))
|
||||
reset_view(null)
|
||||
else
|
||||
if(!client.adminobs)
|
||||
if(client && !client.adminobs)
|
||||
reset_view(null)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -332,9 +332,8 @@ FUCK YOU MORE FAT CODE -Hawk*/
|
||||
if (fire) fire.icon_state = "fire[fire_alert ? 1 : 0]"
|
||||
//NOTE: the alerts dont reset when youre out of danger. dont blame me,
|
||||
//blame the person who coded them. Temporary fix added.
|
||||
|
||||
|
||||
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
|
||||
if (client)
|
||||
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
|
||||
|
||||
if ((blind && stat != 2))
|
||||
if ((blinded))
|
||||
@@ -356,7 +355,7 @@ FUCK YOU MORE FAT CODE -Hawk*/
|
||||
if (!( machine.check_eye(src) ))
|
||||
reset_view(null)
|
||||
else
|
||||
if(!client.adminobs)
|
||||
if(client && !client.adminobs)
|
||||
reset_view(null)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -242,8 +242,8 @@
|
||||
healths.icon_state = "health7"
|
||||
|
||||
if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]"
|
||||
|
||||
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
|
||||
if (client)
|
||||
client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired)
|
||||
|
||||
if ((blind && stat != 2))
|
||||
if ((blinded))
|
||||
@@ -265,7 +265,7 @@
|
||||
if (!( machine.check_eye(src) ))
|
||||
reset_view(null)
|
||||
else
|
||||
if(!client.adminobs)
|
||||
if(client && !client.adminobs)
|
||||
reset_view(null)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -482,9 +482,9 @@
|
||||
|
||||
|
||||
if (m_type & 1)
|
||||
for (var/mob/O in viewers(src, null))
|
||||
for (var/mob/O in get_mobs_in_view(world.view,src))
|
||||
O.show_message(message, m_type)
|
||||
else if (m_type & 2)
|
||||
for (var/mob/O in hearers(src.loc, null))
|
||||
for (var/mob/O in (hearers(src.loc, null) | get_mobs_in_view(world.view,src)))
|
||||
O.show_message(message, m_type)
|
||||
|
||||
|
||||
@@ -821,6 +821,12 @@
|
||||
/mob/living/carbon/human/proc/morph()
|
||||
set name = "Morph"
|
||||
set category = "Superpower"
|
||||
|
||||
if(stat!=CONSCIOUS)
|
||||
reset_view(0)
|
||||
remoteview_target = null
|
||||
return
|
||||
|
||||
if(!(mMorph in mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/morph
|
||||
return
|
||||
@@ -894,6 +900,12 @@
|
||||
/mob/living/carbon/human/proc/remotesay()
|
||||
set name = "Project mind"
|
||||
set category = "Superpower"
|
||||
|
||||
if(stat!=CONSCIOUS)
|
||||
reset_view(0)
|
||||
remoteview_target = null
|
||||
return
|
||||
|
||||
if(!(mRemotetalk in src.mutations))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remotesay
|
||||
return
|
||||
@@ -917,12 +929,19 @@
|
||||
set name = "Remote View"
|
||||
set category = "Superpower"
|
||||
|
||||
if(stat!=CONSCIOUS)
|
||||
remoteview_target = null
|
||||
reset_view(0)
|
||||
return
|
||||
|
||||
if(!(mRemote in src.mutations))
|
||||
remoteview_target = null
|
||||
reset_view(0)
|
||||
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
|
||||
return
|
||||
|
||||
if(client.eye != client.mob)
|
||||
remoteview_target = null
|
||||
reset_view(0)
|
||||
return
|
||||
|
||||
@@ -930,15 +949,17 @@
|
||||
|
||||
for(var/mob/living/carbon/h in world)
|
||||
var/turf/temp_turf = get_turf(h)
|
||||
if(temp_turf.z != 1 && temp_turf.z != 5) //Not on mining or the station.
|
||||
if((temp_turf.z != 1 && temp_turf.z != 5) || h.stat!=CONSCIOUS) //Not on mining or the station. Or dead
|
||||
continue
|
||||
creatures += h
|
||||
|
||||
var/mob/target = input ("Who do you want to project your mind to ?") as mob in creatures
|
||||
|
||||
if (target)
|
||||
remoteview_target = target
|
||||
reset_view(target)
|
||||
else
|
||||
remoteview_target = null
|
||||
reset_view(0)
|
||||
|
||||
/mob/living/carbon/human/proc/get_visible_gender()
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
switch(M.a_intent)
|
||||
if("help")
|
||||
if(health > config.health_threshold_crit)
|
||||
diary << "\[[time2text(world.timeofday, "hh:mm.ss")]\] CPR BUGHINTING: [M] shakes [src]: health - [health], threshold - [config.health_threshold_crit]. Health details: OX [getOxyLoss()] TX [getToxLoss()] BU [getFireLoss()] BR [getBruteLoss()] Blood: [round(vessel.get_reagent_amount("blood"))] out of 560"
|
||||
help_shake_act(M)
|
||||
return 1
|
||||
// if(M.health < -75) return 0
|
||||
|
||||
@@ -55,4 +55,6 @@
|
||||
|
||||
var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks.
|
||||
|
||||
var/xylophone = 0 //For the spoooooooky xylophone cooldown
|
||||
var/xylophone = 0 //For the spoooooooky xylophone cooldown
|
||||
|
||||
var/mob/remoteview_target = null
|
||||
|
||||
@@ -433,8 +433,9 @@
|
||||
return
|
||||
message = "\red <B>[source] is trying to empty [target]'s pockets.</B>"
|
||||
if("CPR")
|
||||
if (target.cpr_time >= world.time + 3)
|
||||
if (!target.cpr_time)
|
||||
del(src)
|
||||
target.cpr_time = 0
|
||||
message = "\red <B>[source] is trying perform CPR on [target]!</B>"
|
||||
if("id")
|
||||
message = "\red <B>[source] is trying to take off [target.wear_id] from [target]'s uniform!</B>"
|
||||
@@ -460,6 +461,7 @@ The else statement is for equipping stuff to empty slots.
|
||||
It can still be worn/put on as normal.
|
||||
*/
|
||||
/obj/effect/equip_e/human/done() //TODO: And rewrite this :< ~Carn
|
||||
target.cpr_time = 1
|
||||
if(!source || !target) return //Target or source no longer exist
|
||||
if(source.loc != s_loc) return //source has moved
|
||||
if(target.loc != t_loc) return //target has moved
|
||||
@@ -540,10 +542,7 @@ It can still be worn/put on as normal.
|
||||
if (target.legcuffed)
|
||||
strip_item = target.legcuffed
|
||||
if("CPR")
|
||||
if (target.cpr_time >= world.time + 30)
|
||||
del(src)
|
||||
if ((target.health >= -99.0 && target.health <= 0))
|
||||
target.cpr_time = world.time
|
||||
var/suff = min(target.getOxyLoss(), 7)
|
||||
target.adjustOxyLoss(-suff)
|
||||
target.updatehealth()
|
||||
|
||||
@@ -489,7 +489,7 @@
|
||||
domutcheck(src,null)
|
||||
emote("gasp")
|
||||
updatehealth()
|
||||
|
||||
|
||||
if(damage && organs.len)
|
||||
var/datum/organ/external/O = pick(organs)
|
||||
if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage)
|
||||
@@ -499,6 +499,7 @@
|
||||
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
|
||||
|
||||
var/lung_ruptured = is_lung_ruptured()
|
||||
|
||||
if(lung_ruptured && prob(2))
|
||||
spawn emote("me", 1, "coughs up blood!")
|
||||
src.drip(10)
|
||||
@@ -565,6 +566,12 @@
|
||||
var/obj/location_as_object = loc
|
||||
location_as_object.handle_internal_lifeform(src, 0)
|
||||
|
||||
|
||||
if(!lung_ruptured && breath)
|
||||
if(breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5)
|
||||
if(prob(5))
|
||||
rupture_lung()
|
||||
|
||||
handle_breath(breath)
|
||||
|
||||
if(breath)
|
||||
@@ -713,9 +720,6 @@
|
||||
apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat")
|
||||
fire_alert = max(fire_alert, 2)
|
||||
|
||||
if(oxyloss >= 50 && prob(oxyloss / 5))
|
||||
rupture_lung()
|
||||
|
||||
//Temporary fixes to the alerts.
|
||||
|
||||
return 1
|
||||
@@ -1004,7 +1008,8 @@
|
||||
proc/handle_chemicals_in_body()
|
||||
if(reagents) reagents.metabolize(src)
|
||||
|
||||
if(dna && dna.mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
|
||||
// if(dna && dna.mutantrace == "plant") //couldn't think of a better place to place it, since it handles nutrition -- Urist
|
||||
if(PLANT in mutations)
|
||||
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
|
||||
if(isturf(loc)) //else, there's considered to be no light
|
||||
var/turf/T = loc
|
||||
@@ -1050,7 +1055,8 @@
|
||||
if(overeatduration > 1)
|
||||
overeatduration -= 2 //doubled the unfat rate
|
||||
|
||||
if(dna && dna.mutantrace == "plant")
|
||||
// if(dna && dna.mutantrace == "plant")
|
||||
if(PLANT in mutations)
|
||||
if(nutrition < 200)
|
||||
take_overall_damage(2,0)
|
||||
|
||||
@@ -1295,9 +1301,13 @@
|
||||
sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
|
||||
if(dna)
|
||||
switch(dna.mutantrace)
|
||||
if("lizard","metroid")
|
||||
if("metroid")
|
||||
see_in_dark = 3
|
||||
see_invisible = SEE_INVISIBLE_LEVEL_ONE
|
||||
if("lizard")
|
||||
see_in_dark = 3
|
||||
if("tajaran")
|
||||
see_in_dark = 8
|
||||
else
|
||||
see_in_dark = 2
|
||||
|
||||
@@ -1470,7 +1480,12 @@
|
||||
if(machine)
|
||||
if(!machine.check_eye(src)) reset_view(null)
|
||||
else
|
||||
if(!(mRemote in mutations) && !client.adminobs)
|
||||
var/isRemoteObserve = 0
|
||||
if((mRemote in mutations) && remoteview_target)
|
||||
if(remoteview_target.stat==CONSCIOUS)
|
||||
isRemoteObserve = 1
|
||||
if(!isRemoteObserve && client && !client.adminobs)
|
||||
remoteview_target = null
|
||||
reset_view(null)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -218,107 +218,133 @@ proc/get_damage_icon_part(damage_state, body_part)
|
||||
/mob/living/carbon/human/proc/update_body(var/update_icons=1)
|
||||
if(stand_icon) del(stand_icon)
|
||||
if(lying_icon) del(lying_icon)
|
||||
if(dna && dna.mutantrace) return
|
||||
|
||||
var/husk_color_mod = rgb(96,88,80)
|
||||
var/hulk_color_mod = rgb(48,224,40)
|
||||
var/plant_color_mod = rgb(144,224,144)
|
||||
|
||||
var/husk = (HUSK in src.mutations) //100% unnecessary -Agouri //nope, do you really want to iterate through src.mutations repeatedly? -Pete
|
||||
var/fat = (FAT in src.mutations)
|
||||
var/hulk = (HULK in src.mutations)
|
||||
var/skeleton = (SKELETON in src.mutations)
|
||||
var/plant = (PLANT in src.mutations)
|
||||
|
||||
var/g = "m"
|
||||
if(gender == FEMALE) g = "f"
|
||||
|
||||
// whether to draw the individual limbs
|
||||
var/individual_limbs = 0
|
||||
|
||||
//Base mob icon
|
||||
if(husk)
|
||||
stand_icon = new /icon('icons/mob/human.dmi', "husk_s")
|
||||
lying_icon = new /icon('icons/mob/human.dmi', "husk_l")
|
||||
else if(fat)
|
||||
stand_icon = new /icon('icons/mob/human.dmi', "fatbody_s")
|
||||
lying_icon = new /icon('icons/mob/human.dmi', "fatbody_l")
|
||||
else if(skeleton)
|
||||
stand_icon = new /icon('icons/mob/human.dmi', "skeleton_s")
|
||||
lying_icon = new /icon('icons/mob/human.dmi', "skeleton_l")
|
||||
var/icon/icobase
|
||||
if(skeleton)
|
||||
icobase = 'icons/mob/human_races/r_skeleton.dmi'
|
||||
else if(dna)
|
||||
switch(dna.mutantrace)
|
||||
if("tajaran")
|
||||
icobase = 'icons/mob/human_races/r_tajaran.dmi'
|
||||
if("lizard")
|
||||
icobase = 'icons/mob/human_races/r_lizard.dmi'
|
||||
if("skrell")
|
||||
icobase = 'icons/mob/human_races/r_skrell.dmi'
|
||||
else
|
||||
icobase = 'icons/mob/human_races/r_human.dmi'
|
||||
else
|
||||
stand_icon = new /icon('icons/mob/human.dmi', "torso_[g]_s")
|
||||
lying_icon = new /icon('icons/mob/human.dmi', "torso_[g]_l")
|
||||
individual_limbs = 1
|
||||
icobase = 'icons/mob/human_races/r_human.dmi'
|
||||
|
||||
// Draw each individual limb
|
||||
if(individual_limbs)
|
||||
stand_icon.Blend(new /icon('icons/mob/human.dmi', "chest_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('icons/mob/human.dmi', "chest_[g]_l"), ICON_OVERLAY)
|
||||
if(!skeleton)
|
||||
stand_icon = new /icon(icobase, "torso_[g][fat?"_fat":""]")
|
||||
if(husk)
|
||||
stand_icon.ColorTone(husk_color_mod)
|
||||
else if(hulk)
|
||||
// stand_icon.ColorTone(hulk_color_mod)
|
||||
var/list/TONE = ReadRGB(hulk_color_mod)
|
||||
stand_icon.MapColors(rgb(TONE[1],0,0),rgb(0,TONE[2],0),rgb(0,0,TONE[3]))
|
||||
else if(plant)
|
||||
stand_icon.ColorTone(plant_color_mod)
|
||||
else
|
||||
stand_icon = new /icon(icobase, "torso")
|
||||
|
||||
var/datum/organ/external/head = get_organ("head")
|
||||
if(head && !(head.status & ORGAN_DESTROYED))
|
||||
stand_icon.Blend(new /icon('icons/mob/human.dmi', "head_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('icons/mob/human.dmi', "head_[g]_l"), ICON_OVERLAY)
|
||||
var/datum/organ/external/head = get_organ("head")
|
||||
var/has_head = 0
|
||||
if(head && !(head.status & ORGAN_DESTROYED))
|
||||
has_head = 1
|
||||
|
||||
for(var/datum/organ/external/part in organs)
|
||||
if(!istype(part, /datum/organ/external/groin) \
|
||||
&& !istype(part, /datum/organ/external/chest) \
|
||||
&& !istype(part, /datum/organ/external/head) \
|
||||
&& !(part.status & ORGAN_DESTROYED))
|
||||
var/icon/temp = new /icon('human.dmi', "[part.icon_name]_s")
|
||||
if(part.status & ORGAN_ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
|
||||
for(var/datum/organ/external/part in organs)
|
||||
if(!istype(part, /datum/organ/external/chest) && !(part.status & ORGAN_DESTROYED))
|
||||
var/icon/temp
|
||||
if(istype(part, /datum/organ/external/groin))
|
||||
if(skeleton)
|
||||
temp = new /icon(icobase, "groin")
|
||||
else
|
||||
temp = new /icon(icobase, "groin_[g]")
|
||||
else if(istype(part, /datum/organ/external/head))
|
||||
if(skeleton)
|
||||
temp = new /icon(icobase, "head")
|
||||
else
|
||||
temp = new /icon(icobase, "head_[g]")
|
||||
else
|
||||
temp = new /icon(icobase, "[part.icon_name]")
|
||||
if(part.status & ORGAN_ROBOT)
|
||||
temp.GrayScale()
|
||||
else if(!skeleton)
|
||||
if(husk)
|
||||
temp.ColorTone(husk_color_mod)
|
||||
else if(hulk)
|
||||
// temp.ColorTone(hulk_color_mod)
|
||||
var/list/TONE = ReadRGB(hulk_color_mod)
|
||||
temp.MapColors(rgb(TONE[1],0,0),rgb(0,TONE[2],0),rgb(0,0,TONE[3]))
|
||||
else if(plant)
|
||||
temp.ColorTone(plant_color_mod)
|
||||
|
||||
//That part makes left and right legs drawn topmost and lowermost when human looks WEST or EAST
|
||||
//And no change in rendering for other parts (they icon_position is 0, so goes to 'else' part)
|
||||
if(part.icon_position&(LEFT|RIGHT))
|
||||
var/icon/temp2 = new('icons/mob/human.dmi',"blank")
|
||||
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
|
||||
temp2.Insert(new/icon(temp,dir=SOUTH),dir=SOUTH)
|
||||
if(!(part.icon_position & LEFT))
|
||||
temp2.Insert(new/icon(temp,dir=EAST),dir=EAST)
|
||||
if(!(part.icon_position & RIGHT))
|
||||
temp2.Insert(new/icon(temp,dir=WEST),dir=WEST)
|
||||
stand_icon.Blend(temp2, ICON_OVERLAY)
|
||||
temp2 = new('icons/mob/human.dmi',"blank")
|
||||
if(part.icon_position & LEFT)
|
||||
temp2.Insert(new/icon(temp,dir=EAST),dir=EAST)
|
||||
if(part.icon_position & RIGHT)
|
||||
temp2.Insert(new/icon(temp,dir=WEST),dir=WEST)
|
||||
stand_icon.Blend(temp2, ICON_UNDERLAY)
|
||||
else
|
||||
stand_icon.Blend(temp, ICON_OVERLAY)
|
||||
temp = new /icon('human.dmi', "[part.icon_name]_l")
|
||||
if(part.status & ORGAN_ROBOT) temp.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0))
|
||||
lying_icon.Blend(temp , ICON_OVERLAY)
|
||||
|
||||
stand_icon.Blend(new /icon('human.dmi', "groin_[g]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new /icon('human.dmi', "groin_[g]_l"), ICON_OVERLAY)
|
||||
|
||||
if (husk)
|
||||
var/icon/husk_s = new /icon('human.dmi', "husk_s")
|
||||
var/icon/husk_l = new /icon('human.dmi', "husk_l")
|
||||
|
||||
for(var/datum/organ/external/part in organs)
|
||||
if(!istype(part, /datum/organ/external/groin) \
|
||||
&& !istype(part, /datum/organ/external/chest) \
|
||||
&& !istype(part, /datum/organ/external/head) \
|
||||
&& (part.status & ORGAN_DESTROYED))
|
||||
husk_s.Blend(new /icon('dam_mask.dmi', "[part.icon_name]"), ICON_SUBTRACT)
|
||||
husk_l.Blend(new /icon('dam_mask.dmi', "[part.icon_name]2"), ICON_SUBTRACT)
|
||||
|
||||
stand_icon.Blend(husk_s, ICON_OVERLAY)
|
||||
lying_icon.Blend(husk_l, ICON_OVERLAY)
|
||||
|
||||
//Skin tone
|
||||
if(!skeleton)
|
||||
if(!skeleton && !husk && !hulk && !plant)
|
||||
if(s_tone >= 0)
|
||||
stand_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
|
||||
lying_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
|
||||
else
|
||||
stand_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||
lying_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT)
|
||||
|
||||
//Eyes
|
||||
if(!skeleton)
|
||||
var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s")
|
||||
var/icon/eyes_l = new/icon('icons/mob/human_face.dmi', "eyes_l")
|
||||
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
|
||||
eyes_l.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
|
||||
stand_icon.Blend(eyes_s, ICON_OVERLAY)
|
||||
lying_icon.Blend(eyes_l, ICON_OVERLAY)
|
||||
// Note: These used to be in update_face(), and the fact they're here will make it difficult to create a disembodied head
|
||||
var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s")
|
||||
var/icon/eyes_l = new/icon('icons/mob/human_face.dmi', "eyes_l")
|
||||
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
|
||||
eyes_l.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
|
||||
stand_icon.Blend(eyes_s, ICON_OVERLAY)
|
||||
lying_icon.Blend(eyes_l, ICON_OVERLAY)
|
||||
if(husk)
|
||||
var/icon/mask = new(stand_icon)
|
||||
var/icon/husk_over = new(icobase,"overlay_husk")
|
||||
mask.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,0)
|
||||
husk_over.Blend(mask, ICON_ADD)
|
||||
stand_icon.Blend(husk_over, ICON_OVERLAY)
|
||||
|
||||
if(has_head)
|
||||
//Eyes
|
||||
if(!skeleton)
|
||||
var/icon/eyes_s = new/icon('icons/mob/human_face.dmi', "eyes_s")
|
||||
eyes_s.Blend(rgb(r_eyes, g_eyes, b_eyes), ICON_ADD)
|
||||
stand_icon.Blend(eyes_s, ICON_OVERLAY)
|
||||
|
||||
//Mouth (lipstick!)
|
||||
if(lip_style) //skeletons are allowed to wear lipstick no matter what you think, agouri.
|
||||
stand_icon.Blend(new/icon('icons/mob/human_face.dmi', "lips_[lip_style]_s"), ICON_OVERLAY)
|
||||
lying_icon.Blend(new/icon('icons/mob/human_face.dmi', "lips_[lip_style]_l"), ICON_OVERLAY)
|
||||
|
||||
//Underwear
|
||||
if(underwear >0 && underwear < 12)
|
||||
if(!fat && !skeleton)
|
||||
stand_icon.Blend(new /icon('icons/mob/human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY)
|
||||
|
||||
lying_icon = stand_icon.MakeLying()
|
||||
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
|
||||
@@ -417,27 +443,29 @@ proc/get_damage_icon_part(damage_state, body_part)
|
||||
var/fat
|
||||
if( FAT in mutations )
|
||||
fat = "fat"
|
||||
var/g = "m"
|
||||
if (gender == FEMALE) g = "f"
|
||||
// var/g = "m"
|
||||
// if (gender == FEMALE) g = "f"
|
||||
//BS12 EDIT
|
||||
if(dna)
|
||||
switch(dna.mutantrace)
|
||||
if("golem","metroid")
|
||||
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_l")
|
||||
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_s")
|
||||
if("lizard", "tajaran", "skrell")
|
||||
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_l")
|
||||
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_s")
|
||||
if("plant")
|
||||
if(stat == DEAD) //TODO
|
||||
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace]_d")
|
||||
else
|
||||
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_l")
|
||||
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s")
|
||||
var/icon/I = new('icons/effects/genetics.dmi',"[dna.mutantrace][fat]_s")
|
||||
overlays_standing[MUTANTRACE_LAYER] = image(I)
|
||||
overlays_lying[MUTANTRACE_LAYER] = image(I.MakeLying())
|
||||
// if("lizard", "tajaran", "skrell")
|
||||
// overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_l")
|
||||
// overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[dna.mutantrace]_[g]_s")
|
||||
// if("plant")
|
||||
// if(stat == DEAD) //TODO
|
||||
// overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace]_d")
|
||||
// else
|
||||
// overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_l")
|
||||
// overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s")
|
||||
else
|
||||
overlays_lying[MUTANTRACE_LAYER] = null
|
||||
overlays_standing[MUTANTRACE_LAYER] = null
|
||||
update_body(0)
|
||||
if(!dna || !(dna.mutantrace in list("golem","metroid")))
|
||||
update_body(0)
|
||||
update_hair(0)
|
||||
if(update_icons) update_icons()
|
||||
|
||||
|
||||
@@ -551,7 +551,7 @@
|
||||
if (!( machine.check_eye(src) ))
|
||||
reset_view(null)
|
||||
else
|
||||
if(!client.adminobs)
|
||||
if(client && !client.adminobs)
|
||||
reset_view(null)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
dna = new /datum/dna( null )
|
||||
dna.real_name = real_name
|
||||
dna.uni_identity = "00600200A00E0110148FC01300B009"
|
||||
dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
|
||||
dna.struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
|
||||
dna.unique_enzymes = md5(name)
|
||||
//////////blah
|
||||
var/gendervar
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/mob/living/Logout()
|
||||
..()
|
||||
if(!key && mind) //key and mind have become seperated.
|
||||
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
|
||||
if(!immune_to_ssd && sleeping < 2 && mind.active)
|
||||
sleeping = 2
|
||||
if (mind)
|
||||
if(!key) //key and mind have become seperated.
|
||||
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
|
||||
if(!immune_to_ssd && sleeping < 2 && mind.active)
|
||||
sleeping = 2
|
||||
|
||||
@@ -195,10 +195,13 @@
|
||||
m_type = 2
|
||||
|
||||
if("law")
|
||||
message = "<B>[src]</B> shows its legal authorization barcode."
|
||||
if (istype(module,/obj/item/weapon/robot_module/security))
|
||||
message = "<B>[src]</B> shows its legal authorization barcode."
|
||||
|
||||
playsound(src.loc, 'biamthelaw.ogg', 50, 0)
|
||||
m_type = 2
|
||||
playsound(src.loc, 'biamthelaw.ogg', 50, 0)
|
||||
m_type = 2
|
||||
else
|
||||
src << "You are not THE LAW, pal."
|
||||
else
|
||||
src << text("Invalid Emote: []", act)
|
||||
if ((message && src.stat == 0))
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
if (!( src.machine.check_eye(src) ))
|
||||
src.reset_view(null)
|
||||
else
|
||||
if(!client.adminobs)
|
||||
if(client && !client.adminobs)
|
||||
reset_view(null)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -147,24 +147,7 @@
|
||||
return 1
|
||||
|
||||
if(href_list["ready"])
|
||||
var/num_old_slots = GetAvailableAlienPlayerSlots()
|
||||
var/new_slots = num_old_slots
|
||||
if(!ready)
|
||||
if(num_old_slots >= 1 || preferences.species == "Human")
|
||||
ready = 1
|
||||
new_slots = GetAvailableAlienPlayerSlots()
|
||||
else
|
||||
src << "\red Unable to declare ready. Too many players have already elected to play as aliens."
|
||||
else
|
||||
ready = 0
|
||||
new_slots = GetAvailableAlienPlayerSlots()
|
||||
|
||||
if(num_old_slots < 1 && new_slots >= 1)
|
||||
for(var/mob/new_player/N in world)
|
||||
N << "\blue A new alien player slot has opened."
|
||||
else if(num_old_slots >= 1 && new_slots < 1)
|
||||
for(var/mob/new_player/N in world)
|
||||
N << "\red New alien players can no longer enter the game."
|
||||
ready = !ready
|
||||
|
||||
if(href_list["refresh"])
|
||||
src << browse(null, "window=playersetup") //closes the player setup window
|
||||
@@ -205,9 +188,6 @@
|
||||
if(!is_alien_whitelisted(src, preferences.species) && config.usealienwhitelist)
|
||||
src << alert("You are currently not whitelisted to play [preferences.species].")
|
||||
return 0
|
||||
else if(GetAvailableAlienPlayerSlots() < 1)
|
||||
src << "\red Unable to join game. Too many players have already joined as aliens."
|
||||
return 0
|
||||
|
||||
LateChoices()
|
||||
|
||||
@@ -356,15 +336,10 @@
|
||||
src << alert("[rank] is not available. Please try another.")
|
||||
return 0
|
||||
|
||||
var/num_old_slots = GetAvailableAlienPlayerSlots()
|
||||
var/new_slots = num_old_slots
|
||||
if(preferences.species != "Human")
|
||||
if(!is_alien_whitelisted(src, preferences.species) && config.usealienwhitelist)
|
||||
src << alert("You are currently not whitelisted to play [preferences.species].")
|
||||
return 0
|
||||
else if(num_old_slots < 1)
|
||||
src << "\red Unable to join game. Too many players have already joined as aliens."
|
||||
return 0
|
||||
|
||||
job_master.AssignRole(src, rank, 1)
|
||||
|
||||
@@ -384,14 +359,6 @@
|
||||
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
|
||||
AnnounceArrival(character, rank)
|
||||
|
||||
new_slots = GetAvailableAlienPlayerSlots()
|
||||
if(num_old_slots < 1 && new_slots >= 1)
|
||||
for(var/mob/new_player/N in world)
|
||||
N << "\blue A new alien player slot has opened."
|
||||
else if(num_old_slots >= 1 && new_slots < 1)
|
||||
for(var/mob/new_player/N in world)
|
||||
N << "\red New alien players can no longer enter the game."
|
||||
|
||||
else
|
||||
character.Robotize()
|
||||
del(src)
|
||||
@@ -492,22 +459,3 @@
|
||||
proc/close_spawn_windows()
|
||||
src << browse(null, "window=latechoices") //closes late choices window
|
||||
src << browse(null, "window=playersetup") //closes the player setup window
|
||||
|
||||
//limits the number of alien players in a game
|
||||
/proc/GetAvailableAlienPlayerSlots()
|
||||
if(!config.limitalienplayers)
|
||||
return 9999
|
||||
|
||||
var/num_players = 0
|
||||
|
||||
//check new players
|
||||
for(var/mob/new_player/N in world)
|
||||
if(N.preferences && N.ready)
|
||||
num_players++
|
||||
|
||||
//check players already spawned, only count humans or aliens
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
if(H.ckey)
|
||||
num_players++
|
||||
|
||||
return round(num_players * (config.alien_to_human_ratio / 100))
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
|
||||
/obj/item/weapon/paper/Topic(href, href_list)
|
||||
..()
|
||||
if((usr.stat || usr.restrained()))
|
||||
if(!usr || (usr.stat || usr.restrained()))
|
||||
return
|
||||
|
||||
if(href_list["write"])
|
||||
|
||||
@@ -119,6 +119,8 @@
|
||||
if(!unmarked || !C.powernet)
|
||||
if(C.d1 == fdir || C.d2 == fdir)
|
||||
. += C
|
||||
else if(C.d1 == turn(C.d2, 180))
|
||||
. += C
|
||||
return .
|
||||
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
|
||||
/obj/machinery/power/smes/proc/chargedisplay()
|
||||
return round(5.5*charge/capacity)
|
||||
return round(5.5*charge/(capacity ? capacity : 5e6))
|
||||
|
||||
#define SMESRATE 0.05 // rate of internal charge to external power
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
name = "laser tag gun"
|
||||
icon_state = "bluetag"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
projectile_type = "/obj/item/projectile/beam/bluetag"
|
||||
projectile_type = "/obj/item/projectile/beam/lastertag/blue"
|
||||
origin_tech = "combat=1;magnets=2"
|
||||
clumsy_check = 0
|
||||
var/charge_tick = 0
|
||||
@@ -127,7 +127,7 @@ obj/item/weapon/gun/energy/laser/retro
|
||||
name = "laser tag gun"
|
||||
icon_state = "redtag"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
projectile_type = "/obj/item/projectile/beam/redtag"
|
||||
projectile_type = "/obj/item/projectile/beam/lastertag/red"
|
||||
origin_tech = "combat=1;magnets=2"
|
||||
clumsy_check = 0
|
||||
var/charge_tick = 0
|
||||
|
||||
@@ -111,7 +111,7 @@ var/list/beam_master = list()
|
||||
|
||||
|
||||
|
||||
/obj/item/projectile/beam/bluetag
|
||||
/obj/item/projectile/beam/lastertag/blue
|
||||
name = "lasertag beam"
|
||||
icon_state = "bluelaser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
@@ -126,7 +126,7 @@ var/list/beam_master = list()
|
||||
M.Weaken(5)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/beam/redtag
|
||||
/obj/item/projectile/beam/lastertag/red
|
||||
name = "lasertag beam"
|
||||
icon_state = "laser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
@@ -141,7 +141,7 @@ var/list/beam_master = list()
|
||||
M.Weaken(5)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/beam/omnitag//A laser tag bolt that stuns EVERYONE
|
||||
/obj/item/projectile/beam/lastertag/omni//A laser tag bolt that stuns EVERYONE
|
||||
name = "lasertag beam"
|
||||
icon_state = "omnilaser"
|
||||
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
||||
|
||||
@@ -79,7 +79,8 @@
|
||||
|
||||
on_hit(var/atom/target, var/blocked = 0)
|
||||
var/mob/living/M = target
|
||||
if(ishuman(target) && M.dna && M.dna.mutantrace == "plant") //Plantmen possibly get mutated and damaged by the rays.
|
||||
// if(ishuman(target) && M.dna && M.dna.mutantrace == "plant") //Plantmen possibly get mutated and damaged by the rays.
|
||||
if(ishuman(target) && (PLANT in M.mutations)) //Plantmen possibly get mutated and damaged by the rays.
|
||||
if(prob(15))
|
||||
M.apply_effect((rand(30,80)),IRRADIATE)
|
||||
M.Weaken(5)
|
||||
@@ -116,7 +117,8 @@
|
||||
|
||||
on_hit(var/atom/target, var/blocked = 0)
|
||||
var/mob/M = target
|
||||
if(ishuman(target) && M.dna && M.dna.mutantrace == "plant") //These rays make plantmen fat.
|
||||
// if(ishuman(target) && M.dna && M.dna.mutantrace == "plant") //These rays make plantmen fat.
|
||||
if(ishuman(target) && (PLANT in M.mutations)) //These rays make plantmen fat.
|
||||
if(M.nutrition < 500) //sanity check
|
||||
M.nutrition += 30
|
||||
else if (istype(target, /mob/living/carbon/))
|
||||
|
||||
@@ -1146,7 +1146,8 @@ datum
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.dna)
|
||||
if(H.dna.mutantrace == "plant") //plantmen take a LOT of damage
|
||||
// if(H.dna.mutantrace == "plant") //plantmen take a LOT of damage
|
||||
if(PLANT in H.mutations) //plantmen take a LOT of damage
|
||||
H.adjustToxLoss(10)
|
||||
|
||||
plasma
|
||||
|
||||
@@ -145,7 +145,8 @@
|
||||
|
||||
bullet_act(var/obj/item/projectile/Proj)
|
||||
if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
|
||||
explode()
|
||||
if(!istype(Proj ,/obj/item/projectile/beam/lastertag) && !istype(Proj ,/obj/item/projectile/beam/practice) )
|
||||
explode()
|
||||
|
||||
blob_act()
|
||||
explode()
|
||||
|
||||
@@ -153,8 +153,6 @@
|
||||
if(istype(P,/obj/item/projectile/beam)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/ion)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/energy)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/beam/bluetag)) src.Artifact_Activate()
|
||||
else if(istype(P,/obj/item/projectile/beam/redtag)) src.Artifact_Activate()
|
||||
if (my_effect.trigger == "heat")
|
||||
if(istype(P,/obj/item/projectile/temp)) src.Artifact_Activate()
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
findarti++
|
||||
cur_artifact = A
|
||||
if (findarti == 1)
|
||||
if(cur_artifact.being_used)
|
||||
if(cur_artifact && cur_artifact.being_used)
|
||||
var/message = "<b>[src]</b> states, \"Cannot analyse. Excess energy drain is disrupting signal.\""
|
||||
src.visible_message(message, message)
|
||||
else
|
||||
|
||||
+7
-2
@@ -19,8 +19,9 @@
|
||||
#define MOLES_PLASMA_VISIBLE 0.7 //Moles in a standard cell after which plasma is visible
|
||||
#define MIN_PLASMA_DAMAGE 20
|
||||
|
||||
#define BREATH_VOLUME 0.5 //liters in a normal breath
|
||||
#define BREATH_PERCENTAGE BREATH_VOLUME/CELL_VOLUME
|
||||
#define BREATH_VOLUME 5 //liters in a normal breath
|
||||
#define BREATH_MOLES (ONE_ATMOSPHERE * BREATH_VOLUME /(T20C*R_IDEAL_GAS_EQUATION))
|
||||
#define BREATH_PERCENTAGE BREATH_MOLES/MOLES_CELLSTANDARD
|
||||
//Amount of air to take a from a tile
|
||||
#define HUMAN_NEEDED_OXYGEN MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16
|
||||
//Amount of air needed before pass out/suffocation commences
|
||||
@@ -351,6 +352,7 @@ var/MAX_EXPLOSION_RANGE = 14
|
||||
|
||||
//2spooky
|
||||
#define SKELETON 29
|
||||
#define PLANT 30
|
||||
|
||||
// Other Mutations:
|
||||
#define mNobreath 100 // no need to breathe
|
||||
@@ -595,3 +597,6 @@ var/list/TAGGERLOCATIONS = list("Disposals",
|
||||
#define HOSTILE_STANCE_ATTACK 3
|
||||
#define HOSTILE_STANCE_ATTACKING 4
|
||||
#define HOSTILE_STANCE_TIRED 5
|
||||
|
||||
#define LEFT 1
|
||||
#define RIGHT 2
|
||||
|
||||
+1
-1
@@ -18,8 +18,8 @@
|
||||
|
||||
src.load_mode()
|
||||
src.load_motd()
|
||||
src.load_mods()
|
||||
src.load_admins()
|
||||
src.load_mods()
|
||||
investigate_reset()
|
||||
if (config.usewhitelist)
|
||||
load_whitelist()
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 9.1 KiB |
Reference in New Issue
Block a user