mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 00:21:11 +01:00
Merge branch 'master' into development
# Conflicts: # html/changelogs/.all_changelog.yml # maps/aurora/aurora-4_mainlevel.dmm # maps/aurora/aurora-7_roof.dmm
This commit is contained in:
@@ -266,6 +266,9 @@
|
||||
qdel(src)
|
||||
|
||||
/mob/living/bot/secbot/ed209/RangedAttack(var/atom/A)
|
||||
if(!(target in view(7, src)))
|
||||
walk_to(src, target, 6, move_to_delay)
|
||||
return
|
||||
if(last_shot + shot_delay > world.time)
|
||||
src << "You are not ready to fire yet!"
|
||||
return
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
|
||||
/mob/living/bot/secbot/turn_off()
|
||||
..()
|
||||
walk_to(src, src, 0, move_to_delay)
|
||||
target = null
|
||||
frustration = 0
|
||||
mode = SECBOT_IDLE
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
#define NYMPH_ABSORB_NUTRITION 650
|
||||
#define NYMPH_ABSORB_DEAD_FACTOR 0.3
|
||||
|
||||
#define REGROW_FOOD_REQ 100
|
||||
#define REGROW_ENERGY_REQ 40
|
||||
#define REGROW_FOOD_REQ 150
|
||||
#define REGROW_ENERGY_REQ 60
|
||||
|
||||
|
||||
#define LANGUAGE_POINTS_TO_LEARN 3 //The number of samples of a language required to learn it
|
||||
@@ -118,12 +118,9 @@ var/list/diona_banned_languages = list(
|
||||
//Most medicines don't work on diona, but physical treatment for external wounds helps a little,
|
||||
//and some alternative things that are toxic to other life, such as radium and mutagen, will benefit diona
|
||||
/mob/living/carbon/proc/diona_handle_regeneration(var/datum/dionastats/DS)
|
||||
if ((DS.stored_energy < 1 && !total_radiation)) //we need energy or radiation to heal
|
||||
if ((DS.stored_energy < 1 && !total_radiation)) //we need energy or total_radiation to heal
|
||||
return FALSE
|
||||
|
||||
var/radiation = max(total_radiation, 0)
|
||||
|
||||
|
||||
var/value //A little variable we'll reuse to optimise
|
||||
var/CL //Cached loss, to save on repeatedly recalculating it
|
||||
var/HF = DS.healing_factor //I don't know if fetching a variable from an object repeatedly is slow, but this seems safe
|
||||
@@ -134,10 +131,10 @@ var/list/diona_banned_languages = list(
|
||||
if (getHalLoss() > 0)
|
||||
CL = getHalLoss()
|
||||
if (CL > 0)
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2*HF)
|
||||
if (total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2*HF)
|
||||
adjustHalLoss(value*-3,1) //Halloss heals more quickly
|
||||
radiation -= value
|
||||
total_radiation -= value
|
||||
CL = getHalLoss()
|
||||
|
||||
value = min(CL, DS.stored_energy, 1*HF)
|
||||
@@ -151,10 +148,10 @@ var/list/diona_banned_languages = list(
|
||||
CL = getBruteLoss()
|
||||
|
||||
if (CL > 0)
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2*HF)
|
||||
if (total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2*HF)
|
||||
adjustBruteLoss(value*-1)
|
||||
radiation -= value
|
||||
total_radiation -= value
|
||||
CL = getBruteLoss() //After adjusting it, recalculate for the lighthealing
|
||||
|
||||
value = min(CL, DS.stored_energy, 1*HF)
|
||||
@@ -163,10 +160,10 @@ var/list/diona_banned_languages = list(
|
||||
|
||||
CL = getFireLoss()
|
||||
if (CL > 0)
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2*HF)
|
||||
if (total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2*HF)
|
||||
adjustFireLoss(value*-1)
|
||||
radiation -= value
|
||||
total_radiation -= value
|
||||
CL = getFireLoss()
|
||||
|
||||
value = min(CL, DS.stored_energy, 1*HF)
|
||||
@@ -175,10 +172,10 @@ var/list/diona_banned_languages = list(
|
||||
|
||||
CL = stunned
|
||||
if (CL > 0)
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2*HF)
|
||||
if (total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2*HF)
|
||||
stunned -= value
|
||||
radiation -= value
|
||||
total_radiation -= value
|
||||
CL = stunned
|
||||
|
||||
value = min(CL, DS.stored_energy, 1*HF)
|
||||
@@ -188,10 +185,10 @@ var/list/diona_banned_languages = list(
|
||||
|
||||
CL = weakened
|
||||
if (CL > 0)
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2*HF)
|
||||
if (total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2*HF)
|
||||
weakened -= value
|
||||
radiation -= value
|
||||
total_radiation -= value
|
||||
CL = weakened
|
||||
|
||||
value = min(CL, DS.stored_energy, 1*HF)
|
||||
@@ -202,10 +199,10 @@ var/list/diona_banned_languages = list(
|
||||
if (life_tick % LIFETICK_INTERVAL_LESS == 0)
|
||||
CL = getToxLoss()
|
||||
if (CL > 0)
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2*HF*LIFETICK_INTERVAL_LESS)
|
||||
if (total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2*HF*LIFETICK_INTERVAL_LESS)
|
||||
adjustToxLoss(value*-1)
|
||||
radiation -= value
|
||||
total_radiation -= value
|
||||
CL = getToxLoss()
|
||||
|
||||
value = min(CL, DS.stored_energy, 1*HF*LIFETICK_INTERVAL_LESS)
|
||||
@@ -215,10 +212,10 @@ var/list/diona_banned_languages = list(
|
||||
|
||||
CL = getCloneLoss()
|
||||
if (CL > 0)
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2*HF*LIFETICK_INTERVAL_LESS)
|
||||
if (total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2*HF*LIFETICK_INTERVAL_LESS)
|
||||
adjustCloneLoss(value/-2.5) //Genetic damage, should diona ever suffer it, heals much more slowly.
|
||||
radiation -= value //Most likely the only time they'll cloneloss is escaping from being partially devoured
|
||||
total_radiation -= value //Most likely the only time they'll cloneloss is escaping from being partially devoured
|
||||
CL = getCloneLoss()
|
||||
|
||||
value = min(CL, DS.stored_energy, 1*HF*LIFETICK_INTERVAL_LESS)
|
||||
@@ -229,21 +226,15 @@ var/list/diona_banned_languages = list(
|
||||
updatehealth()
|
||||
return FALSE
|
||||
|
||||
// A little inter-proc communication.
|
||||
// We need the continued radiation count for the sake of actually working.
|
||||
return max(radiation, 0)
|
||||
|
||||
// Continuation of the Diona regen proc, but for human specific actions.
|
||||
/mob/living/carbon/human/diona_handle_regeneration(var/datum/dionastats/DS)
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
// We cancel with regening organ, as it's meant to stop all other regenerative
|
||||
// processes. Just pray to shit the timers don't implode.
|
||||
if (!. || DS.regening_organ)
|
||||
if ((!total_radiation && !DS.healing_factor && !DS.stored_energy) || DS.regening_organ)
|
||||
return FALSE
|
||||
|
||||
var/radiation = .
|
||||
|
||||
//Next up, healing any damage to internal organs.
|
||||
//Diona really only have one critical organ, the light receptor node in the head.
|
||||
//If badly damaged, the light receptor reduces the effectiveness of incoming light
|
||||
@@ -253,10 +244,10 @@ var/list/diona_banned_languages = list(
|
||||
for (var/obj/item/organ/O in bad_internal_organs)
|
||||
var/CL = O.damage
|
||||
var/value
|
||||
if (radiation > 0)
|
||||
value = min(CL, radiation, 2 * DS.healing_factor * LIFETICK_INTERVAL_LESS)
|
||||
if(total_radiation > 0)
|
||||
value = min(CL, total_radiation, 2 * DS.healing_factor * LIFETICK_INTERVAL_LESS)
|
||||
O.damage += value/-1.5
|
||||
radiation -= value
|
||||
total_radiation -= value
|
||||
CL = getCloneLoss()
|
||||
|
||||
value = min(CL, DS.stored_energy, 1 * DS.healing_factor * LIFETICK_INTERVAL_LESS)
|
||||
@@ -426,7 +417,7 @@ var/list/diona_banned_languages = list(
|
||||
var/HP = 1 //HP = health-percentage
|
||||
if (DS.LMS == 4)
|
||||
if (HP < 0.6)
|
||||
to_chat(src, "<span class='danger'>The darkness burns. Your nymphs decay and wilt You are in mortal danger!</span>")
|
||||
to_chat(src, "<span class='danger'>The darkness burns. Your nymphs decay and wilt. You are in mortal danger!</span>")
|
||||
DS.LMS = 5
|
||||
|
||||
else if (DS.LMS == 5)
|
||||
|
||||
@@ -7,22 +7,35 @@
|
||||
var/skipears = 0
|
||||
var/skipeyes = 0
|
||||
var/skipface = 0
|
||||
var/skipbody = 0
|
||||
|
||||
//exosuits and helmets obscure our view and stuff.
|
||||
if(wear_suit)
|
||||
skipbody |= wear_suit.body_parts_covered
|
||||
skipgloves = wear_suit.flags_inv & HIDEGLOVES
|
||||
skipsuitstorage = wear_suit.flags_inv & HIDESUITSTORAGE
|
||||
skipjumpsuit = wear_suit.flags_inv & HIDEJUMPSUIT
|
||||
skipshoes = wear_suit.flags_inv & HIDESHOES
|
||||
|
||||
if(head)
|
||||
skipbody |= head.body_parts_covered
|
||||
skipbody &= ~HEAD // head covering incorrectly hides 'face' damage
|
||||
skipbody |= (skipbody & FACE) ? HEAD : 0 // if you hide face damage, however, then go ahead and hide head damage, since that's where face damage is
|
||||
skipmask = head.flags_inv & HIDEMASK
|
||||
skipeyes = head.flags_inv & HIDEEYES
|
||||
skipears = head.flags_inv & HIDEEARS
|
||||
skipface = head.flags_inv & HIDEFACE
|
||||
|
||||
if(wear_mask)
|
||||
skipbody |= wear_mask.body_parts_covered
|
||||
skipbody |= (wear_mask.body_parts_covered & FACE) ? HEAD : 0 // same as above
|
||||
skipface |= wear_mask.flags_inv & HIDEFACE
|
||||
|
||||
if(w_uniform)
|
||||
skipbody |= w_uniform.body_parts_covered
|
||||
|
||||
if(gloves)
|
||||
skipbody |= gloves.body_parts_covered
|
||||
|
||||
var/list/msg = list("<span class='info'>*---------*\nThis is ")
|
||||
|
||||
@@ -261,9 +274,11 @@
|
||||
wound_flavor_text["[organ_descriptor]"] = "<span class='warning'><b>[T.He] [T.has] a stump where [T.his] [organ_descriptor] should be.</b></span>\n"
|
||||
else
|
||||
continue
|
||||
|
||||
|
||||
for(var/obj/item/organ/external/temp in organs)
|
||||
if(temp)
|
||||
if(skipbody & temp.body_part)
|
||||
continue
|
||||
if(temp.status & ORGAN_ROBOT)
|
||||
if(!(temp.brute_dam + temp.burn_dam))
|
||||
//wound_flavor_text["[temp.name]"] = "<span class='warning'>[T.He] [T.has] a robot [temp.name]!</span>\n"
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
else if(E.status & ORGAN_BROKEN)
|
||||
tally += 1.5
|
||||
|
||||
if(shock_stage >= 10) tally += 3
|
||||
|
||||
if (!(species && (species.flags & NO_PAIN)))
|
||||
if(shock_stage >= 10) tally += 3
|
||||
|
||||
if(aiming && aiming.aiming_at) tally += 5 // Iron sights make you slower, it's a well-known fact.
|
||||
|
||||
|
||||
@@ -274,7 +274,7 @@
|
||||
|
||||
examine_color = "#bc4b00"
|
||||
|
||||
blurb = "The Xion Manufacturing Group, being a subsidiary of Hephaestus Industries, saw the original Industrial models and wanted to develop their own chassis based off of the original design. The result is the Xion Industrial model. Sturdy and strong, this chassis is quite powerful and equally durable, with an ample power cell and improved actuators for carrying the increased weight of the body. The Xion model also retains sturdiness without covering the chassis in plating, allowing for the cooling systems to vent heat much easier than the Hephaestus-brand model. This unit cannot perform EVA"
|
||||
blurb = "The Xion Manufacturing Group, being a subsidiary of Hephaestus Industries, saw the original Industrial models and wanted to develop their own chassis based off of the original design. The result is the Xion Industrial model. Sturdy and strong, this chassis is quite powerful and equally durable, with an ample power cell and improved actuators for carrying the increased weight of the body. The Xion model also retains sturdiness without covering the chassis in plating, allowing for the cooling systems to vent heat much easier than the Hephaestus-brand model. This unit cannot perform EVA without a suit."
|
||||
|
||||
has_limbs = list(
|
||||
"chest" = list("path" = /obj/item/organ/external/chest/industrial/xion),
|
||||
|
||||
@@ -94,6 +94,10 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/proc/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
|
||||
if(!affecting)
|
||||
return
|
||||
|
||||
user.visible_message("<span class='warning'>[user] [pick(attack_verb)] [target] in the [affecting.name]!</span>")
|
||||
playsound(user.loc, attack_sound, 25, 1, -1)
|
||||
|
||||
@@ -131,6 +135,10 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/punch/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
|
||||
if(!affecting)
|
||||
return
|
||||
|
||||
var/organ = affecting.name
|
||||
|
||||
attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case.
|
||||
@@ -203,6 +211,10 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
|
||||
if(!affecting)
|
||||
return
|
||||
|
||||
var/organ = affecting.name
|
||||
|
||||
attack_damage = Clamp(attack_damage, 1, 5)
|
||||
@@ -246,7 +258,12 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/stomp/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
|
||||
var/obj/item/organ/external/affecting = target.get_organ(zone)
|
||||
|
||||
if(!affecting)
|
||||
return
|
||||
|
||||
var/organ = affecting.name
|
||||
|
||||
var/obj/item/clothing/shoes = user.shoes
|
||||
|
||||
attack_damage = Clamp(attack_damage, 1, 5)
|
||||
|
||||
@@ -281,6 +281,9 @@
|
||||
|
||||
/mob/living/carbon/slime/proc/handle_AI() // the master AI process
|
||||
|
||||
if(Victim && Victim.stat & DEAD)
|
||||
Victim = null
|
||||
|
||||
if(stat == DEAD || client || Victim) return // If we're dead or have a client, we don't need AI, if we're feeding, we continue feeding
|
||||
AIproc = 1
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ calculate text size per text.
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
if(!R.taste_mult)
|
||||
continue
|
||||
if(R.id == "nutriment") //this is ugly but apparently only nutriment (not subtypes) has taste data TODO figure out why
|
||||
if(R.id == "nutriment" || R.id == "synnutriment") //this is ugly but apparently only nutriment (not subtypes) has taste data TODO figure out why
|
||||
var/list/taste_data = R.get_data()
|
||||
for(var/taste in taste_data)
|
||||
if(taste in tastes)
|
||||
|
||||
@@ -749,7 +749,6 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/weapon/gripper/chemistry(src)
|
||||
src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src)
|
||||
src.modules += new /obj/item/device/reagent_scanner/adv(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/storage/bag/plants(src)
|
||||
src.modules += new /obj/item/weapon/pen/robopen(src)
|
||||
src.emag = new /obj/item/weapon/hand_tele(src)
|
||||
|
||||
Reference in New Issue
Block a user