mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-11 23:23:28 +01:00
Makes Mobs Lazier and Removes Hard References (#13693)
* Makes Mobs Lazier and Removes Hard References * fluff
This commit is contained in:
@@ -75,8 +75,8 @@
|
||||
if(hitsound)
|
||||
playsound(loc, hitsound, get_clamped_volume(), 1, -1)
|
||||
|
||||
user.lastattacked = M
|
||||
M.lastattacker = user
|
||||
M.lastattacker = user.real_name
|
||||
M.lastattackerckey = user.ckey
|
||||
|
||||
user.do_attack_animation(M)
|
||||
. = M.attacked_by(src, user, def_zone)
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
var/role_alt_title
|
||||
|
||||
var/datum/job/assigned_job
|
||||
var/list/kills = list()
|
||||
var/list/datum/objective/objectives = list()
|
||||
var/list/datum/objective/special_verbs = list()
|
||||
var/list/targets = list()
|
||||
|
||||
@@ -75,8 +75,6 @@
|
||||
B.transfer_identity(C)
|
||||
C.death()
|
||||
add_attack_logs(target, C, "Magically debrained INTENT: [uppertext(target.a_intent)]")*/
|
||||
if(C.stomach_contents && (item_to_retrieve in C.stomach_contents))
|
||||
C.stomach_contents -= item_to_retrieve
|
||||
for(var/X in C.bodyparts)
|
||||
var/obj/item/organ/external/part = X
|
||||
if(item_to_retrieve in part.embedded_objects)
|
||||
|
||||
@@ -29,8 +29,9 @@
|
||||
var/laname
|
||||
var/lakey
|
||||
if(H.lastattacker)
|
||||
laname = sanitizeSQL(H.lastattacker:real_name)
|
||||
lakey = sanitizeSQL(H.lastattacker:key)
|
||||
laname = sanitizeSQL(H.lastattacker)
|
||||
if(H.lastattackerckey)
|
||||
lakey = sanitizeSQL(H.lastattackerckey)
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
// to_chat(world, "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.getBrainLoss()], [H.getOxyLoss()])")
|
||||
@@ -64,8 +65,9 @@
|
||||
var/laname
|
||||
var/lakey
|
||||
if(H.lastattacker)
|
||||
laname = sanitizeSQL(H.lastattacker:real_name)
|
||||
lakey = sanitizeSQL(H.lastattacker:key)
|
||||
laname = sanitizeSQL(H.lastattacker)
|
||||
if(H.lastattackerckey)
|
||||
lakey = sanitizeSQL(H.lastattackerckey)
|
||||
var/sqltime = time2text(world.realtime, "YYYY-MM-DD hh:mm:ss")
|
||||
var/coord = "[H.x], [H.y], [H.z]"
|
||||
// to_chat(world, "INSERT INTO death (name, byondkey, job, special, pod, tod, laname, lakey, gender, bruteloss, fireloss, brainloss, oxyloss) VALUES ('[sqlname]', '[sqlkey]', '[sqljob]', '[sqlspecial]', '[sqlpod]', '[sqltime]', '[laname]', '[lakey]', '[H.gender]', [H.bruteloss], [H.getFireLoss()], [H.brainloss], [H.getOxyLoss()])")
|
||||
|
||||
@@ -480,8 +480,8 @@ Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
H.update_inv_r_hand()
|
||||
|
||||
/obj/item/abductor_baton/proc/StunAttack(mob/living/L,mob/living/user)
|
||||
user.lastattacked = L
|
||||
L.lastattacker = user
|
||||
L.lastattacker = user.real_name
|
||||
L.lastattackerckey = user.ckey
|
||||
|
||||
L.Stun(7)
|
||||
L.Weaken(7)
|
||||
|
||||
@@ -573,9 +573,10 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
|
||||
// /vg/; Vox Inviolate for humans :V
|
||||
/datum/objective/minimize_casualties
|
||||
explanation_text = "Minimise casualties."
|
||||
|
||||
/datum/objective/minimize_casualties/check_completion()
|
||||
if(owner.kills.len>5) return 0
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
//Vox heist objectives.
|
||||
|
||||
@@ -781,16 +782,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
|
||||
explanation_text = "Follow the Inviolate. Minimise death and loss of resources."
|
||||
|
||||
/datum/objective/heist/inviolate_death/check_completion()
|
||||
var/vox_allowed_kills = 3 // The number of people the vox can accidently kill. Mostly a counter to people killing themselves if a raider touches them to force fail.
|
||||
var/vox_total_kills = 0
|
||||
|
||||
var/datum/game_mode/heist/H = SSticker.mode
|
||||
for(var/datum/mind/raider in H.raiders)
|
||||
vox_total_kills += raider.kills.len // Kills are listed in the mind; uses this to calculate vox kills
|
||||
|
||||
if(vox_total_kills > vox_allowed_kills) return 0
|
||||
return 1
|
||||
|
||||
return TRUE
|
||||
|
||||
// Traders
|
||||
// These objectives have no check_completion, they exist only to tell Sol Traders what to aim for.
|
||||
|
||||
@@ -166,10 +166,6 @@
|
||||
var/mob/M = A
|
||||
if(istype(firer, /mob))
|
||||
add_attack_logs(firer, M, "Mecha-shot with <b>[src]</b>")
|
||||
if(!iscarbon(firer))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = firer
|
||||
else
|
||||
add_attack_logs(null, M, "Mecha-shot with <b>[src]</b>")
|
||||
if(life <= 0)
|
||||
|
||||
@@ -147,10 +147,6 @@
|
||||
to_chat(user, "<span class='notice'>You inject yourself with [src].</span>")
|
||||
|
||||
add_attack_logs(user, M, attack_log, ATKLOG_ALL)
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
|
||||
inject(M, user)
|
||||
used = TRUE
|
||||
|
||||
@@ -189,8 +189,8 @@
|
||||
L.apply_effect(STUTTER, stunforce)
|
||||
|
||||
if(user)
|
||||
user.lastattacked = L
|
||||
L.lastattacker = user
|
||||
L.lastattacker = user.real_name
|
||||
L.lastattackerckey = user.ckey
|
||||
L.visible_message("<span class='danger'>[user] has stunned [L] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] has stunned you with [src]!</span>")
|
||||
add_attack_logs(user, L, "stunned")
|
||||
|
||||
@@ -73,9 +73,11 @@
|
||||
..()
|
||||
if((ishuman(hit_atom)))
|
||||
var/mob/living/carbon/human/H = hit_atom
|
||||
if(H.r_hand == src) return
|
||||
if(H.l_hand == src) return
|
||||
var/mob/A = H.LAssailant
|
||||
if(H.r_hand == src)
|
||||
return
|
||||
if(H.l_hand == src)
|
||||
return
|
||||
var/mob/A = thrownby
|
||||
if((H in GLOB.team_alpha) && (A in GLOB.team_alpha))
|
||||
to_chat(A, "<span class='warning'>He's on your team!</span>")
|
||||
return
|
||||
@@ -89,4 +91,3 @@
|
||||
playsound(src, 'sound/items/dodgeball.ogg', 50, 1)
|
||||
visible_message("<span class='danger'>[H] HAS BEEN ELIMINATED!</span>")
|
||||
H.melt()
|
||||
return
|
||||
|
||||
@@ -278,11 +278,6 @@
|
||||
if(!UserOverride)
|
||||
add_attack_logs(user, occupant, "Gibbed in [src]", !!occupant.ckey ? ATKLOG_FEW : ATKLOG_ALL)
|
||||
|
||||
if(!iscarbon(user))
|
||||
occupant.LAssailant = null
|
||||
else
|
||||
occupant.LAssailant = user
|
||||
|
||||
else //this looks ugly but it's better than a copy-pasted startgibbing proc override
|
||||
occupant.create_attack_log("Was gibbed by <b>an autogibber (\the [src])</b>")
|
||||
add_attack_logs(src, occupant, "gibbed")
|
||||
|
||||
@@ -136,14 +136,11 @@ Doesn't work on other aliens/AI.*/
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc())
|
||||
if(stomach_contents.len)
|
||||
if(LAZYLEN(stomach_contents))
|
||||
for(var/mob/M in src)
|
||||
if(M in stomach_contents)
|
||||
stomach_contents.Remove(M)
|
||||
M.forceMove(loc)
|
||||
//Paralyse(10)
|
||||
src.visible_message("<span class='alertalien'><B>[src] hurls out the contents of [p_their()] stomach!</span>")
|
||||
return
|
||||
LAZYREMOVE(stomach_contents, M)
|
||||
M.forceMove(drop_location())
|
||||
visible_message("<span class='alertalien'><B>[src] hurls out the contents of [p_their()] stomach!</span>")
|
||||
|
||||
/mob/living/carbon/proc/getPlasma()
|
||||
var/obj/item/organ/internal/xenos/plasmavessel/vessel = get_int_organ(/obj/item/organ/internal/xenos/plasmavessel)
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/handle_atom_del(atom/A)
|
||||
if(A in processing_patches)
|
||||
processing_patches -= A
|
||||
LAZYREMOVE(processing_patches, A)
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/blob_act(obj/structure/blob/B)
|
||||
@@ -51,41 +50,40 @@
|
||||
|
||||
/mob/living/carbon/var/last_stomach_attack //defining this here because no one would look in carbon_defines for it
|
||||
|
||||
/mob/living/carbon/relaymove(var/mob/user, direction)
|
||||
if(user in src.stomach_contents)
|
||||
if(last_stomach_attack + STOMACH_ATTACK_DELAY > world.time) return
|
||||
/mob/living/carbon/relaymove(mob/user, direction)
|
||||
if(LAZYLEN(stomach_contents))
|
||||
if(user in stomach_contents)
|
||||
if(last_stomach_attack + STOMACH_ATTACK_DELAY > world.time)
|
||||
return
|
||||
|
||||
last_stomach_attack = world.time
|
||||
for(var/mob/M in hearers(4, src))
|
||||
if(M.client)
|
||||
M.show_message(text("<span class='warning'>You hear something rumbling inside [src]'s stomach...</span>"), 2)
|
||||
|
||||
var/obj/item/I = user.get_active_hand()
|
||||
if(I && I.force)
|
||||
var/d = rand(round(I.force / 4), I.force)
|
||||
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/obj/item/organ/external/organ = H.get_organ("chest")
|
||||
if(istype(organ))
|
||||
if(organ.receive_damage(d, 0))
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
H.updatehealth("stomach attack")
|
||||
|
||||
else
|
||||
src.take_organ_damage(d)
|
||||
|
||||
for(var/mob/M in viewers(user, null))
|
||||
last_stomach_attack = world.time
|
||||
for(var/mob/M in hearers(4, src))
|
||||
if(M.client)
|
||||
M.show_message(text("<span class='warning'><B>[user] attacks [src]'s stomach wall with the [I.name]!</span>"), 2)
|
||||
playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
M.show_message(text("<span class='warning'>You hear something rumbling inside [src]'s stomach...</span>"), 2)
|
||||
|
||||
if(prob(src.getBruteLoss() - 50))
|
||||
for(var/atom/movable/A in stomach_contents)
|
||||
A.forceMove(drop_location())
|
||||
stomach_contents.Remove(A)
|
||||
src.gib()
|
||||
var/obj/item/I = user.get_active_hand()
|
||||
if(I && I.force)
|
||||
var/d = rand(round(I.force / 4), I.force)
|
||||
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/obj/item/organ/external/organ = H.get_organ("chest")
|
||||
if(istype(organ))
|
||||
if(organ.receive_damage(d, 0))
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
H.updatehealth("stomach attack")
|
||||
|
||||
else
|
||||
take_organ_damage(d)
|
||||
|
||||
for(var/mob/M in viewers(user, null))
|
||||
if(M.client)
|
||||
M.show_message(text("<span class='warning'><B>[user] attacks [src]'s stomach wall with the [I.name]!</span>"), 2)
|
||||
playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
|
||||
if(prob(getBruteLoss() - 50))
|
||||
gib()
|
||||
|
||||
#undef STOMACH_ATTACK_DELAY
|
||||
|
||||
@@ -140,9 +138,8 @@
|
||||
I.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
|
||||
|
||||
for(var/mob/M in src)
|
||||
if(M in src.stomach_contents)
|
||||
src.stomach_contents.Remove(M)
|
||||
M.forceMove(get_turf(src))
|
||||
LAZYREMOVE(stomach_contents, M)
|
||||
M.forceMove(drop_location())
|
||||
visible_message("<span class='danger'>[M] bursts out of [src]!</span>")
|
||||
|
||||
/mob/living/carbon/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = FALSE, override = FALSE, tesla_shock = FALSE, illusion = FALSE, stun = TRUE)
|
||||
@@ -1069,10 +1066,6 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
|
||||
|
||||
/mob/living/carbon/proc/forceFedAttackLog(var/obj/item/reagent_containers/food/toEat, mob/user)
|
||||
add_attack_logs(user, src, "Fed [toEat]. Reagents: [toEat.reagents.log_list(toEat)]", toEat.reagents.harmless_helper() ? ATKLOG_ALMOSTALL : null)
|
||||
if(!iscarbon(user))
|
||||
LAssailant = null
|
||||
else
|
||||
LAssailant = user
|
||||
|
||||
|
||||
/*TO DO - If/when stomach organs are introduced, override this at the human level sending the item to the stomach
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
/mob/living/carbon
|
||||
gender = MALE
|
||||
pressure_resistance = 15
|
||||
var/list/stomach_contents = list()
|
||||
var/list/processing_patches = list()
|
||||
var/list/stomach_contents
|
||||
var/list/processing_patches
|
||||
var/list/internal_organs = list()
|
||||
var/list/internal_organs_slot = list() //Same as above, but stores "slot ID" - "organ" pairs for easy access.
|
||||
var/antibodies = 0
|
||||
|
||||
var/life_tick = 0 // The amount of life ticks that have processed on this mob.
|
||||
|
||||
|
||||
@@ -32,9 +32,8 @@
|
||||
E.droplimb(DROPLIMB_SHARP)
|
||||
|
||||
for(var/mob/M in src)
|
||||
if(M in stomach_contents)
|
||||
stomach_contents.Remove(M)
|
||||
M.forceMove(get_turf(src))
|
||||
LAZYREMOVE(stomach_contents, M)
|
||||
M.forceMove(drop_location())
|
||||
visible_message("<span class='danger'>[M] bursts out of [src]!</span>")
|
||||
|
||||
if(!isSynthetic())
|
||||
@@ -106,11 +105,6 @@
|
||||
//Handle species-specific deaths.
|
||||
dna.species.handle_death(gibbed, src)
|
||||
|
||||
if(ishuman(LAssailant))
|
||||
var/mob/living/carbon/human/H=LAssailant
|
||||
if(H.mind)
|
||||
H.mind.kills += "[key_name(src)]"
|
||||
|
||||
if(SSticker && SSticker.mode)
|
||||
// log_world("k")
|
||||
sql_report_death(src)
|
||||
|
||||
@@ -387,11 +387,6 @@ emp_act
|
||||
to_chat(user, "<span class='warning'>You hack off a chunk of meat from [name]</span>")
|
||||
if(!meatleft)
|
||||
add_attack_logs(user, src, "Chopped up into meat")
|
||||
if(!iscarbon(user))
|
||||
LAssailant = null
|
||||
else
|
||||
LAssailant = user
|
||||
|
||||
qdel(src)
|
||||
|
||||
var/obj/item/organ/external/affecting = get_organ(ran_zone(user.zone_selected))
|
||||
|
||||
@@ -37,7 +37,6 @@ GLOBAL_DATUM_INIT(default_martial_art, /datum/martial_art, new())
|
||||
var/obj/item/s_store = null
|
||||
|
||||
var/icon/stand_icon = null
|
||||
var/icon/lying_icon = null
|
||||
|
||||
var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life()
|
||||
|
||||
|
||||
@@ -352,21 +352,6 @@
|
||||
if(organ.receive_damage(damage, 0, sharp, used_weapon))
|
||||
H.UpdateDamageIcon()
|
||||
|
||||
if(H.LAssailant && ishuman(H.LAssailant)) //superheros still get the comical hit markers
|
||||
var/mob/living/carbon/human/A = H.LAssailant
|
||||
if(A.mind && (A.mind in (SSticker.mode.superheroes) || SSticker.mode.supervillains || SSticker.mode.greyshirts))
|
||||
var/list/attack_bubble_recipients = list()
|
||||
var/mob/living/user
|
||||
for(var/mob/O in viewers(user, src))
|
||||
if(O.client && O.has_vision(information_only=TRUE))
|
||||
attack_bubble_recipients.Add(O.client)
|
||||
spawn(0)
|
||||
var/image/dmgIcon = image('icons/effects/hit_blips.dmi', src, "dmg[rand(1,2)]",MOB_LAYER+1)
|
||||
dmgIcon.pixel_x = (!H.lying) ? rand(-3,3) : rand(-11,12)
|
||||
dmgIcon.pixel_y = (!H.lying) ? rand(-11,9) : rand(-10,1)
|
||||
flick_overlay(dmgIcon, attack_bubble_recipients, 9)
|
||||
|
||||
|
||||
if(BURN)
|
||||
H.damageoverlaytemp = 20
|
||||
damage = damage * burn_mod
|
||||
@@ -443,6 +428,9 @@
|
||||
else
|
||||
target.LAssailant = user
|
||||
|
||||
target.lastattacker = user.real_name
|
||||
target.lastattackerckey = user.ckey
|
||||
|
||||
var/damage = rand(user.dna.species.punchdamagelow, user.dna.species.punchdamagehigh)
|
||||
damage += attack.damage
|
||||
if(!damage)
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
if(stat != DEAD)
|
||||
handle_organs()
|
||||
|
||||
//stuff in the stomach
|
||||
if(LAZYLEN(stomach_contents))
|
||||
handle_stomach(times_fired)
|
||||
|
||||
. = ..()
|
||||
|
||||
if(QDELETED(src))
|
||||
@@ -254,14 +258,15 @@
|
||||
if(times_fired % 20==2) //dry off a bit once every 20 ticks or so
|
||||
wetlevel = max(wetlevel - 1,0)
|
||||
|
||||
/mob/living/carbon/handle_stomach(times_fired)
|
||||
for(var/mob/living/M in stomach_contents)
|
||||
/mob/living/carbon/proc/handle_stomach(times_fired)
|
||||
for(var/thing in stomach_contents)
|
||||
var/mob/living/M = thing
|
||||
if(M.loc != src)
|
||||
stomach_contents.Remove(M)
|
||||
LAZYREMOVE(stomach_contents, M)
|
||||
continue
|
||||
if(stat != DEAD)
|
||||
if(M.stat == DEAD)
|
||||
stomach_contents.Remove(M)
|
||||
LAZYREMOVE(stomach_contents, M)
|
||||
qdel(M)
|
||||
continue
|
||||
if(times_fired % 3 == 1)
|
||||
@@ -476,7 +481,7 @@
|
||||
P.reagents.remove_any(applied_amount * 0.5)
|
||||
else
|
||||
if(!P.reagents || P.reagents.total_volume <= 0)
|
||||
processing_patches -= P
|
||||
LAZYREMOVE(processing_patches, P)
|
||||
qdel(P)
|
||||
|
||||
/mob/living/carbon/proc/handle_germs()
|
||||
|
||||
@@ -58,9 +58,6 @@
|
||||
|
||||
handle_fire()
|
||||
|
||||
//stuff in the stomach
|
||||
handle_stomach(times_fired)
|
||||
|
||||
update_gravity(mob_has_gravity())
|
||||
|
||||
if(pulling)
|
||||
@@ -117,9 +114,6 @@
|
||||
/mob/living/proc/handle_environment(datum/gas_mixture/environment)
|
||||
return
|
||||
|
||||
/mob/living/proc/handle_stomach(times_fired)
|
||||
return
|
||||
|
||||
/mob/living/proc/update_pulling()
|
||||
if(incapacitated())
|
||||
stop_pulling()
|
||||
|
||||
@@ -682,9 +682,6 @@
|
||||
*/////////////////////
|
||||
/mob/living/proc/resist_grab()
|
||||
var/resisting = 0
|
||||
for(var/obj/O in requests)
|
||||
qdel(O)
|
||||
resisting++
|
||||
for(var/X in grabbed_by)
|
||||
var/obj/item/grab/G = X
|
||||
resisting++
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
/obj/item/organ/internal/body_egg/changeling_egg/proc/Pop()
|
||||
var/mob/living/carbon/human/monkey/M = new(owner)
|
||||
owner.stomach_contents += M
|
||||
LAZYADD(owner.stomach_contents, M)
|
||||
|
||||
for(var/obj/item/organ/internal/I in src)
|
||||
I.insert(M, 1)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
AA.viewers -= src
|
||||
viewing_alternate_appearances = null
|
||||
logs.Cut()
|
||||
LAssailant = null
|
||||
return ..()
|
||||
|
||||
/mob/Initialize()
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
var/use_me = 1 //Allows all mobs to use the me verb by default, will have to manually specify they cannot
|
||||
var/damageoverlaytemp = 0
|
||||
var/computer_id = null
|
||||
var/lastattacker = null
|
||||
var/lastattacked = null
|
||||
var/lastattacker = null // real name of the person doing the attacking
|
||||
var/lastattackerckey = null // their ckey
|
||||
var/list/attack_log_old = list( )
|
||||
var/list/debug_log = null
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
var/med_record = ""
|
||||
var/sec_record = ""
|
||||
var/gen_record = ""
|
||||
var/bhunger = 0 //Carbon
|
||||
var/lying = 0
|
||||
var/lying_prev = 0
|
||||
var/lastpuke = 0
|
||||
@@ -61,8 +60,7 @@
|
||||
var/emote_type = 1 // Define emote default type, 1 for seen emotes, 2 for heard emotes
|
||||
var/name_archive //For admin things like possession
|
||||
|
||||
var/timeofdeath = 0.0//Living
|
||||
|
||||
var/timeofdeath = 0 //Living
|
||||
|
||||
var/bodytemperature = 310.055 //98.7 F
|
||||
var/flying = 0
|
||||
@@ -71,22 +69,22 @@
|
||||
var/hunger_drain = HUNGER_FACTOR // how quickly the mob gets hungry; largely utilized by species.
|
||||
|
||||
var/overeatduration = 0 // How long this guy is overeating //Carbon
|
||||
var/intent = null//Living
|
||||
var/intent = null //Living
|
||||
var/shakecamera = 0
|
||||
var/a_intent = INTENT_HELP//Living
|
||||
var/m_intent = MOVE_INTENT_RUN//Living
|
||||
var/a_intent = INTENT_HELP //Living
|
||||
var/m_intent = MOVE_INTENT_RUN //Living
|
||||
var/lastKnownIP = null
|
||||
/// movable atoms buckled to this mob
|
||||
var/atom/movable/buckled = null//Living
|
||||
var/atom/movable/buckled = null //Living
|
||||
/// movable atom we are buckled to
|
||||
var/atom/movable/buckling
|
||||
|
||||
var/obj/item/l_hand = null//Living
|
||||
var/obj/item/r_hand = null//Living
|
||||
var/obj/item/back = null//Human/Monkey
|
||||
var/obj/item/tank/internal = null//Human/Monkey
|
||||
var/obj/item/storage/s_active = null//Carbon
|
||||
var/obj/item/clothing/mask/wear_mask = null//Carbon
|
||||
var/obj/item/l_hand = null //Living
|
||||
var/obj/item/r_hand = null //Living
|
||||
var/obj/item/back = null //Human
|
||||
var/obj/item/tank/internal = null //Human
|
||||
var/obj/item/storage/s_active = null //Carbon
|
||||
var/obj/item/clothing/mask/wear_mask = null //Carbon
|
||||
|
||||
var/datum/hud/hud_used = null
|
||||
|
||||
@@ -95,7 +93,6 @@
|
||||
var/research_scanner = 0 //For research scanner equipped mobs. Enable to show research data when examining.
|
||||
|
||||
var/list/grabbed_by = list()
|
||||
var/list/requests = list()
|
||||
var/lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE
|
||||
var/list/mapobjs = list()
|
||||
|
||||
@@ -103,9 +100,9 @@
|
||||
|
||||
var/emote_cd = 0 // Used to supress emote spamming. 1 if on CD, 2 if disabled by admin (manually set), else 0
|
||||
|
||||
var/job = null//Living
|
||||
var/job = null //Living
|
||||
|
||||
var/datum/dna/dna = null//Carbon
|
||||
var/datum/dna/dna = null //Carbon
|
||||
var/radiation = 0 //Carbon
|
||||
|
||||
var/list/mutations = list() //Carbon -- Doohl
|
||||
@@ -179,8 +176,6 @@
|
||||
var/turf/listed_turf = null //the current turf being examined in the stat panel
|
||||
var/list/shouldnt_see = list() //list of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes
|
||||
|
||||
var/kills = 0
|
||||
|
||||
var/stance_damage = 0 //Whether this mob's ability to stand has been affected
|
||||
|
||||
var/list/active_genes = list()
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
add_attack_logs(attacker, affecting, "Devoured")
|
||||
|
||||
affecting.forceMove(user)
|
||||
attacker.stomach_contents.Add(affecting)
|
||||
LAZYADD(attacker.stomach_contents, affecting)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grab/proc/checkvalid(var/mob/attacker, var/mob/prey) //does all the checking for the attack proc to see if a mob can eat another with the grab
|
||||
|
||||
@@ -175,11 +175,6 @@
|
||||
for(var/datum/reagent/A in D.reagents.reagent_list)
|
||||
R += A.id + " ("
|
||||
R += num2text(A.volume) + "),"
|
||||
if(istype(M, /mob))
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
|
||||
add_attack_logs(user, M, "Shot with dartgun containing [R]")
|
||||
|
||||
|
||||
@@ -97,9 +97,7 @@
|
||||
var/contained = injected.name
|
||||
var/trans = R.trans_to(M, amount_per_transfer_from_this)
|
||||
add_attack_logs(user, M, "Injected with [name] containing [contained], transfered [trans] units", injected.harmless ? ATKLOG_ALMOSTALL : null)
|
||||
M.LAssailant = user
|
||||
to_chat(user, "<span class='notice'>[trans] units injected. [R.total_volume] units remaining.</span>")
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/borghypo/attack_self(mob/user)
|
||||
playsound(loc, 'sound/effects/pop.ogg', 50, 0) //Change the mode
|
||||
|
||||
@@ -43,10 +43,6 @@
|
||||
M.visible_message("<span class='danger'>[user] splashes the contents of [src] onto [M]!</span>", \
|
||||
"<span class='userdanger'>[user] splashes the contents of [src] onto [M]!</span>")
|
||||
add_attack_logs(user, M, "Splashed with [name] containing [contained]", !!M.ckey ? null : ATKLOG_ALL)
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
|
||||
reagents.reaction(M, REAGENT_TOUCH)
|
||||
reagents.clear_reagents()
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
if(M.eat(src, user))
|
||||
user.drop_item()
|
||||
forceMove(M)
|
||||
M.processing_patches += src
|
||||
LAZYADD(M.processing_patches, src)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -207,7 +207,10 @@
|
||||
else if(target != user && !user.restrained() && !user.stat && !user.IsWeakened() && !user.stunned && !user.paralysis)
|
||||
msg = "[user.name] stuffs [target.name] into the [src]!"
|
||||
to_chat(user, "You stuff [target.name] into the [src]!")
|
||||
|
||||
if(!iscarbon(user))
|
||||
target.LAssailant = null
|
||||
else
|
||||
target.LAssailant = user
|
||||
add_attack_logs(user, target, "Disposal'ed", !!target.ckey ? null : ATKLOG_ALL)
|
||||
else
|
||||
return
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 KiB |
Reference in New Issue
Block a user