From f50e14094101ed8bb7432b53b64f625124fe99c5 Mon Sep 17 00:00:00 2001 From: Kearel Date: Mon, 3 Aug 2015 20:54:12 -0500 Subject: [PATCH 1/3] Bike --- code/modules/vehicles/bike.dm | 122 ++++++++++++++++++++++++++++++++++ icons/obj/bike.dmi | Bin 0 -> 829 bytes 2 files changed, 122 insertions(+) create mode 100644 code/modules/vehicles/bike.dm create mode 100644 icons/obj/bike.dmi diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm new file mode 100644 index 0000000000..815bf47841 --- /dev/null +++ b/code/modules/vehicles/bike.dm @@ -0,0 +1,122 @@ +/obj/vehicle/bike/ + name = "space-bike" + desc = "Space wheelies! Woo! " + icon = 'icons/obj/bike.dmi' + icon_state = "bike_back_off" + dir = SOUTH + + load_item_visible = 1 + mob_offset_y = 7 + + health = 100 + maxhealth = 100 + + fire_dam_coeff = 0.6 + brute_dam_coeff = 0.5 + + var/datum/effect/effect/system/ion_trail_follow/ion + var/kickstand = 1 + +/obj/vehicle/bike/New() + ..() + ion = new /datum/effect/effect/system/ion_trail_follow() + ion.set_up(src) + turn_off() + overlays += image('icons/obj/bike.dmi', "bike_front_off", MOB_LAYER + 1) + +/obj/vehicle/bike/verb/toggle() + set name = "Toggle Engine" + set category = "Vehicle" + set src in view(0) + + if(usr.stat != 0) return + + if(!on) + turn_on() + src.visible_message("\the [src] rumbles to life.", "You hear something rumble deeply.") + else + turn_off() + src.visible_message("\the [src] putters before turning off.", "You hear something putter slowly.") + +/obj/vehicle/bike/verb/kickstand() + set name = "Toggle Kickstand" + set category = "Vehicle" + set src in view(0) + + if(usr.stat != 0) return + + if(kickstand) + src.visible_message("You put up \the [src]'s kickstand.") + else + if(istype(src.loc,/turf/space)) + usr << "\red You don't think kickstands work in space..." + return + src.visible_message("You put down \the [src]'s kickstand.") + if(pulledby) + pulledby.stop_pulling() + + kickstand = !kickstand + anchored = (kickstand || on) + +/obj/vehicle/bike/load(var/atom/movable/C) + var/mob/living/M = C + if(!istype(C)) return 0 + if(M.buckled || M.restrained() || !Adjacent(M) || !M.Adjacent(src)) + return 0 + return ..(M) + +/obj/vehicle/bike/MouseDrop_T(var/atom/movable/C, mob/user as mob) + if(!load(C)) + user << "\red You were unable to load [C] on [src]." + return + +/obj/vehicle/bike/attack_hand(var/mob/user as mob) + if(user == load) + unload(load) + user << "You unbuckle yourself from \the [src]" + +/obj/vehicle/bike/relaymove(mob/user, direction) + if(user != load || !on) + return + return Move(get_step(src, direction)) + +/obj/vehicle/bike/Move(var/turf/destination) + if(kickstand) return + + + //these things like space, not turf. Dragging shouldn't weigh you down. + if(istype(destination,/turf/space) || pulledby) + move_delay = 1 + else + move_delay = 10 + var ret = ..() + //overlay.dir = dir + //update_icon() + return ret + +/obj/vehicle/bike/turn_on() + ion.start() + anchored = 1 + overlays.Cut() + overlays += image('icons/obj/bike.dmi', "bike_front_on", MOB_LAYER + 1) + + icon_state = "bike_back_on" + + if(pulledby) + pulledby.stop_pulling() + ..() +/obj/vehicle/bike/turn_off() + ion.stop() + anchored = kickstand + + overlays.Cut() + overlays += image('icons/obj/bike.dmi', "bike_front_off", MOB_LAYER + 1) + + icon_state = "bike_back_off" + ..() + +/obj/vehicle/bike/bullet_act(var/obj/item/projectile/Proj) + if(buckled_mob && prob(40)) + buckled_mob.bullet_act(Proj) + return + ..() \ No newline at end of file diff --git a/icons/obj/bike.dmi b/icons/obj/bike.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8b911b044c664a3a1a233d45040bcee845207109 GIT binary patch literal 829 zcmV-D1H$}?P)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DJe5MH9oBTTS~>S)4D1$N4Fk;FAc^L9%37u9|J`FH#V5&fL<@zMl|IPNg6a z132sBFrZ&A#bPk+WiUT^ScaKX1d6%K6- zRtY9}$+m~M@Gfgb@!oE+AVdtg0g~zlY`4?eRNcT|EkNOqdes4~(lou{28O`K;JZq1 z6*E{8!G#q8DBy>%BmgUep#r6LoBqZSXbS^D1nl1OXGHLMW@A7E+#ogtRt8l9p$)*j->ln=(tU`Yfg&Ig9zwE4gg zoHid2fy)O@PEJPs14sY7u;=sD)8LtW(1m~-96@l<;5TcV2K0g@U__n|%sW>imT&Gg zYn!5PL}IFgr{k89@uWylzPg(POkPTb5MmaTXHG&i!31bHop&Jk06@#XXb7_6+X0gZ z^bJ`6{K`lEn#OM-kZ~MGco)OPd5$1WFTTQnCJLs_x@`6x!c6PU$Gd3q_$kW`OfR^) zHsi%1JWi>J+X!e+dY^$NvVy=jJ8#PqUZgecOvAT7 Date: Tue, 4 Aug 2015 13:41:27 -0500 Subject: [PATCH 2/3] Fixes Slight change to airflow/animations interaction when buckled --- code/ZAS/Airflow.dm | 3 +++ code/modules/mob/animations.dm | 5 +++- code/modules/mob/mob_movement.dm | 2 +- code/modules/vehicles/bike.dm | 46 +++++++++++++++++++++----------- 4 files changed, 38 insertions(+), 18 deletions(-) diff --git a/code/ZAS/Airflow.dm b/code/ZAS/Airflow.dm index 5f5f5bf347..92657562e3 100644 --- a/code/ZAS/Airflow.dm +++ b/code/ZAS/Airflow.dm @@ -11,6 +11,9 @@ mob/proc/airflow_stun() if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN)) src << "You stay upright as the air rushes past you." return 0 + if(buckled) + src << "Air suddenly rushes past you!" + return 0 if(!lying) src << "The sudden rush of air knocks you over!" Weaken(5) diff --git a/code/modules/mob/animations.dm b/code/modules/mob/animations.dm index ac4224dc43..0bd44cb526 100644 --- a/code/modules/mob/animations.dm +++ b/code/modules/mob/animations.dm @@ -82,7 +82,10 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/var/floatiness = 0 /mob/proc/make_floating(var/n) - + if(buckled) + if(is_floating) + stop_floating() + return floatiness = n if(floatiness && !is_floating) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 8ba66ffe31..8fcceac030 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -465,7 +465,7 @@ return 0 //Check to see if we slipped - if(prob(Process_Spaceslipping(5))) + if(prob(Process_Spaceslipping(5)) && !buckled) src << "\blue You slipped!" src.inertia_dir = src.last_move step(src, src.inertia_dir) diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm index 815bf47841..8bb8dd688c 100644 --- a/code/modules/vehicles/bike.dm +++ b/code/modules/vehicles/bike.dm @@ -29,27 +29,27 @@ set category = "Vehicle" set src in view(0) - if(usr.stat != 0) return + if(usr.incapacitated()) return if(!on) turn_on() - src.visible_message("\the [src] rumbles to life.", "You hear something rumble deeply.") + src.visible_message("\The [src] rumbles to life.", "You hear something rumble deeply.") else turn_off() - src.visible_message("\the [src] putters before turning off.", "You hear something putter slowly.") + src.visible_message("\The [src] putters before turning off.", "You hear something putter slowly.") /obj/vehicle/bike/verb/kickstand() set name = "Toggle Kickstand" set category = "Vehicle" set src in view(0) - if(usr.stat != 0) return + if(usr.incapacitated()) return if(kickstand) src.visible_message("You put up \the [src]'s kickstand.") else if(istype(src.loc,/turf/space)) - usr << "\red You don't think kickstands work in space..." + usr << " You don't think kickstands work in space..." return src.visible_message("You put down \the [src]'s kickstand.") if(pulledby) @@ -67,7 +67,7 @@ /obj/vehicle/bike/MouseDrop_T(var/atom/movable/C, mob/user as mob) if(!load(C)) - user << "\red You were unable to load [C] on [src]." + user << " You were unable to load \the [C] onto \the [src]." return /obj/vehicle/bike/attack_hand(var/mob/user as mob) @@ -75,6 +75,9 @@ unload(load) user << "You unbuckle yourself from \the [src]" + +/obj/vehicle/bike/attackby(var/obj/item/weapon/W, var/mob/M) + //we want people to be able to place other people on the bikes. For now. /obj/vehicle/bike/relaymove(mob/user, direction) if(user != load || !on) return @@ -89,18 +92,13 @@ move_delay = 1 else move_delay = 10 - var ret = ..() - //overlay.dir = dir - //update_icon() - return ret + return ..() /obj/vehicle/bike/turn_on() ion.start() anchored = 1 - overlays.Cut() - overlays += image('icons/obj/bike.dmi', "bike_front_on", MOB_LAYER + 1) - icon_state = "bike_back_on" + update_icon() if(pulledby) pulledby.stop_pulling() @@ -109,14 +107,30 @@ ion.stop() anchored = kickstand - overlays.Cut() - overlays += image('icons/obj/bike.dmi', "bike_front_off", MOB_LAYER + 1) + update_icon() - icon_state = "bike_back_off" ..() /obj/vehicle/bike/bullet_act(var/obj/item/projectile/Proj) if(buckled_mob && prob(40)) buckled_mob.bullet_act(Proj) return + ..() + +/obj/vehicle/bike/update_icon() + overlays.Cut() + + if(on) + overlays += image('icons/obj/bike.dmi', "bike_front_on", MOB_LAYER + 1) + icon_state = "bike_back_on" + else + overlays += image('icons/obj/bike.dmi', "bike_front_off", MOB_LAYER + 1) + icon_state = "bike_back_off" + + ..() + + +/obj/vehicle/bike/Destroy() + qdel(ion) + ..() \ No newline at end of file From 4140a1d5ee6adce5fb9eeba9b2f14db9acd1a6df Mon Sep 17 00:00:00 2001 From: Kearel Date: Sun, 16 Aug 2015 23:42:16 -0500 Subject: [PATCH 3/3] Icon update, variables added Bikes are now based off variables, for easy child-making and for admins to change values. --- code/modules/vehicles/bike.dm | 34 ++++++++++++++++++++-------------- icons/obj/bike.dmi | Bin 829 -> 1473 bytes 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm index 8bb8dd688c..8136b06353 100644 --- a/code/modules/vehicles/bike.dm +++ b/code/modules/vehicles/bike.dm @@ -2,17 +2,21 @@ name = "space-bike" desc = "Space wheelies! Woo! " icon = 'icons/obj/bike.dmi' - icon_state = "bike_back_off" + icon_state = "bike_off" dir = SOUTH load_item_visible = 1 - mob_offset_y = 7 - + mob_offset_y = 5 health = 100 maxhealth = 100 fire_dam_coeff = 0.6 brute_dam_coeff = 0.5 + var/protection_percent = 60 + + var/land_speed = 10 //if 0 it can't go on turf + var/space_speed = 1 + var/bike_icon = "bike" var/datum/effect/effect/system/ion_trail_follow/ion var/kickstand = 1 @@ -22,7 +26,8 @@ ion = new /datum/effect/effect/system/ion_trail_follow() ion.set_up(src) turn_off() - overlays += image('icons/obj/bike.dmi', "bike_front_off", MOB_LAYER + 1) + overlays += image('icons/obj/bike.dmi', "[icon_state]_off_overlay", MOB_LAYER + 1) + icon_state = "[bike_icon]_off" /obj/vehicle/bike/verb/toggle() set name = "Toggle Engine" @@ -75,9 +80,6 @@ unload(load) user << "You unbuckle yourself from \the [src]" - -/obj/vehicle/bike/attackby(var/obj/item/weapon/W, var/mob/M) - //we want people to be able to place other people on the bikes. For now. /obj/vehicle/bike/relaymove(mob/user, direction) if(user != load || !on) return @@ -89,9 +91,13 @@ //these things like space, not turf. Dragging shouldn't weigh you down. if(istype(destination,/turf/space) || pulledby) - move_delay = 1 + if(!space_speed) + return 0 + move_delay = space_speed else - move_delay = 10 + if(!land_speed) + return 0 + move_delay = land_speed return ..() /obj/vehicle/bike/turn_on() @@ -112,7 +118,7 @@ ..() /obj/vehicle/bike/bullet_act(var/obj/item/projectile/Proj) - if(buckled_mob && prob(40)) + if(buckled_mob && prob(protection_percent)) buckled_mob.bullet_act(Proj) return ..() @@ -121,11 +127,11 @@ overlays.Cut() if(on) - overlays += image('icons/obj/bike.dmi', "bike_front_on", MOB_LAYER + 1) - icon_state = "bike_back_on" + overlays += image('icons/obj/bike.dmi', "[bike_icon]_on_overlay", MOB_LAYER + 1) + icon_state = "[bike_icon]_on" else - overlays += image('icons/obj/bike.dmi', "bike_front_off", MOB_LAYER + 1) - icon_state = "bike_back_off" + overlays += image('icons/obj/bike.dmi', "[bike_icon]_off_overlay", MOB_LAYER + 1) + icon_state = "[bike_icon]_off" ..() diff --git a/icons/obj/bike.dmi b/icons/obj/bike.dmi index 8b911b044c664a3a1a233d45040bcee845207109..69aa0ccb4efc21f0048c11314bc7c7f306abff63 100644 GIT binary patch delta 1392 zcmV-$1&{i@2EhxE7=H)@0002=;F0+N003-IOjJepiuV#UMkXdEGcz-Db8~QTa2Z2c zD|MSCXp12sAtxs%fPjF&zdfTgG#VNjAzOJmB^E#^7*jPL8%$+JEE*zQdgf_nF@><^ z=Bvb6SF^L0wKFh1Jv~fJOifKqUteDU003-kY*kfNE-o&ik`t!t00001bW%=J06^y0 zW&i*HeUVvCe?L!&i!&v&s2HS;i!-e#F*g;&HpEaDpAWPkC$W-9^=WBDDUfciwAMagIqlk%Z z^)ffZJDGg2z&_zi-PtG_DrStu(ft&20Py<};Qw>Zf3J-}vfJ&F&HOVixJ)J9*~FGT zDDs~?{(4M^Ks{tz_-{wRA;?Hi3VxGFDHYKd^<+xd2GBW4Plw>?DT=sKLXq&!ZPB^{ zK)xsCzBvE@6Iye|wHA!8?c4yw05}{D0Ej&R9Cn=oAl0yMK@k7W_XPloeg50C4-9}H z-4Q^fe^Sa+Yz3fu0PQ;on2@Piq^T6XHL?ysaVX{hc$`uNnA3QZMF;?4H3vW=RL}^G z0np-GKpYLn0A`A5lDz;?oEL@Gx+wCIS(H+G5X7K+;katuOIdcs4|J$uo2NKuQf%~y z4qx}Q#V)07ps`Pf#n0%dsxAbkFN39&Em5j0eB&T!4Od6EJ;dre6$^{M-XuY3f6MayVijN33SHSUPC^aIf4+U!#I za*YC9$FUIeqA$x!&UylTVZ6+HW07M4(q(__hkDWVsn%rj1Lzchse8FbeO_V^WL_Lv z4|@WTEdf3x0qk48Ly@C$SyHm8P zrU`dfW1(lhK^vOkwXsmWK@m+Iv zRx|$MuDJq$zrSnf!v&xbwu8~@OqDGFwK)%MREQ>D1&F#KWWHjj?A$a%fX4CVZxwm_ z|DJ|Dt=DT%P*6}%P|)VO+_2oqe}5Mrn6IL>-o*8y_yGB*_`s6B{2IguCZ+}P0rGF+ z12+gve8B5{KES*vJ`nYf=hyvTi6CE%F5ip~ECl$0`uKp~JQE*S6QGL^`2Ekt2i8*` zAD9F1#|PE~XrGQ}&EELHngDHlV9xA~53CAsV+6d9=W7CV@qxPmbn$^Xf3r6}ur7do zJfAar;{*Q=U@kteCP8?T4+{AMA%Eaj{=gsHvi%A910jDP56djQk_g8YFc0JiR;{DBF;&HMoi z5b_5?{y@kd2>Amce_)A1QvN_tP*6}%(0{6sKky&q519DC4T3H62inK;>;AXQA6NqL y1KrLa@Wlt#1PJ*9A%7s`4}|=IkUtP~5B&wH>V~_RUQ5&f0000OegCB-MnazqP>k$}$t zO_6`cr=Px`5Kc~|AP@sM>*Fw>UoXXCFzsb9P3BdDWNv40o?ykmOR!cUffY1Q*z*QN z$qedqLxga_w>=dOZ46ckCV0uVhq&-AYen(iZm}Rl47mZ4>IQ7L)7n(sz+Wvu;g5RN z0j<(Bz2OFiz{cRaN^cc2SQ5d76#*#Vhp>Mn04sx`0;P7F{>Bh!3j;v}?B4QcMDTfL zV?YGlAT|V622}!~4Z-?&0wIXN?s1d~D%&15A0{U!r&o~62g2n8@e=vq>%+tA=7XP< z55~-3Ndza(2ZrFZ`M?mIHXjgy%Lh(QPDcF$NB_LA=kwLm;F)~Tg@79zL2%IEH*0^J z2K0g@U__n|%sW>imT&GgYn!5PL}IFgr{k89@uWylzPg(POkPTb5MmaTXHG&i!31bH zop&Jk06@#XXb7_6+X0gZ^bJ`6{K`lEn#OM-kZ~MGco)OPd5$1WFTTQnCJLs_x@`6x z!c6PU$Gd3q_$kW`OfR^)Hsi%1JWhY9iQ5QhPkNt$CbELSH#=|36JDe>?M%bBKjk@~ z9t~`?4!V4SB}_6ZU(?^yNzA~fA^Pj`#Cj3@uamI5jO9Ql0zp?RU$?uF&MFg5PEPMx zE+4cIaDyWV-a|gv@_aCUQ~6+YC?DMCH7}bFM%(s$FureDR3Ye_4@TSee9#+-z~zHC ZpnppEp)`-_p|b!0002ovPDHLkV1nxBOb!45