mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-21 04:57:57 +01:00
[READY]] FLIGHTPACKS (AKA cooler, better, and technological wings with a unique gimmick!) (#20860)
* vroom * wew * a * b * morestuff * . * a * . * . * basicsprites+extend/retract * ... * . * thanks travis * woops * thankstravisv2 * redundence * ishouldstopmakingsomanygoddamncommits+empdamage * stuff * .. * ion_trails * fixes_conflict_1 * fix * compilesnow * . * fuck * WIP: Multi Step Assembly * thismightfixitthismightnot * shoe-attachment * noselfremoval * wooops * tweaksandcrashing * runtimes * runtimesfuntimes+crash update 1 * thisprobablywontcompile * stillwip * githubPLEASEWORK * fixes conflicts 3/3 * REFACTORSUNTESTED * fixingconflicts2 * fixingconflicts3/3 * updates * stuffs * ... * stillWIP * stufffs * . * .. * runtimesfuntimes2 * stuffs2 * conflictfix * ... * fuck * fix * bah merge conflicts * knockback_testing1 * conflictfixing... * mergeconflicts * plop * socloseyetsofar * tweaksandfixes * conflicts * fix * fixes * fix * woops * woops2 * hotfix * ... * flufftextandfixes * test * .. * fix1/2 * stuff * finallysomeoneteachesmehowtofixthisshit * FIX * why * . * bitflagsshitflags1 * bitflags-shitflags2 * bitflags-shitflags2 * bitflags_shitflags_4 * autofloating * minerbuffgetthepun? * notouchingfloors * ... * . * f l o a t * kek * kek * fixes * fixes2 * sprites
This commit is contained in:
@@ -104,16 +104,15 @@
|
||||
|
||||
/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj)
|
||||
if(armed)
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == "run")
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
else if(isanimal(AM))
|
||||
var/mob/living/simple_animal/SA = AM
|
||||
if(!SA.flying)
|
||||
triggered(AM)
|
||||
if(ismob(AM))
|
||||
var/mob/MM = AM
|
||||
if(!(MM.movement_type & FLYING))
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(H.m_intent == "run")
|
||||
triggered(H)
|
||||
H.visible_message("<span class='warning'>[H] accidentally steps on [src].</span>", \
|
||||
"<span class='warning'>You accidentally step on [src]</span>")
|
||||
else if(AM.density) // For mousetrap grenades, set off by anything heavy
|
||||
triggered(AM)
|
||||
..()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,15 +1,23 @@
|
||||
/mob/living/carbon/movement_delay()
|
||||
. = ..()
|
||||
. += grab_state * 3 //can't go fast while grabbing something.
|
||||
var/FP
|
||||
if(iscarbon(src))
|
||||
var/mob/living/carbon/C = src
|
||||
var/obj/item/device/flightpack/F = C.get_flightpack()
|
||||
if(istype(F) && F.flight)
|
||||
FP = 1
|
||||
. = ..(FP)
|
||||
if(!FP)
|
||||
. += grab_state * 1 //Flightpacks are too powerful to be slowed too much by the weight of a corpse.
|
||||
else
|
||||
. += grab_state * 3 //can't go fast while grabbing something.
|
||||
|
||||
if(!get_leg_ignore()) //ignore the fact we lack legs
|
||||
var/leg_amount = get_num_legs()
|
||||
. += 6 - 3*leg_amount //the fewer the legs, the slower the mob
|
||||
if(!leg_amount)
|
||||
. += 6 - 3*get_num_arms() //crawling is harder with fewer arms
|
||||
|
||||
if(legcuffed)
|
||||
. += legcuffed.slowdown
|
||||
if(legcuffed)
|
||||
. += legcuffed.slowdown
|
||||
|
||||
|
||||
var/const/NO_SLIP_WHEN_WALKING = 1
|
||||
@@ -18,6 +26,8 @@ var/const/GALOSHES_DONT_HELP = 4
|
||||
var/const/SLIDE_ICE = 8
|
||||
|
||||
/mob/living/carbon/slip(s_amount, w_amount, obj/O, lube)
|
||||
if(movement_type & FLYING)
|
||||
return 0
|
||||
if(!(lube&SLIDE_ICE))
|
||||
add_logs(src,, "slipped",, "on [O ? O.name : "floor"]")
|
||||
return loc.handle_slip(src, s_amount, w_amount, O, lube)
|
||||
@@ -29,6 +39,10 @@ var/const/SLIDE_ICE = 8
|
||||
if(!isturf(loc))
|
||||
return 0
|
||||
|
||||
var/obj/item/device/flightpack/F = get_flightpack()
|
||||
if(istype(F) && (F.flight) && F.allow_thrust(0.01, src))
|
||||
return 1
|
||||
|
||||
// Do we have a jetpack implant (and is it on)?
|
||||
var/obj/item/organ/cyberimp/chest/thrusters/T = getorganslot("thrusters")
|
||||
if(istype(T) && movement_dir && T.allow_thrust(0.01))
|
||||
@@ -38,8 +52,6 @@ var/const/SLIDE_ICE = 8
|
||||
if(istype(J) && (movement_dir || J.stabilizers) && J.allow_thrust(0.01, src))
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/Move(NewLoc, direct)
|
||||
. = ..()
|
||||
if(.)
|
||||
|
||||
@@ -911,3 +911,9 @@
|
||||
Weaken(10)
|
||||
return 1
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/Bump(atom/A)
|
||||
..()
|
||||
var/obj/item/device/flightpack/FP = get_flightpack()
|
||||
if(FP)
|
||||
FP.flight_impact(A)
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
. += ..()
|
||||
. += config.human_delay
|
||||
|
||||
|
||||
/mob/living/carbon/human/slip(s_amount, w_amount, obj/O, lube)
|
||||
if(isobj(shoes) && (shoes.flags&NOSLIP) && !(lube&GALOSHES_DONT_HELP))
|
||||
return 0
|
||||
@@ -60,4 +59,4 @@
|
||||
/mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee.
|
||||
if(..())
|
||||
return 1
|
||||
return dna.species.space_move()
|
||||
return dna.species.space_move(src)
|
||||
|
||||
@@ -864,15 +864,23 @@
|
||||
|
||||
/datum/species/proc/movement_delay(mob/living/carbon/human/H)
|
||||
. = 0
|
||||
var/obj/item/device/flightpack/F = H.get_flightpack()
|
||||
var/flightpack = 0
|
||||
if(istype(F) && F.flight)
|
||||
flightpack = 1
|
||||
var/flight = 0
|
||||
if(H.movement_type & FLYING)
|
||||
flight = 1
|
||||
|
||||
if(H.status_flags & GOTTAGOFAST)
|
||||
. -= 1
|
||||
if(H.status_flags & GOTTAGOREALLYFAST)
|
||||
. -= 2
|
||||
if(!flightpack)
|
||||
if(H.status_flags & GOTTAGOFAST)
|
||||
. -= 1
|
||||
if(H.status_flags & GOTTAGOREALLYFAST)
|
||||
. -= 2
|
||||
|
||||
if(!(H.status_flags & IGNORESLOWDOWN))
|
||||
if(!H.has_gravity())
|
||||
if(FLYING in specflags)
|
||||
if((H.movement_type & FLYING) && !flightpack) //No hyperstacking angel wings!
|
||||
. += speedmod
|
||||
return
|
||||
// If there's no gravity we have the sanic speed of jetpack.
|
||||
@@ -888,30 +896,36 @@
|
||||
if(istype(T) && T.allow_thrust(0.01, H))
|
||||
. -= 2
|
||||
|
||||
else
|
||||
else if(flightpack && F.allow_thrust(0.01, src)) //No jetpack/flightsuit hyperstacking!
|
||||
. -= 1
|
||||
|
||||
if(H.wear_suit)
|
||||
. += H.wear_suit.slowdown
|
||||
if(H.shoes)
|
||||
. += H.shoes.slowdown
|
||||
if(H.back)
|
||||
. += H.back.slowdown
|
||||
for(var/obj/item/I in H.held_items)
|
||||
if(I.flags & HANDSLOW)
|
||||
. += I.slowdown
|
||||
if(!(flightpack))
|
||||
var/health_deficiency = (100 - H.health + H.staminaloss)
|
||||
if(health_deficiency >= 40)
|
||||
. += (health_deficiency / 25)
|
||||
if(flight)
|
||||
. += (health_deficiency / 75)
|
||||
else
|
||||
. += (health_deficiency / 25)
|
||||
|
||||
var/hungry = (500 - H.nutrition) / 5 // So overeat would be 100 and default level would be 80
|
||||
if(hungry >= 70)
|
||||
if((hungry >= 70) && !flight) //Being hungry won't stop you from using flightpack controls/flapping your wings although it probably will in the wing case but who cares.
|
||||
. += hungry / 50
|
||||
|
||||
if(H.wear_suit)
|
||||
. += H.wear_suit.slowdown
|
||||
if(H.shoes)
|
||||
. += H.shoes.slowdown
|
||||
if(H.back)
|
||||
. += H.back.slowdown
|
||||
for(var/obj/item/I in H.held_items)
|
||||
if(I.flags & HANDSLOW)
|
||||
. += I.slowdown
|
||||
if((H.disabilities & FAT))
|
||||
. += 1.5
|
||||
. += (1.5 - flight)
|
||||
if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT)
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
|
||||
. += speedmod
|
||||
. += speedmod
|
||||
|
||||
//////////////////
|
||||
// ATTACK PROCS //
|
||||
@@ -1335,10 +1349,10 @@
|
||||
//Space Move//
|
||||
//////////////
|
||||
|
||||
/datum/species/proc/space_move()
|
||||
/datum/species/proc/space_move(mob/living/carbon/human/H)
|
||||
return 0
|
||||
|
||||
/datum/species/proc/negates_gravity()
|
||||
/datum/species/proc/negates_gravity(mob/living/carbon/human/H)
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/datum/species/human/qualifies_for_rank(rank, list/features)
|
||||
if((!features["tail_human"] || features["tail_human"] == "None") && (!features["ears"] || features["ears"] == "None"))
|
||||
return 1 //Pure humans are always allowed in all roles.
|
||||
return TRUE //Pure humans are always allowed in all roles.
|
||||
return ..()
|
||||
|
||||
//Curiosity killed the cat's wagging tail.
|
||||
@@ -23,6 +23,10 @@
|
||||
if(H)
|
||||
H.endTailWag()
|
||||
|
||||
/datum/species/human/space_move(mob/living/carbon/human/H)
|
||||
var/obj/item/device/flightpack/F = H.get_flightpack()
|
||||
if(istype(F) && (F.flight) && F.allow_thrust(0.01, src))
|
||||
return TRUE
|
||||
/*
|
||||
LIZARDPEOPLE
|
||||
*/
|
||||
@@ -1003,8 +1007,8 @@ SYNDICATE BLACK OPS
|
||||
/datum/species/angel/on_species_loss(mob/living/carbon/human/H)
|
||||
if(fly)
|
||||
fly.Remove(H)
|
||||
if(FLYING in specflags)
|
||||
specflags -= FLYING
|
||||
if(H.movement_type & FLYING)
|
||||
H.movement_type &= ~FLYING
|
||||
ToggleFlight(H,0)
|
||||
if(H.dna && H.dna.species &&((H.dna.features["wings"] != "None") && ("wings" in H.dna.species.mutant_bodyparts)))
|
||||
H.dna.features["wings"] = "None"
|
||||
@@ -1015,15 +1019,12 @@ SYNDICATE BLACK OPS
|
||||
HandleFlight(H)
|
||||
|
||||
/datum/species/angel/proc/HandleFlight(mob/living/carbon/human/H)
|
||||
if(FLYING in specflags)
|
||||
if(H.movement_type & FLYING)
|
||||
if(!CanFly(H))
|
||||
ToggleFlight(H,0)
|
||||
H.float(0)
|
||||
return 0
|
||||
H.float(1)
|
||||
return 1
|
||||
else
|
||||
H.float(0)
|
||||
return 0
|
||||
|
||||
/datum/species/angel/proc/CanFly(mob/living/carbon/human/H)
|
||||
@@ -1052,7 +1053,7 @@ SYNDICATE BLACK OPS
|
||||
var/mob/living/carbon/human/H = owner
|
||||
var/datum/species/angel/A = H.dna.species
|
||||
if(A.CanFly(H))
|
||||
if(FLYING in A.specflags)
|
||||
if(H.movement_type & FLYING)
|
||||
H << "<span class='notice'>You settle gently back onto the ground...</span>"
|
||||
A.ToggleFlight(H,0)
|
||||
H.update_canmove()
|
||||
@@ -1089,31 +1090,31 @@ SYNDICATE BLACK OPS
|
||||
|
||||
|
||||
/datum/species/angel/spec_stun(mob/living/carbon/human/H,amount)
|
||||
if(FLYING in specflags)
|
||||
if(H.movement_type & FLYING)
|
||||
ToggleFlight(H,0)
|
||||
flyslip(H)
|
||||
. = ..()
|
||||
|
||||
/datum/species/angel/negates_gravity()
|
||||
if(FLYING in specflags)
|
||||
/datum/species/angel/negates_gravity(mob/living/carbon/human/H)
|
||||
if(H.movement_type & FLYING)
|
||||
return 1
|
||||
|
||||
/datum/species/angel/space_move()
|
||||
if(FLYING in specflags)
|
||||
/datum/species/angel/space_move(mob/living/carbon/human/H)
|
||||
if(H.movement_type & FLYING)
|
||||
return 1
|
||||
|
||||
/datum/species/angel/proc/ToggleFlight(mob/living/carbon/human/H,flight)
|
||||
if(flight && CanFly(H))
|
||||
stunmod = 2
|
||||
speedmod = -1
|
||||
specflags += FLYING
|
||||
H.movement_type |= FLYING
|
||||
override_float = 1
|
||||
H.pass_flags |= PASSTABLE
|
||||
H.OpenWings()
|
||||
else
|
||||
stunmod = 1
|
||||
speedmod = 0
|
||||
specflags -= FLYING
|
||||
H.movement_type &= ~FLYING
|
||||
override_float = 0
|
||||
H.pass_flags &= ~PASSTABLE
|
||||
H.CloseWings()
|
||||
|
||||
@@ -50,10 +50,15 @@
|
||||
if(stat != DEAD)
|
||||
handle_status_effects() //all special effects, stunned, weakened, jitteryness, hallucination, sleeping, etc
|
||||
|
||||
if(floating && (!(movement_type & FLYING)))
|
||||
float(0)
|
||||
|
||||
if(movement_type & FLYING)
|
||||
float(1)
|
||||
|
||||
if(stat != DEAD)
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/proc/handle_breathing()
|
||||
return
|
||||
|
||||
|
||||
@@ -438,18 +438,21 @@
|
||||
if (s_active && !(s_active.ClickAccessible(src, depth=STORAGE_VIEW_DEPTH) || s_active.Adjacent(src)))
|
||||
s_active.close(src)
|
||||
|
||||
/mob/living/movement_delay()
|
||||
/mob/living/movement_delay(ignorewalk = 0)
|
||||
. = ..()
|
||||
if(isopenturf(loc))
|
||||
if(isopenturf(loc) && !is_flying())
|
||||
var/turf/open/T = loc
|
||||
. += T.slowdown
|
||||
switch(m_intent)
|
||||
if("run")
|
||||
if(drowsyness > 0)
|
||||
. += 6
|
||||
. += config.run_speed
|
||||
if("walk")
|
||||
. += config.walk_speed
|
||||
if(!ignorewalk)
|
||||
. += config.run_speed
|
||||
else
|
||||
switch(m_intent)
|
||||
if("run")
|
||||
if(drowsyness > 0)
|
||||
. += 6
|
||||
. += config.run_speed
|
||||
if("walk")
|
||||
. += config.walk_speed
|
||||
|
||||
/mob/living/proc/makeTrail(turf/T)
|
||||
if(!has_gravity())
|
||||
@@ -603,6 +606,8 @@
|
||||
fixed = 1
|
||||
if(on && !floating && !fixed)
|
||||
animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1)
|
||||
sleep(10)
|
||||
animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1)
|
||||
floating = 1
|
||||
else if(((!on || fixed) && floating))
|
||||
animate(src, pixel_y = get_standard_pixel_y_offset(lying), time = 10)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
maxbodytemp = INFINITY
|
||||
healable = 0
|
||||
faction = list("cult")
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
pressure_resistance = 100
|
||||
unique_name = 1
|
||||
AIStatus = AI_OFF //normal constructs don't have AI
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
harm_intent_damage = 1
|
||||
friendly = "nudges"
|
||||
density = 0
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
ventcrawler = 2
|
||||
mob_size = MOB_SIZE_TINY
|
||||
|
||||
@@ -21,7 +21,7 @@ var/global/list/parasites = list() //all currently existing/living guardians
|
||||
speed = 0
|
||||
a_intent = "harm"
|
||||
stop_automated_movement = 1
|
||||
flying = 1 // Immunity to chasms and landmines, etc.
|
||||
movement_type = FLYING // Immunity to chasms and landmines, etc.
|
||||
attack_sound = 'sound/weapons/punch1.ogg'
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
mouse_opacity = 2
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
mob_size = MOB_SIZE_TINY
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
gold_core_spawnable = 1
|
||||
search_objects = 1 //have to find those plant trays!
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
maxbodytemp = 1500
|
||||
|
||||
faction = list("carp")
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
pressure_resistance = 200
|
||||
gold_core_spawnable = 1
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
melee_damage_upper = 25
|
||||
attacktext = "blinks at"
|
||||
attack_sound = 'sound/weapons/pierce.ogg'
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
|
||||
faction = list("spooky")
|
||||
del_on_death = 1
|
||||
@@ -606,7 +606,7 @@ Difficulty: Very Hard
|
||||
harm_intent_damage = 1
|
||||
friendly = "mends"
|
||||
density = 0
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
|
||||
ventcrawler = 2
|
||||
mob_size = MOB_SIZE_TINY
|
||||
@@ -622,6 +622,7 @@ Difficulty: Very Hard
|
||||
languages_understood = ALL
|
||||
del_on_death = 1
|
||||
unsuitable_atmos_damage = 0
|
||||
movement_type = FLYING
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
obj_damage = 0
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
luminosity = 3
|
||||
faction = list("mining", "boss")
|
||||
weather_immunities = list("lava","ash")
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
robust_searching = 1
|
||||
ranged_ignores_vision = TRUE
|
||||
stat_attack = 2
|
||||
|
||||
@@ -322,7 +322,7 @@
|
||||
speed = 3
|
||||
maxHealth = 1
|
||||
health = 1
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
harm_intent_damage = 5
|
||||
melee_damage_lower = 2
|
||||
melee_damage_upper = 2
|
||||
@@ -713,7 +713,7 @@
|
||||
speak_emote = list("telepathically cries")
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
stat_attack = 1
|
||||
flying = TRUE
|
||||
movement_type = FLYING
|
||||
robust_searching = 1
|
||||
loot = list()
|
||||
butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
environment_smash = 0
|
||||
ventcrawler = 2
|
||||
mob_size = MOB_SIZE_TINY
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
speak_emote = list("squeaks")
|
||||
var/max_co2 = 0 //to be removed once metastation map no longer use those for Sgt Araneus
|
||||
var/min_oxy = 0
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
pressure_resistance = 300
|
||||
gold_core_spawnable = 0 //too spooky for science
|
||||
var/ghost_hair_style
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
mob_size = MOB_SIZE_TINY
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
limb_destroyer = 1
|
||||
speak_emote = list("states")
|
||||
bubble_icon = "syndibot"
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
attacktext = "chomps"
|
||||
friendly = "grooms"
|
||||
mob_size = MOB_SIZE_SMALL
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
gold_core_spawnable = 2
|
||||
|
||||
var/parrot_damage_upper = 10
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
status_flags = 0
|
||||
faction = list("cult")
|
||||
status_flags = CANPUSH
|
||||
flying = 1
|
||||
movement_type = FLYING
|
||||
loot = list(/obj/item/weapon/ectoplasm)
|
||||
del_on_death = 1
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
|
||||
//simple_animal access
|
||||
var/obj/item/weapon/card/id/access_card = null //innate access uses an internal ID card
|
||||
var/flying = 0 //whether it's flying or touching the ground.
|
||||
var/buffed = 0 //In the event that you want to have a buffing effect on the mob, but don't want it to stack with other effects, any outside force that applies a buff to a simple mob should at least set this to 1, so we have something to check against
|
||||
var/gold_core_spawnable = 0 //if 1 can be spawned by plasma with gold core, 2 are 'friendlies' spawned with blood
|
||||
|
||||
|
||||
@@ -69,4 +69,5 @@
|
||||
AA.display_to(list(src))
|
||||
|
||||
update_client_colour()
|
||||
client.click_intercept = null
|
||||
if(client)
|
||||
client.click_intercept = null
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
var/obj/machinery/machine = null
|
||||
var/other_mobs = null
|
||||
var/disabilities = 0 //Carbon
|
||||
var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc.
|
||||
|
||||
var/atom/movable/pulling = null
|
||||
var/grab_state = 0
|
||||
|
||||
@@ -483,3 +483,8 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
for(var/obj/screen/wheel/talk/TW in L.hud_used.wheels)
|
||||
TW.Click()
|
||||
|
||||
/mob/proc/is_flying(mob/M = src)
|
||||
if(M.movement_type & FLYING)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -175,6 +175,9 @@
|
||||
if(mob && .)
|
||||
mob.throwing = 0
|
||||
|
||||
for(var/obj/O in mob)
|
||||
O.on_mob_move(direct, src)
|
||||
|
||||
return .
|
||||
|
||||
|
||||
|
||||
@@ -709,3 +709,33 @@
|
||||
construction_time = 100
|
||||
build_path = /obj/item/device/assembly/flash/handheld
|
||||
category = list("Misc")
|
||||
|
||||
/datum/design/flightsuit //Multi step build process/redo WIP
|
||||
name = "Flight Suit"
|
||||
desc = "A specialized hardsuit that is able to attach a flightpack and accessories.."
|
||||
id = "flightsuit"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/clothing/suit/space/hardsuit/flightsuit
|
||||
materials = list(MAT_METAL=20000, MAT_GLASS = 10000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 20000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
|
||||
/datum/design/flightpack
|
||||
name = "Flight Pack"
|
||||
desc = "An advanced back-worn system that has dual ion engines powerful enough to grant a humanoid flight. Contains an internal self-recharging high-current capacitor for short, powerful boosts."
|
||||
id = "flightpack"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/device/flightpack
|
||||
materials = list(MAT_METAL=20000, MAT_GLASS = 10000, MAT_DIAMOND = 5000, MAT_GOLD = 15000, MAT_SILVER = 15000, MAT_URANIUM = 25000, MAT_PLASMA = 20000, MAT_TITANIUM = 20000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
|
||||
/datum/design/flightshoes
|
||||
name = "Flight Shoes"
|
||||
desc = "Flight shoes, attachable to a flight suit to provide additional functions."
|
||||
id = "flightshoes"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/clothing/shoes/flightshoes
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_PLASMA = 2000, MAT_TITANIUM = 2000) //They're just shoes.
|
||||
construction_time = 100
|
||||
category = list("Misc")
|
||||
@@ -89,7 +89,7 @@
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/get_leg_ignore()
|
||||
if(FLYING in dna.species.specflags)
|
||||
if(movement_type & FLYING)
|
||||
return 1
|
||||
|
||||
/mob/living/proc/get_missing_limbs()
|
||||
|
||||
Reference in New Issue
Block a user