[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:
kevinz000
2016-11-25 13:26:43 +13:00
committed by oranges
parent f30e2415fe
commit 87dbd65811
57 changed files with 1432 additions and 126 deletions
+5 -1
View File
@@ -75,7 +75,11 @@
#define TOXINLOVER 22
#define DIGITIGRADE 23 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi)
#define FLYING 65536
//Movement Types
#define IMMOBILE 0
#define GROUND 1
#define FLYING 2
/*
These defines are used specifically with the atom/movable/languages bitmask.
+16 -13
View File
@@ -37,23 +37,26 @@
return ..()
/datum/action/proc/Grant(mob/M)
if(owner)
if(owner == M)
return
if(M)
if(owner)
if(owner == M)
return
owner = M
M.actions += src
if(M.client)
M.client.screen += button
M.update_action_buttons()
else
Remove(owner)
owner = M
M.actions += src
if(M.client)
M.client.screen += button
M.update_action_buttons()
/datum/action/proc/Remove(mob/M)
if(M.client)
M.client.screen -= button
button.moved = FALSE //so the button appears in its normal position when given to another owner.
M.actions -= src
M.update_action_buttons()
if(M)
if(M.client)
M.client.screen -= button
M.actions -= src
M.update_action_buttons()
owner = null
button.moved = FALSE //so the button appears in its normal position when given to another owner.
/datum/action/proc/Trigger()
if(!IsAvailable())
+2 -2
View File
@@ -94,7 +94,7 @@
environment_smash = 1
attacktext = "hits"
attack_sound = 'sound/weapons/genhit1.ogg'
flying = 1
movement_type = FLYING
del_on_death = 1
deathmessage = "explodes into a cloud of gas!"
var/death_cloud_size = 1 //size of cloud produced from a dying spore
@@ -130,7 +130,7 @@
desc = "A shambling corpse animated by the blob."
melee_damage_lower += 8
melee_damage_upper += 11
flying = 0
movement_type = GROUND
death_cloud_size = 0
icon = H.icon
icon_state = "zombie_s"
+2 -2
View File
@@ -72,7 +72,7 @@
attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg'
loot = list(/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment)
weather_immunities = list("lava")
flying = 1
movement_type = FLYING
playstyle_string = "<span class='heavy_brass'>You are an anima fragment</span><b>, a clockwork creation of Ratvar. As a fragment, you have low health, do decent damage, and move at \
extreme speed in addition to being immune to extreme temperatures and pressures. Taking damage will temporarily slow you down, however. \n Your goal is to serve the Justiciar and his servants \
in any way you can. You yourself are one of these servants, and will be able to utilize anything they can, assuming it doesn't require opposable thumbs.</b>"
@@ -132,7 +132,7 @@
attacktext = "slashes"
attack_sound = 'sound/weapons/bladeslice.ogg'
weather_immunities = list("lava")
flying = 1
movement_type = FLYING
loot = list(/obj/item/clockwork/component/replicant_alloy/fallen_armor)
var/true_name = "Meme Master 69" //Required to call forth the marauder
var/list/possible_true_names = list("Xaven", "Melange", "Ravan", "Kel", "Rama", "Geke", "Peris", "Vestra", "Skiwa") //All fairly short and easy to pronounce
@@ -38,7 +38,7 @@
status_flags = 0
wander = 0
density = 0
flying = 1
movement_type = FLYING
anchored = 1
mob_size = MOB_SIZE_TINY
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
+2 -8
View File
@@ -64,14 +64,8 @@
/obj/effect/acid/Crossed(AM as mob|obj)
if(isliving(AM))
var/mob/living/L = AM
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(FLYING in H.dna.species.specflags)
return
else if(isanimal(L))
var/mob/living/simple_animal/SA = L
if(SA.flying)
return
if(L.movement_type & FLYING)
return
if(L.m_intent != "walk" && prob(40))
var/acid_used = min(acid_level*0.05, 20)
if(L.acid_act(10, acid_used, "feet"))
@@ -53,8 +53,14 @@
icon_state = "ion_trails"
anchored = 1
/obj/effect/particle_effect/ion_trails/flight
icon_state = "ion_trails_flight"
/datum/effect_system/trail_follow/ion
effect_type = /obj/effect/particle_effect/ion_trails
var/fadetype = "ion_fade"
var/fade = 1
var/nograv_required = 1
/datum/effect_system/trail_follow/ion/start() //Whoever is responsible for this abomination of code should become an hero
if(!on)
@@ -66,11 +72,12 @@
processing = 0
var/turf/T = get_turf(holder)
if(T != oldposition)
if(!T.has_gravity())
if(!T.has_gravity() || !nograv_required)
var/obj/effect/particle_effect/ion_trails/I = PoolOrNew(effect_type, oldposition)
I.setDir(holder.dir)
flick("ion_fade", I)
I.icon_state = ""
set_dir(I)
if(fade)
flick(fadetype, I)
I.icon_state = ""
spawn(20)
qdel(I)
oldposition = T
@@ -79,7 +86,18 @@
processing = 1
start()
/datum/effect_system/trail_follow/ion/proc/set_dir(obj/effect/particle_effect/ion_trails/I)
I.setDir(holder.dir)
/datum/effect_system/trail_follow/ion/flight
effect_type = /obj/effect/particle_effect/ion_trails/flight
fadetype = "ion_fade_flight"
nograv_required = 0
/datum/effect_system/trail_follow/ion/flight/set_dir(obj/effect/particle_effect/ion_trails/I)
if(istype(holder, /obj/item/device/flightpack))
var/obj/item/device/flightpack/F = holder
I.setDir(F.suit.user.dir)
//Reagent-based explosion effect
+4 -4
View File
@@ -11,10 +11,10 @@
victim << "<span class='danger'>*click*</span>"
/obj/effect/mine/Crossed(AM as mob|obj)
if(isanimal(AM))
var/mob/living/simple_animal/SA = AM
if(!SA.flying)
triggermine(SA)
if(ismob(AM))
var/mob/MM = AM
if(!(MM.movement_type & FLYING))
triggermine(AM)
else
triggermine(AM)
+3 -1
View File
@@ -277,8 +277,10 @@
feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
else if(isanimal(L))
var/mob/living/simple_animal/SA = L
if(!SA.flying && SA.mob_size > MOB_SIZE_TINY)
if(SA.mob_size > MOB_SIZE_TINY)
snap = 1
if(L.movement_type & FLYING)
snap = 0
if(snap)
armed = 0
icon_state = "[initial(icon_state)][armed]"
+3
View File
@@ -180,3 +180,6 @@
/obj/proc/check_uplink_validity()
return 1
/obj/proc/on_mob_move(dir, mob)
return
+2
View File
@@ -120,6 +120,8 @@
return 1
/turf/open/handle_slip(mob/living/carbon/C, s_amount, w_amount, obj/O, lube)
if(C.movement_type & FLYING)
return 0
if(has_gravity(src))
var/obj/buckled_obj
if(C.buckled)
+3 -5
View File
@@ -39,9 +39,9 @@
//Portals aren't affected by gravity. Probably.
return 0
//Flies right over the chasm
if(isanimal(AM))
var/mob/living/simple_animal/SA = AM
if(SA.flying)
if(isliving(AM))
var/mob/MM = AM
if(MM.movement_type & FLYING)
return 0
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
@@ -51,8 +51,6 @@
visible_message("<span class='boldwarning'>[H] falls into [src]!</span>")
J.chasm_react(H)
return 0
if(H.dna && H.dna.species && (FLYING in H.dna.species.specflags))
return 0
return 1
/turf/open/chasm/proc/drop(atom/movable/AM)
@@ -55,10 +55,11 @@
O.armor["fire"] = 50
O.fire_act(10000, 1000)
else if (isliving(thing))
. = 1
var/mob/living/L = thing
if(L.movement_type & FLYING)
continue //YOU'RE FLYING OVER IT
if("lava" in L.weather_immunities)
continue
if(L.buckled)
@@ -150,7 +150,6 @@
/turf/open/floor/engine/cult/airless
initial_gas_mix = "TEMP=2.7"
/turf/open/floor/engine/vacuum
name = "vacuum floor"
initial_gas_mix = "TEMP=2.7"
+2
View File
@@ -99,6 +99,8 @@
//slipping
if (istype(AM,/mob/living/carbon))
var/mob/living/carbon/M = AM
if(M.movement_type & FLYING)
return
switch(wet)
if(TURF_WET_WATER)
if(!M.slip(0, 3, null, NO_SLIP_WHEN_WALKING))
+9 -10
View File
@@ -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)
+35 -21
View File
@@ -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()
+6 -1
View File
@@ -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
+14 -9
View File
@@ -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
+2 -1
View File
@@ -69,4 +69,5 @@
AA.display_to(list(src))
update_client_colour()
client.click_intercept = null
if(client)
client.click_intercept = null
+1
View File
@@ -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
+5
View File
@@ -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
+3
View File
@@ -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")
+1 -1
View File
@@ -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()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 511 KiB

After

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 36 KiB

+1
View File
@@ -1104,6 +1104,7 @@
#include "code\modules\clothing\shoes\magboots.dm"
#include "code\modules\clothing\shoes\miscellaneous.dm"
#include "code\modules\clothing\spacesuits\chronosuit.dm"
#include "code\modules\clothing\spacesuits\flightsuit.dm"
#include "code\modules\clothing\spacesuits\hardsuit.dm"
#include "code\modules\clothing\spacesuits\miscellaneous.dm"
#include "code\modules\clothing\spacesuits\plasmamen.dm"