mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 21:12:24 +01:00
Bugs, Bugs Everywhere. (#1351)
Fixes #1333 and Fixes #1331 IPCs, and indeed anyone with robotic organs or plant organs, can be rejuv'd properly. IPCs now have their damage shown on VV, more or less. IPCs have their brutemod set to 0.8, since prosthetic limbs already have brute mods of their own, and so Industrial IPCs could have a brute mod of 0.5 instead of 0.3 Probably some other stuff. It's all in the diff.
This commit is contained in:
@@ -29,16 +29,16 @@
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/terminator
|
||||
species_restricted = list("Hunter-Killer")
|
||||
species_restricted = list("Machine")
|
||||
|
||||
/obj/item/clothing/suit/space/rig/terminator
|
||||
species_restricted = list("Hunter-Killer")
|
||||
species_restricted = list("Machine")
|
||||
|
||||
/obj/item/clothing/shoes/magboots/rig/terminator
|
||||
species_restricted = list("Hunter-Killer")
|
||||
species_restricted = list("Machine")
|
||||
|
||||
/obj/item/clothing/gloves/rig/terminator
|
||||
species_restricted = list("Hunter-Killer")
|
||||
species_restricted = list("Machine")
|
||||
|
||||
/obj/item/weapon/rig/terminator/equipped
|
||||
initial_modules = list(
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
/mob/living/carbon/human/getBruteLoss()
|
||||
var/amount = 0
|
||||
for(var/obj/item/organ/external/O in organs)
|
||||
if(O.status & ORGAN_ROBOT)
|
||||
if((O.status & ORGAN_ROBOT) && !O.vital)
|
||||
continue //robot limbs don't count towards shock and crit
|
||||
amount += O.brute_dam
|
||||
return amount
|
||||
@@ -78,7 +78,7 @@
|
||||
/mob/living/carbon/human/getFireLoss()
|
||||
var/amount = 0
|
||||
for(var/obj/item/organ/external/O in organs)
|
||||
if(O.status & ORGAN_ROBOT)
|
||||
if((O.status & ORGAN_ROBOT) && !O.vital)
|
||||
continue //robot limbs don't count towards shock and crit
|
||||
amount += O.burn_dam
|
||||
return amount
|
||||
|
||||
@@ -267,12 +267,14 @@
|
||||
src << "<span class='warning'>You cannot do that in your current state.</span>"
|
||||
return
|
||||
|
||||
for(var/mob/M in range(7, src))
|
||||
for(var/mob/living/M in range(7, src))
|
||||
M << 'sound/effects/EMPulse.ogg'
|
||||
for(var/obj/item/weapon/material/shard/shrapnel/flechette/F in M.contents)
|
||||
playsound(F, 'sound/items/countdown.ogg', 125, 1)
|
||||
spawn(20)
|
||||
explosion(F.loc, -1, -1, 2)
|
||||
M.apply_damage(20,BRUTE)
|
||||
M.apply_damage(15,BURN)
|
||||
qdel(F)
|
||||
|
||||
for(var/obj/item/weapon/material/shard/shrapnel/flechette/F in range(7, src))
|
||||
@@ -287,6 +289,10 @@
|
||||
set name = "State Laws"
|
||||
set desc = "State your laws aloud."
|
||||
|
||||
if(stat)
|
||||
src << "<span class='warning'>You cannot do that in your current state.</span>"
|
||||
return
|
||||
|
||||
if(last_special > world.time)
|
||||
return
|
||||
last_special = world.time + 20
|
||||
@@ -380,7 +386,7 @@
|
||||
sleep(10)
|
||||
playsound(src, 'sound/items/countdown.ogg', 125, 1)
|
||||
sleep(20)
|
||||
explosion(src, -1, -1, 5)
|
||||
explosion(src, -1, 1, 5)
|
||||
src.gib()
|
||||
|
||||
/mob/living/carbon/human/proc/hivenet()
|
||||
|
||||
@@ -117,3 +117,4 @@
|
||||
|
||||
/mob/living/carbon/human/terminator
|
||||
mob_size = 30
|
||||
offset_light = 1
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
var/radiation_mod = 1 // Radiation modifier
|
||||
var/flash_mod = 1 // Stun from blindness modifier.
|
||||
var/vision_flags = SEE_SELF // Same flags as glasses.
|
||||
var/list/breakcuffs = list() //used in resist.dm to check if they can break hand/leg cuffs
|
||||
|
||||
// Death vars.
|
||||
var/meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human
|
||||
|
||||
@@ -68,8 +68,8 @@
|
||||
short_name = "ind"
|
||||
name_plural = "Industrials"
|
||||
|
||||
brute_mod = 0.3
|
||||
burn_mod = 1.2
|
||||
brute_mod = 0.5
|
||||
burn_mod = 1.3
|
||||
slowdown = 4
|
||||
|
||||
blurb = "Tough units made for engineering and security with simple exteriors, roughly resembling humans. No job restrictions. Heavy emphasis on \
|
||||
@@ -98,9 +98,9 @@
|
||||
"r_foot" = list("path" = /obj/item/organ/external/foot/right/industrial)
|
||||
)
|
||||
|
||||
heat_level_1 = 800
|
||||
heat_level_2 = 1300
|
||||
heat_level_3 = 2500
|
||||
heat_level_1 = 600
|
||||
heat_level_2 = 1200
|
||||
heat_level_3 = 2400
|
||||
|
||||
heat_discomfort_level = 800
|
||||
|
||||
@@ -145,10 +145,11 @@
|
||||
eyes = "eyes_terminator"
|
||||
has_floating_eyes = 1
|
||||
|
||||
brute_mod = 0.2
|
||||
burn_mod = 0.4
|
||||
brute_mod = 0.3
|
||||
burn_mod = 0.5
|
||||
flash_mod = 0
|
||||
siemens_coefficient = 0
|
||||
breakcuffs = list(MALE,FEMALE,NEUTER)
|
||||
|
||||
show_ssd = "laying inert, its activation glyph dark."
|
||||
death_sound = 'sound/effects/bang.ogg'
|
||||
@@ -179,7 +180,7 @@
|
||||
has_organ = list(
|
||||
"brain" = /obj/item/organ/mmi_holder/posibrain/terminator,
|
||||
"shielded cell" = /obj/item/organ/cell/terminator,
|
||||
"optics" = /obj/item/organ/optical_sensor,
|
||||
"optics" = /obj/item/organ/optical_sensor/terminator,
|
||||
"data core" = /obj/item/organ/data
|
||||
)
|
||||
|
||||
@@ -223,13 +224,9 @@
|
||||
playsound(H.loc, 'sound/machines/buzz-two.ogg', 100, 0)
|
||||
return 0
|
||||
|
||||
/datum/species/machine/handle_death(var/mob/living/carbon/human/H)
|
||||
/datum/species/machine/terminator/handle_death(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
spawn(10)
|
||||
playsound(H.loc, 'sound/items/countdown.ogg', 125, 1)
|
||||
spawn(20)
|
||||
explosion(H, -1, -1, 5)
|
||||
H.gib()
|
||||
|
||||
/datum/species/machine/sanitize_name(var/new_name)
|
||||
return sanitizeName(new_name, allow_numbers = 1)
|
||||
playsound(H.loc, 'sound/items/countdown.ogg', 125, 1)
|
||||
spawn(15)
|
||||
explosion(H.loc, -1, 1, 5)
|
||||
H.gib()
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
sprint_cost_factor = 1.45
|
||||
exhaust_threshold = 65
|
||||
rarity_value = 3
|
||||
breakcuffs = list(MALE)
|
||||
|
||||
blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \
|
||||
Uuosa-Eso system, which roughly translates to 'burning mother'.<br/><br/>Coming from a harsh, radioactive \
|
||||
@@ -352,7 +353,7 @@
|
||||
radiation_mod = 0 // not affected by radiation
|
||||
|
||||
// #TODO-MERGE: Check for balance and self-repair. If self-repair is a thing, RIP balance.
|
||||
brute_mod = 0.5
|
||||
brute_mod = 0.8
|
||||
burn_mod = 1.0
|
||||
show_ssd = "flashing a 'system offline' glyph on their monitor"
|
||||
death_message = "gives one shrill beep before falling lifeless."
|
||||
@@ -375,7 +376,7 @@
|
||||
passive_temp_gain = 10 // This should cause IPCs to stabilize at ~80 C in a 20 C environment.
|
||||
|
||||
flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON | NO_MINOR_CUT
|
||||
appearance_flags = HAS_SKIN_COLOR
|
||||
appearance_flags = HAS_SKIN_COLOR | HAS_HAIR_COLOR
|
||||
spawn_flags = CAN_JOIN | IS_WHITELISTED
|
||||
|
||||
blood_color = "#1F181F"
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
brute_mod = 0.2 //note to self: remove is_synthetic checks for brmod and burnmod
|
||||
burn_mod = 0.8 //2x was a bit too much. we'll see how this goes.
|
||||
toxins_mod = 1 //they're not used to all our weird human bacteria.
|
||||
breakcuffs = list(MALE,FEMALE,NEUTER)
|
||||
|
||||
speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
|
||||
speech_chance = 100
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
if(HULK in mutations)
|
||||
return 1
|
||||
|
||||
if (get_species() == "Unathi" && gender == "male")
|
||||
if(src.gender in src.species.breakcuffs)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
@@ -127,7 +127,8 @@
|
||||
"<span class='warning'>You successfully break your [handcuffed.name].</span>"
|
||||
)
|
||||
|
||||
say(pick("RAAAAAAAARGH!", "HNNNNNNNNNGGGGGGH!", "GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", "AAAAAAARRRGH!" ))
|
||||
if((get_species() == "Unathi") || (HULK in mutations))
|
||||
say(pick("RAAAAAAAARGH!", "HNNNNNNNNNGGGGGGH!", "GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", "AAAAAAARRRGH!" ))
|
||||
|
||||
qdel(handcuffed)
|
||||
handcuffed = null
|
||||
|
||||
@@ -25,6 +25,7 @@ var/list/organ_cache = list()
|
||||
germ_level = 0
|
||||
var/datum/dna/dna
|
||||
var/datum/species/species
|
||||
var/emp_coeff = 1 //coefficient for damages taken by EMP, if the organ is robotic.
|
||||
|
||||
/obj/item/organ/Destroy()
|
||||
if(!owner)
|
||||
@@ -265,13 +266,13 @@ var/list/organ_cache = list()
|
||||
return
|
||||
switch (severity)
|
||||
if (1.0)
|
||||
take_damage(20)
|
||||
take_damage(rand(7,20) * emp_coeff)
|
||||
return
|
||||
if (2.0)
|
||||
take_damage(7)
|
||||
take_damage(rand(3,7) * emp_coeff)
|
||||
return
|
||||
if(3.0)
|
||||
take_damage(3)
|
||||
take_damage(rand(3) * emp_coeff)
|
||||
|
||||
/obj/item/organ/proc/removed(var/mob/living/user)
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
var/can_grasp //It would be more appropriate if these two were named "affects_grasp" and "affects_stand" at this point
|
||||
var/can_stand
|
||||
var/body_hair
|
||||
var/painted = 0
|
||||
|
||||
/obj/item/organ/external/Destroy()
|
||||
if(parent && parent.children)
|
||||
@@ -343,10 +344,14 @@ This function completely restores a damaged organ to perfect condition.
|
||||
*/
|
||||
/obj/item/organ/external/rejuvenate()
|
||||
damage_state = "00"
|
||||
if(status & 128) //Robotic organs stay robotic. Fix because right click rejuvinate makes IPC's organs organic.
|
||||
status = 128
|
||||
else
|
||||
status = 0
|
||||
src.status &= ~ORGAN_BROKEN
|
||||
src.status &= ~ORGAN_BLEEDING
|
||||
src.status &= ~ORGAN_SPLINTED
|
||||
src.status &= ~ORGAN_CUT_AWAY
|
||||
src.status &= ~ORGAN_DESTROYED
|
||||
src.status &= ~ORGAN_DEAD
|
||||
src.status &= ~ORGAN_MUTATED
|
||||
src.status &= ~ORGAN_SPLINTED
|
||||
perma_injury = 0
|
||||
brute_dam = 0
|
||||
burn_dam = 0
|
||||
@@ -932,10 +937,14 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
if(company)
|
||||
model = company
|
||||
var/datum/robolimb/R = all_robolimbs[company]
|
||||
if(species && !(species.name in R.species_can_use))
|
||||
R = basic_robolimb
|
||||
if(R)
|
||||
force_icon = R.icon
|
||||
name = "[R.company] [initial(name)]"
|
||||
desc = "[R.desc]"
|
||||
if(R.paintable)
|
||||
painted = 1
|
||||
|
||||
dislocated = -1 //TODO, make robotic limbs a separate type, remove snowflake
|
||||
cannot_break = 1
|
||||
|
||||
@@ -95,6 +95,9 @@ var/global/list/limb_icon_cache = list()
|
||||
|
||||
if(force_icon)
|
||||
mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]")
|
||||
if(painted)
|
||||
if(s_col && s_col.len >= 3)
|
||||
mob_icon.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD)
|
||||
else
|
||||
if(!dna)
|
||||
mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]")
|
||||
|
||||
@@ -16,6 +16,7 @@ var/global/datum/robolimb/basic_robolimb
|
||||
var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from.
|
||||
var/unavailable_at_chargen // If set, not available at chargen.
|
||||
var/list/species_can_use = list("Human","Skrell","Tajara","Zhan-Khaza","M'sai","Unathi","Vaurca Worker","Vaurca Warrior","Baseline Frame")
|
||||
var/paintable = 0 //tired of istype exceptions. bullshirt to find, and by god do i know it after this project.
|
||||
|
||||
/datum/robolimb/bishop
|
||||
company = "Bishop Cybernetics"
|
||||
@@ -40,8 +41,9 @@ var/global/datum/robolimb/basic_robolimb
|
||||
/datum/robolimb/ipc
|
||||
company = "Hephaestus Integrated Limb"
|
||||
desc = "This limb is simple and functional; no effort has been made to make it look human."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/ipc.dmi'
|
||||
icon = 'icons/mob/human_races/r_machine.dmi'
|
||||
unavailable_at_chargen = 1
|
||||
paintable = 1
|
||||
|
||||
/datum/robolimb/industrial
|
||||
company = "Hephaestus Industrial Limb"
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
organ_tag = "brain"
|
||||
parent_organ = "chest"
|
||||
vital = 1
|
||||
emp_coeff = 0.1
|
||||
|
||||
/obj/item/organ/data
|
||||
name = "data core"
|
||||
@@ -184,6 +185,7 @@
|
||||
icon = 'icons/obj/cloning.dmi'
|
||||
icon_state = "harddisk"
|
||||
vital = 0
|
||||
emp_coeff = 0.1
|
||||
|
||||
/obj/item/organ/data/New()
|
||||
robotize()
|
||||
@@ -197,9 +199,10 @@
|
||||
organ_tag = "shielded cell"
|
||||
parent_organ = "chest"
|
||||
vital = 1
|
||||
emp_coeff = 0.1
|
||||
|
||||
/obj/item/organ/cell/New()
|
||||
mechassist()
|
||||
robotize()
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/head/terminator
|
||||
@@ -209,70 +212,105 @@
|
||||
max_damage = 50 //made same as arm, since it is not vital
|
||||
min_broken_damage = 30
|
||||
encased = null
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/optical_sensorterminator
|
||||
name = "optical sensor"
|
||||
organ_tag = "optics"
|
||||
parent_organ = "head"
|
||||
icon = 'icons/obj/robot_component.dmi'
|
||||
icon_state = "camera"
|
||||
dead_icon = "camera_broken"
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/optical_sensor/terminator/New()
|
||||
robotize()
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/organ/external/head/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/chest/terminator
|
||||
dislocated = -1
|
||||
encased = null
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/chest/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/groin/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/groin/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/arm/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/arm/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/arm/right/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/arm/right/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/leg/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/leg/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/leg/right/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/leg/right/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/foot/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/foot/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/foot/right/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/foot/right/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/hand/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/hand/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/hand/right/terminator
|
||||
dislocated = -1
|
||||
emp_coeff = 0.5
|
||||
|
||||
/obj/item/organ/external/hand/right/terminator/New()
|
||||
mechassist("Hephaestus Vulcanite Limb")
|
||||
robotize("Hephaestus Vulcanite Limb")
|
||||
..()
|
||||
|
||||
/obj/item/organ/external/head/industrial
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
"<span class='danger'>You hear a low pulsing roar!</span>"
|
||||
)
|
||||
is_charging = 1
|
||||
sleep(90)
|
||||
sleep(60)
|
||||
is_charging = 0
|
||||
if(!istype(user.get_active_hand(), src))
|
||||
return
|
||||
@@ -430,7 +430,7 @@
|
||||
"<span class='danger'>You hear a low pulsing roar!</span>"
|
||||
)
|
||||
is_charging = 1
|
||||
sleep(90)
|
||||
sleep(60)
|
||||
is_charging = 0
|
||||
if(!istype(user.get_active_hand(), src))
|
||||
return
|
||||
|
||||
@@ -338,7 +338,7 @@
|
||||
|
||||
|
||||
fire_delay = 20
|
||||
accuracy = -4
|
||||
accuracy = -1
|
||||
|
||||
//wielding information
|
||||
fire_delay_wielded = 5
|
||||
@@ -387,11 +387,11 @@
|
||||
auto_eject = 1
|
||||
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
||||
recoil = 3
|
||||
|
||||
|
||||
accuracy = -2
|
||||
fire_delay = 10
|
||||
recoil_wielded = 0
|
||||
|
||||
|
||||
fire_delay_wielded = 6
|
||||
accuracy_wielded = 0
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.9 KiB |
Reference in New Issue
Block a user